Modulos RF 433 con arduino

http://www.pjrc.com/teensy/td_libs_VirtualWire.html

Compra en ebay:
10Pcs 433Mhz RF transmitter and receiver link kit for Arduino/ARM/MCU WL

(Ver especificaciones técnicas al final de este post)

MAC ADDRESS: Ver este link para generarla aleatoriamente:
https://nicegear.co.nz/blog/autogenerated-random-persistent-mac-address-for-arduino-ethernet/

Atencion!!! para mejorar NOTORIAMENTE la señal, agregar una antena en el emisor, un cable multihilo de 20cm de largo.
Para que virtualwire funcione en la version 1.0.1 de Arduiono IDE:

en VirtualWire.h

sustituir:

#include <stdlib.h>
#include <wiring.h>

por esto:

#include <stdlib.h>
#if ARDUINO >= 100
  #include <Arduino.h>
#else
  #include <wiring.h>
#endif

-----------------------------------------------------

En virtualwire.cpp

reemplazar

#include "WProgram.h"
por
#include "Arduino.h"

----------------------------------------------------

Ejemplo de emisor y receptor que funcionan:

Modelo de RF utilizado:

10Pcs 433Mhz RF transmitter and receiver link kit for Arduino/ARM/MCU WL


Cableado:

Se precisan 2 arduinos, uno para el emisor y otro para el receptor.

Emisor (el que tiene tres pines)
      GND -> tierra de arduino
      VCC -> 3V3 de arduino (o 5v)    [Investigar porque a mayor voltaje mayor es la intensidad, hasta 12v]
      ATAD -> digital pin 12 de arduino

Receptor (el que tiene 4 pines)
     GND -> tierra de arduino
     VCC -> 5v de arduino
     Datos (pin que esta al lado de GND) -> digital pin 11 de arduino

Sketch:

(Para probarlo, abrir la consola del arduino receptor)

//---------- TRANSMISOR ------------


#include <VirtualWire.h>

const int led_pin = 11;
const int transmit_pin = 12;
const int receive_pin = 2;
const int transmit_en_pin = 3;

void setup()
{
  // Initialise the IO and ISR
  vw_set_tx_pin(transmit_pin);
  vw_set_rx_pin(receive_pin);
  vw_set_ptt_pin(transmit_en_pin);
  vw_set_ptt_inverted(true); // Required for DR3100
  vw_setup(2000); // Bits per sec
}

byte count = 1;

void loop()
{
  //char msg[7] = {'h','e','l','l','o',' ','#'};
  char msg[7] = {'h','e','l','l','o'};

  msg[6] = count;
  digitalWrite(led_pin, HIGH); // Flash a light to show transmitting
  vw_send((uint8_t *)msg, 7);
  vw_wait_tx(); // Wait until the whole message is gone
  digitalWrite(led_pin, LOW);
  delay(1000);
  count = count + 1;
}




-----------------------------------------------------------------------------------------------

//---------- RECEPTOR ------------
//---------- para tener un feedback visual, poner un led en el pin 2 con una resistencia de 10k
//---------- cada vez que se recibe la palabra "hello", se enciende y apaga el led.


//------- RECEPTOR ---------

#include <VirtualWire.h>

const int led_pin = 6;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;

String str = "";
 
void setup()
{  
    delay(1000);
    Serial.begin(9600); // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_tx_pin(transmit_pin);
    vw_set_rx_pin(receive_pin);
    vw_set_ptt_pin(transmit_en_pin);
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000); // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
int i;

        digitalWrite(led_pin, HIGH); // Flash a light to show received good message
// Message with a good checksum received, print it.
Serial.print("Got: ");

        str = "";
for (i = 0; i < buflen; i++)
{
   Serial.print(buf[i], HEX);
            str += char(buf[i]);
            Serial.print(" ");
}

        Serial.println("");
        Serial.println("Texto recibido: " + str);


        Serial.println("Texto recibido: " + str);

        if (str.indexOf("hello") >= 0)
        {
            digitalWrite(2, HIGH);
            delay(1000);
            digitalWrite(2, LOW);
            delay(1000);
        }


        digitalWrite(led_pin, LOW);
    }
}


-----------------------------------------------------------------------------------------

Especificaciones técnicas


TX Technical Specifications:
A. Working voltage: 3V~12V
B. Working current: max≤40mA (12V), min≤9mA(3V)
C. Resonance mode: sound wave resonance (SAW)
D. Modulation mode: ASK /OOK
E. Working frequency: 315MHz-433.92MHz, customized frequency is available.
F. Transmission power: 25mW (315MHz at 12V)
G. Frequency error: +150kHz (max)
H. Velocity: ≤10Kbps
I. Self-owned codes: negative

RX Technical Specifications:
A. Working voltage: 5.0VDC +0.5V
B. Working current:≤5.5mA (5.0VDC)
C. Working principle: single chip superregeneration receiving
D. Working method: OOK/ASK
E. Working frequency: 315MHz-433.92MHz, customized frequency is available.
F. Bandwidth: 2MHz (315MHz, having result from testing at lowing the sensitivity 3dBm)
G. Sensitivity: excel –100dBm (50Ω)
H. Transmitting velocity: <9.6Kbps (at 315MHz and -95dBm)

No hay comentarios:

Publicar un comentario