0% encontró este documento útil (0 votos)
26 vistas

Modulos RF Arduino

Este documento describe el uso de módulos transmisor y receptor de radiofrecuencia de 433,92 MHz con Arduino. Explica las características de los módulos, la librería RC-Switch para su uso, y dos ejemplos de aplicaciones para controlar LEDs de forma remota usando los módulos transmisor y receptor.

Cargado por

alejo9719
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas

Modulos RF Arduino

Este documento describe el uso de módulos transmisor y receptor de radiofrecuencia de 433,92 MHz con Arduino. Explica las características de los módulos, la librería RC-Switch para su uso, y dos ejemplos de aplicaciones para controlar LEDs de forma remota usando los módulos transmisor y receptor.

Cargado por

alejo9719
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

Comunicaciones digitales por

RadioFrecuencia
Módulos transmisor y receptor de
433,92 MHz con Arduino
Módulos transmisor y receptor de
433,92 MHz con Arduino
• 1.- CARACTERÍSTICAS.
• 2.- LIBRERÍA RC SWITCH.
• 3.- EJEMPLO DE APLICACIÓN.
– 3.1.- Programa del módulo transmisor.
– 3.2.- Programa del módulo receptor.

Arduino Módulos 433 MHz 2


1.- CARACTERÍSTICAS.
• Los módulos RF de 433 MHz son muy populares y fáciles de
encontrar en internet gracias a su bajo coste y facilidad de uso
en Arduino u otros dispositivos (ESP8266, Raspberry Pi, etc.).
• Si se usan con la antena interna y a 5 V, su alcance es muy
corto (aproximadamente 2 m), en teoría con una antena
externa (que es fácil de encontrar en internet) y alimentados a
12 V, podrían alcanzar 200 m al aire libre.
• Un inconveniente de estos módulos es que utilizan la
modulación ASK en su variante más simple (OOK), esto
quiere decir que sería fácil que cualquiera con un mínimo de
conocimientos técnicos y el hardware adecuado podría
interceptar y decodificar nuestros mensajes.
Arduino Módulos 433 MHz 3
1.- CARACTERÍSTICAS.
Receptor (RX) Transmisor (TX)

Arduino Módulos 433 MHz 4


1.- CARACTERÍSTICAS.
Módulo TX (FS1000A) Módulo RX (XY-MK-5V)
Tensión de Tensión de
3 V – 12 V 5.0 V + 0.5 V
trabajo trabajo
max ≤ 40 mA (12 V),
Corriente Corriente ≤ 5.5mA (5.0 V)
min ≤ 9 mA (3 V)
Modulación ASK / OOK Modulación ASK / OOK
315 MHz – 315 MHz –
Frecuencia Frecuencia
433.92 MHz 433.92 MHz
Velocidad ≤ 10 Kbps Velocidad < 9.6 Kbps
Para máxima
20 – 200 m (según la distancia, poner
Distancia TX Distancia RX
tensión de trabajo) antena de
alambre de 23cm
Arduino Módulos 433 MHz 5
2.- LIBRERÍA RC-SWITCH.
• Para el manejo de estos módulos desde Arduino
existen varias librerías, posiblemente la más popular
es la librería RC-Switch, que es la que usaremos en
los ejemplos.
• Si no la tenemos descargada previamente, desde el
IDE de Arduino, ir a Herramientas  Administrar
Bibliotecas.
• Esta librería ofrece muchas posibilidades de uso,
aunque solo se va a explicar una, se pueden consultar
formas de uso en los ejemplos que, como toda buena
biblioteca, lleva incorporados.

Arduino Módulos 433 MHz 6


2.- LIBRERÍA RC-SWITCH.
• Pasos a seguir para el emisor:
1º) Incluir la librería: #include <RCSwitch.h>
2º) Crear el objeto que la maneja:
RCSwitch mySwitch = RCSwitch();
3º) Definir en la función setup() que va a emitir y en qué pin:
mySwitch.enableTransmit(pin_enviar);
4º) En la función loop() indicarle el dato a transmitir:
mySwitch.send(100, 8); //dato, nº de bits

