Módulo radio frecuencia FSK y Arduino

modulo RF radio frecuencia FSK arduino guatemala electronica electronico control inalambrico

El objetivo de este circuito básico es la posibilidad de enviar una palabra cada cierto tiempo entre un transmisor y un receptor de radio frecuencia FSK y la plataforma Arduino.

 

Materiales:

  • 2 Arduino UNO, MEGA, LEONARDO, NANO, MINI, etc
  • Modulo radiofrecuencia FSK; Transmisor y Receptor
  • 2 Resistencias 220 ohms
  • 2 LED 5mm cualquier color
  • Opcional: 4 baterías AA o batería de 9V en caso de necesitar una fuente de voltaje externa
  • Protoboard, cables de conexión

 

Existen módulos RF de bajo costo que requieren de un formato especial, con patrones de sincronización, un balance igual de bits 0 y 1 además de comprobación de errores. Por esa razón se utiliza la librería VirtualWire que ofrece todas esas características, lo que permite obtener un mejor rendimiento de los módulos de radiofrecuencia.

 

Tomar en cuenta que es compatible con los Módulos de radiofrecuencia ASK y FSK.

 

Librería VirtualWire

 

Antes de iniciar recordar descargar e instalar la librería:

 

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

 

Escrita y realizada por Mike McCauley, en el link anterior encontrara una explicación más detallada de esta librería además de un manual. Aquí se presenta solamente un circuito básico de inicio.

TRANSMISOR

 

En este ejemplo se utilizo un Arduino LEONARDO Pro Micro, pero el código es compatible con otro tipo de Arduino; UNO, MEGA, etc.

 

  • Pin 6 Arduino conectado a pin DATA del transmisor
  • Pin 7 Arduino conectado a un LED para visualizar el envio de datos
transmisor receptor inalambrica datos informacion modulo RF radio frecuencia FSK guatemala electronica electronico

CODIGO PROGRAMACIÓN TRANSMISOR

#include <VirtualWire.h>

 

const int led_pin = 7; //Pin para LED visualiza el envio datos

const int transmit_pin = 6; //Pin para enviar datos

const int receive_pin = 2; // No se utiliza en este tipo de modulo

const int transmit_en_pin = 3; // No se utiliza ene este tipo de modulo

 

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 OTRO TIPO DE MODULO

    vw_setup(2000);       // Bits per sec

    pinMode(led_pin, OUTPUT);

}

 

byte count = 1;

 

void loop()

{

  char msg[7] = {'h','e','l','l','o',' ','#'};

   //envia palabra HELLO, seguido de un numero

  msg[6] = count;

  digitalWrite(led_pin, HIGH); // LED parpadea mostrando la transmisión

  vw_send((uint8_t *)msg, 7);

  vw_wait_tx(); // Espera hasta que el mensaje ha sido enviado

  digitalWrite(led_pin, LOW);

  delay(1000);

  count = count + 1;

 

}

RECEPTOR

En este ejemplo se utilizo un Arduino LEONARDO Pro Micro, pero el código es compatible con otro tipo de Arduino; UNO, MEGA, etc.

  • Pin 6 Arduino conectado a pin DATA del Receptor
  • Pin 7 Arduino conectado a un LED para visualizar la recepción de datos
transmisor receptor inalambrica datos informacion modulo RF radio frecuencia FSK guatemala electronica electronico

CODIGO PROGRAMACIÓN RECEPTOR

#include <VirtualWire.h>

 

const int led_pin = 7; //LED indicador recepción datos

const int transmit_pin = 2; // no se utiliza en este modulo

const int receive_pin = 6; //Pin receptor datos

const int transmit_en_pin = 9; //Pin que habilita receptor FSK

 

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); //

    vw_setup(2000); // Bits per sec

 

    vw_rx_start();       // Start the receiver PLL running

 

    pinMode(led_pin, OUTPUT);

}

 

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); // LED parpadea si se recibe el mensaje

       // Message with a good checksum received, dump it.

       Serial.print("Got: ");

      

       for (i = 0; i < buflen; i++)

       {

           Serial.print(buf[i], HEX);

           Serial.print(' ');

       }

       Serial.println();

        digitalWrite(led_pin, LOW);

    }

 

}

Una vez el transmisor inicie el envio de datos, en el receptor recibirá lo siguiente:

Nota: para que aparezca los datos, el circuito receptor debe estar conectado a la PC, luego en el programa de arduino; clic en Herramientas > Monitor Serial

 

El mensaje es mostrado en hexadecimal, carácter por carácter, seguido del numero de veces, que indica que se ha recibido el mensaje iniciando en 1 en adelante.

 

Información investigada, recopilada y comprobada por

.ABC PROYECTOS ELECTRONICOS.

 

ENLACES:

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

 

http://openenergymonitor.org/emon/buildingblocks/simple-rf-link

DESCARGA TUTORIAL

TUTORIAL CON ARDUINO
ModuloRFfsk.pdf
Documento Adobe Acrobat 389.8 KB
Hoja de datos Transmisor
TransmisorFSK1.pdf
Documento Adobe Acrobat 179.6 KB
Hoja de datos Receptor
receptorFSK1.pdf
Documento Adobe Acrobat 252.9 KB
LIBRERIA
VirtualWire.zip
Archivo comprimido formato ZIP 19.6 KB
CODIGO PROGRAMACIÓN ARDUINO
RFfskbasico.rar
Archivo comprimido 1.8 KB

Escribir comentario

Comentarios: 0