MODULO DE RADIO FRECUENCIA RF433 - ARDUINO
Vivimos en una época y somos parte de una generación donde la comunicación forma parte de nuestras vidas, utilizamos dispositivos electrónicos que nos permiten comunicarnos al instante con cualquier persona, todo esto nos obliga a la hora de realizar un proyecto electrónico en el que necesitamos establecer una comunicación entre dispositivos, que esta comunicación sea inalambrica, usar un cable seria renegar de las nuevas tecnologías y le quitaría seriedad a nuestro proyecto.
Supongamos que queremos implementar un timbre con arduino, para que colocar un cable desde el timbre hasta la campana que esta en el interior de la casa si podemos establecer la comunicación inalambricamente.
La comunicación la podemos implementar de muchas maneras, pero en este tutorial vamos a hacerlo mediante el módulo de radio frecuencia RF433.
Este modulo viene con dos componentes, uno el emisor y otro el receptor, obviamente no son lo mejor que hay, pero teniendo en cuenta que solo sale dos dolares en eBay vale a pena utilizarlo!
Buscando información sobre el tema, encontré muchos ejemplos que utilizan al emisor para darle la orden al receptor que encienda un led, obviamente lo importante no es encender un led si no establecer la comunicación entre ambos dispositivos.
MATERIALES
La verdad es que no necesitamos muchas cosas, por suerte esta vuelta sale todo barato!
- Dos arduino, uno para el emisor y otro para el receptor
- Modulo de radio frecuencia RF433 Emisor/Receptor
- Un Led y algunas resistencias
- Ganas de programar 🙂
CÓDIGO RECEPTOR
Como se puede ver en el código, utilizamos la libreria VirtualWire.h, en ella se resuelven la mayoría de los problemas que tendríamos si nos mandamos a hacer todo nosotros mismos.
- vw_setup(2000) es la función que da arranque a la comunicación por radio frecuencia, tiene el mismo funcionamiento que la serial.begin, es importante que toda la configuración de pines este definido antes de invocar a esta función.
- vw_rx_start() con esta función damos inicio a que nuestro pin de recepción comience a escuchar lo que se le envía, es muy importante saber que si la función la utilizamos como en este ejemplo arduino reconoce que el pin es el numero once, podemos elegir otro pin, pero para eso tenemos que invocar a la función de la siguiente manera vw_set_rx_pin(9) por ejemplo.
#include <VirtualWire.h> //Creamos un mensaje //La constante VW_MAX_MESSAGE_LEN viene definida en la libreria byte message[VW_MAX_MESSAGE_LEN]; byte messageLength = VW_MAX_MESSAGE_LEN; void setup() { pinMode(13, OUTPUT); //Configuramos el pin 13 Serial.begin(9600);//Iniciamos el Serial Serial.println("Iniciando..."); vw_setup(2000); vw_rx_start(); } void loop() { if (vw_get_message(message, &messageLength)) { if(comparar("Encender") == 0){ digitalWrite(13, HIGH); Serial.write("LED Encendido\n"); } else if(comparar("Apagar") == 0) { digitalWrite(13,LOW); Serial.write("LED Apagado\n"); } } } char comparar(char* cadena) { //Esta funcion compara el string cadena con el mensaje recibido. //Si son iguales, devuelve 1. Si no, devuelve 0. for(int i = 0; i<messageLength; i++) { if(message[i] != cadena[i]) { return 1; } } return 0; }
CÓDIGO EMISOR
En función de lo que el emisor nos envía, con este código vamos a recibir la señal, procesarla y realizar la acción que corresponda, como dije antes, aca se trata solo de prender un Led, pero la acción podría ser cualquier otra cosa, prender el aire acondicionado, cerrar la puerta etc etc.
La idea es entender la comunicación, el resto depende de la imaginación de ustedes 🙂
#include <VirtualWire.h> void setup() { Serial.begin(9600); Serial.write("Sistema encendido\n"); vw_setup(2000); } void loop() { send("Encender"); delay(1000); send("Apagar"); delay(1000); } void send (char *message) { vw_send((uint8_t *)message, strlen(message)); //Envia el mensaje vw_wait_tx(); //Espera hasta que se haya acabado de transmitir todo Serial.println(message); //Muestra el mensaje por Serial }
Si quieres conocer otros artículos parecidos a MODULO DE RADIO FRECUENCIA RF433 - ARDUINO puedes visitar la categoría Arduino.
Deja un comentario
oye estoy tratando de compilar el programa del emisor y me salen estos errores que puedo hacer
sketch_oct21b.ino: In function 'void setup()':
sketch_oct21b:6: error: 'vw_setup' was not declared in this scope
sketch_oct21b.ino: In function 'void send(char*)':
sketch_oct21b:17: error: 'vw_send' was not declared in this scope
sketch_oct21b:18: error: 'vw_wait_tx' was not declared in this scope