El dato enviado, en este caso 100, puede ser una variable (de
cualquier tipo), y puede tener diferente nº de bits, los cuales
se deben indicar.

Arduino Módulos 433 MHz 7


2.- LIBRERÍA RC-SWITCH.
• Pasos a seguir para el receptor:
1º) Incluir la librería: #include <RCSwitch.h>
2º) Crear el objeto que la maneja:
RCSwitch mySwitch = RCSwitch();
3º) Comprobar si ha recibido un dato:
if (mySwitch.available())
4º) Dentro del if, leer el dato recibido con:
int dato = mySwitch.getReceivedValue();
Si el dato que esperamos recibir no es un número entero,
como por ejemplo un carácter ASCII (char), cambiar el tipo
de dato.
char dato = mySwitch.getReceivedValue();
Arduino Módulos 433 MHz 8
3.- EJEMPLOS DE APLICACIÓN.
• Ejemplo 1:
• Se pretende realizar un control remoto para encender o apagar
un LED.
• En el módulo emisor, se utilizará un pulsador para enviar un
valor digital para controlar el encendido del LED en el
receptor y otro pulsador para enviar un valor diferente para
controlar el apagado del LED.
• Para ahorrar componentes, en las entradas correspondientes a
los pulsadores se activarán las resistencias internas de pull-up.
• En el módulo receptor, una vez que un dato es recibido, se
comprueba su valor y se enciende o se apaga el LED.

Arduino Módulos 433 MHz 9


3.- EJEMPLOS DE APLICACIÓN.
• Ejemplo 2:
• Se pretende realizar un control remoto para encender o apagar
4 diodos LED.
• En el módulo emisor, se utilizarán 4 pulsadores para enviar un
valor digital para controlar el encendido de cada uno de los
LED conectados en el receptor.
• Se utilizará otro pulsador para enviar un valor diferente para
controlar el apagado de todos los LED conectados al receptor
(al la vez).
• Para ahorrar componentes, en las entradas correspondientes a
los pulsadores se activarán las resistencias internas de pull-up.
• En el módulo receptor, una vez que un dato es recibido, se
comprueba su valor y se enciende el LED correspondiente o se
apagan todos los LED.
Arduino Módulos 433 MHz 10
3.1.- Transmisor del ejemplo 1
//Librería para usar los módulos de RF
#include <RCSwitch.h>
/*Definimos los pines de los pulsadores y de datos
al módulo de RF*/
#define pulsador1 3
#define pulsador2 4
#define pin_enviar 2
/*Creamos un objeto llamado “mySwitch” del tipo
RCSwitch definido por la librería RCSwitch.h*/
RCSwitch mySwitch = RCSwitch();

Arduino Módulos 433 MHz 11


3.1.- Transmisor del ejemplo 1
void setup ()
{ //Activamos los pines como entrada
pinMode(pulsador1,INPUT_PULLUP);
pinMode(pulsador2,INPUT_PULLUP);
//Inicializamos el objeto “mySwitch” como TX
mySwitch.enableTransmit(pin_enviar);
}

Arduino Módulos 433 MHz 12


3.1.- Transmisor del ejemplo 1
void loop()
{
if (digitalRead(pulsador1)==LOW)//si se pulsa…
{
mySwitch.send(100, 8); //dato, nº de bits
delay(100);
}
if (digitalRead(pulsador2)==LOW) //si se pulsa…
{
mySwitch.send(101, 8); //dato, nº de bits
delay(100);
}
}//fin de la función loop

Arduino Módulos 433 MHz 13


3.2.- Receptor del ejemplo 1.
//Librería para usar los módulos de RF
#include <RCSwitch.h>
//Definimos los pines de los leds.
#define led1 3
/*Creamos un objeto llamado “mySwitch” del
tipo RCSwitch definido por la librería
RCSwitch.h*/
RCSwitch mySwitch = RCSwitch();

Arduino Módulos 433 MHz 14


3.2.- Receptor del ejemplo 1.
void setup()
{
//Activamos los pines como salida
pinMode(led1,OUTPUT);
//Inicializamos el objeto “mySwitch” como RX
// Recibirá en la interrupción 0 => pin #2
mySwitch.enableReceive(0);
}

