04/01/2025
La comunicación inalámbrica se ha vuelto esencial en nuestra vida diaria, desde controles remotos hasta comunicación radial de larga distancia. Una forma sencilla y económica de implementarla es mediante módulos RF (Radio Frecuencia). Este artículo profundiza en el uso de módulos RF, específicamente a 433MHz, con Arduino, cubriendo desde los conceptos básicos hasta la programación.
- ¿Qué es RF en Arduino?
- ¿Qué es un módulo RF de 433MHz?
- Componentes necesarios
- Funcionamiento del módulo RF de 433MHz
- ¿Qué es ASK?
- Interfaz entre el módulo RF 433MHz y Arduino
- Código fuente (ejemplo con la librería VirtualWire)
- Procedimiento
- Librerías Alternativas para RF
- Consideraciones adicionales
- Conclusión
¿Qué es RF en Arduino?
RF, o Radiofrecuencia, permite a Arduino comunicarse con otros microcontroladores de forma inalámbrica. Esto se logra interconectando un módulo RF con la placa Arduino para enviar y recibir datos. La frecuencia de trabajo de los módulos RF más comunes es de 433MHz.
¿Qué es un módulo RF de 433MHz?
Un módulo RF de 433MHz consiste en un par de dispositivos: un transmisor y un receptor. El transmisor envía señales de radio a 433MHz, y el receptor las recibe. La información se transmite como datos seriales, permitiendo una comunicación inalámbrica entre dos o más dispositivos.
Componentes necesarios
Para interconectar un módulo RF de 433MHz con Arduino, necesitarás:

- Placa Arduino ( Arduino UNO , Nano, Mega, etc.)
- Módulo transmisor RF 433MHz
- Módulo receptor RF 433MHz
- Conectores (cables jumper)
- (Opcional) LED y resistor para indicar la recepción de datos
Funcionamiento del módulo RF de 433MHz
Transmisor
El transmisor opera a 433MHz usando Modulación por Desplazamiento de Amplitud (ASK). Recibe datos seriales de Arduino y los transmite vía RF. Cuando la entrada de datos de Arduino está en ALTO (HIGH), el oscilador genera una onda portadora RF continua a 434MHz. Cuando está en BAJO (LOW), el oscilador se detiene. Esta variación de amplitud es la ASK.
Receptor
El receptor recibe la señal RF, la amplifica utilizando amplificadores operacionales y un circuito PLL (Phase Lock Loop) para mejorar la inmunidad al ruido. La señal decodificada se envía a la salida de datos. La decodificación puede realizarse con el microcontrolador o un decodificador externo.
¿Qué es ASK?
ASK (Amplitude Shift Keying) o Modulación por Desplazamiento de Amplitud cambia la amplitud de la onda portadora (433MHz) según la señal de datos. Para un 1 digital, la portadora se transmite a plena potencia; para un 0 digital, se interrumpe. Es simple de implementar y requiere menos ancho de banda que otras técnicas como FSK (Frequency Shift Keying).
Interfaz entre el módulo RF 433MHz y Arduino
A continuación se describe la conexión del módulo RF de 433 MHz con una placa Arduino UNO, tanto para el transmisor como para el receptor.
Conexión del transmisor:
Conecta los pines del módulo transmisor a la placa Arduino UNO de la siguiente manera:
- VCC del transmisor a 5V de Arduino
- GND del transmisor a GND de Arduino
- DATA del transmisor a un pin GPIO de Arduino (ej: GPIO 12)
Conexión del receptor:
Conecta los pines del módulo receptor a otra placa Arduino UNO de la siguiente manera:
- VCC del receptor a 5V de Arduino
- GND del receptor a GND de Arduino
- DATA del receptor a un pin GPIO de Arduino (ej: GPIO 11)
- (Opcional) LED conectado al pin GPIO 6 de Arduino a través de un resistor de 330Ω
Código fuente (ejemplo con la librería VirtualWire)
Para este ejemplo usaremos la librería VirtualWire. Recuerda instalar esta librería a través del gestor de librerías de Arduino.
Código para el transmisor:
#include#define button 6char data;int val;int value = 0;void setup() { vw_set_tx_pin(12); vw_setup(2000); pinMode(button, INPUT_PULLUP);}void loop() { val = digitalRead(button); if (val == LOW && value == 0) { data = "a"; vw_send((uint8_t )data, strlen(data)); vw_wait_tx(); delay(500); value = 1; } else if (val == LOW && value == 1) { data = "b"; vw_send((uint8_t )data, strlen(data)); vw_wait_tx(); delay(500); value = 0; } delay(200);} Código para el receptor:
#include#define ledPin 6void setup() { vw_set_rx_pin(11); vw_setup(2000); pinMode(ledPin, OUTPUT); vw_rx_start();}void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) { if (buf[0] == 'a') { digitalWrite(ledPin, HIGH); } else if (buf[0] == 'b') { digitalWrite(ledPin, LOW); } }} Procedimiento
Realiza las conexiones según los diagramas. Sube el código correspondiente a cada Arduino (el código del transmisor al Arduino transmisor, y el código del receptor al Arduino receptor). Coloca ambos Arduino a una distancia inferior a 3 metros en un espacio interior. Al presionar el botón en el transmisor, el LED en el receptor debería encenderse o apagarse según el código.
Librerías Alternativas para RF
Existen otras librerías, como la librería RF24 para el módulo nRF24L01. Esta librería ofrece características más avanzadas, pero su configuración puede ser más compleja.

| Librería | Módulo RF | Características |
|---|---|---|
| VirtualWire | 433MHz | Simple, fácil de usar |
| RF24 | nRF24L01 | Más avanzada, mayor rango, opciones de configuración |
La elección de la librería dependerá de tus necesidades y experiencia.
Consideraciones adicionales
- Rango de comunicación: El rango de comunicación de los módulos RF de 433MHz puede variar dependiendo del entorno (obstáculos, interferencias).
- Interferencias: Las señales RF pueden verse afectadas por interferencias de otros dispositivos que operan en la misma frecuencia.
- Antenas: Usar antenas externas puede mejorar el rango de comunicación.
Conclusión
Los módulos RF de 433MHz ofrecen una solución simple y efectiva para la comunicación inalámbrica con Arduino. Con la librería adecuada y una correcta configuración, podrás crear proyectos interesantes que aprovechen la flexibilidad de la comunicación inalámbrica.
Si quieres conocer otros artículos parecidos a Librerías arduino para rf puedes visitar la categoría Libros y Librerías.