Arduino Módulos 433 MHz 15


3.2.- Receptor del ejemplo 1.
void loop()
{
if (mySwitch.available())//si hay dato…
{// primero lee el dato
int value = mySwitch.getReceivedValue();
switch(value)//compara el dato
{ case 100: digitalWrite(led1,HIGH);
break;
case 101: digitalWrite(led2,LOW);
break;
}//cierra el switch case
}//cierra el if
}//cierra la función loop
Arduino Módulos 433 MHz 16
3.3.- Transmisor del ejemplo 2
//Librería para usar los módulos de RF
#include <RCSwitch.h>
/*Definimos los pines de los pulsadores y de datos
al módulo de RF*/
#define pulsador1 3
#define pulsador2 4
#define pulsador3 5
#define pulsador4 6
#define pulsador5 7
#define pin_enviar 2
/*Creamos un objeto llamado “mySwitch” del tipo
RCSwitch definido por la librería RCSwitch.h*/
RCSwitch mySwitch = RCSwitch();
Arduino Módulos 433 MHz 17
3.3.- Transmisor del ejemplo 2
void setup ()
{ //Activamos los pines como entrada
pinMode(pulsador1,INPUT_PULLUP);
pinMode(pulsador2,INPUT_PULLUP);
pinMode(pulsador3,INPUT_PULLUP);
pinMode(pulsador4,INPUT_PULLUP);
pinMode(pulsador5,INPUT_PULLUP);

//Inicializamos el objeto “mySwitch” como TX


mySwitch.enableTransmit(pin_enviar);
}

Arduino Módulos 433 MHz 18


3.3.- Transmisor del ejemplo 2
void loop()
{
if (digitalRead(pulsador1)==LOW)//si se pulsa…
{
mySwitch.send(100, 8); //dato, nº de bits
delay(100);
}
if (digitalRead(pulsador2)==LOW) //si se pulsa…
{
mySwitch.send(101, 8); //dato, nº de bits
delay(100);
}

Arduino Módulos 433 MHz 19


3.3.- Transmisor del ejemplo 2
if (digitalRead(pulsador3)==LOW)//si se pulsa…
{
mySwitch.send(102, 8); //dato, nº de bits
delay(100);
}
if (digitalRead(pulsador4)==LOW) //si se pulsa…
{
mySwitch.send(103, 8); //dato, nº de bits
delay(100);
}
if (digitalRead(pulsador5)==LOW) //si se pulsa…
{
mySwitch.send(104, 8); //dato, nº de bits
delay(100);
}
}//fin de la función loop

Arduino Módulos 433 MHz 20


3.4.- Receptor del ejemplo 2.
//Librería para usar los módulos de RF
#include <RCSwitch.h>
//Definimos los pines de los leds.
#define led1 3
#define led2 4
#define led3 5
#define led4 6
/*Creamos un objeto llamado “mySwitch” del
tipo RCSwitch definido por la librería
RCSwitch.h*/
RCSwitch mySwitch = RCSwitch();

Arduino Módulos 433 MHz 21


3.4.- Receptor del ejemplo 2.
void setup()
{
//Activamos los pines como salida
pinMode(led1,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led1,OUTPUT);
//Inicializamos el objeto “mySwitch” como RX
// Recibirá en la interrupción 0 => pin #2
mySwitch.enableReceive(0);
}

Arduino Módulos 433 MHz 22


3.4.- Receptor del ejemplo 2.
void loop()
{
if (mySwitch.available())//si hay dato…
{// primero lee el dato
int value = mySwitch.getReceivedValue();
switch(value)//compara el dato
{
case 100: digitalWrite(led1,HIGH);
break;
case 101: digitalWrite(led2,HIGH);
break;
case 102: digitalWrite(led3,HIGH);
break;
case 103: digitalWrite(led4,HIGH);
break;

Arduino Módulos 433 MHz 23


3.4.- Receptor del ejemplo 2.
case 104: //apaga todos los leds
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
break;
}//cierra el switch case
}//cierra el if
}//cierra la función loop

Arduino Módulos 433 MHz 24

También podría gustarte