La frecuencia de radio de 433MHz (RF 433MHz) se utiliza ampliamente en el campo de las transmisiones de radio, ya sea para el control remoto o la transmisión de datos. Se puede encontrar en los mandos a distancia o en la domótica.
Material
- Ordenador
- Arduino UNO
- Cable USB A Macho
- Interruptor de láminas (ILS)
Cómo funciona
El módulo RF de 433 MHz se utiliza para transmitir información de forma inalámbrica a través de ondas de radio. El transmisor se utiliza para modular los datos externos en serie a alta frecuencia y transmitirlos por enlace de radio al módulo receptor. El módulo está compuesto por un transmisor de radio APF03 y un receptor APRXB12. Utiliza la modulación ASK (Amplitude Shift Keying) en una frecuencia de 433 MHz.
Los módulos de radio RF433MHz tienen un alcance de pocos metros (<5m). Este alcance puede aumentar considerablemente con una fuente de tensión más alta y una antena de tamaño adecuado. En teoría, hasta 100 m sin obstáculos.
Existen diferentes módulos de comunicación inalámbrica que utilizan distintos protocolos (Wifi, LoRa, etc.) o con mayores prestaciones (HC-12, nRF24l01, nRF905, etc.) Compruebe las especificaciones técnicas y las prestaciones del módulo utilizado.
Esquema
En la librería VirtualWire que vamos a utilizar, los pines por defecto utilizados son el pin 12 para el pin de datos del transmisor y el pin 11 para el pin de datos del receptor.
La asignación de pines puede ser diferente dependiendo del código y de la biblioteca utilizada.
Código del emisor
Para empezar hay que descargar la librería VirtualWire en zip, luego en Arduino, ir a sketch, incluir una librería, añadir la librería .zip y poner la carpeta .zip correspondiente. Una vez instalado, hay que reiniciar Arduino. Una vez que las placas están conectadas a su PC, elija un puerto diferente para cada placa.
#include <VirtualWire.h> #define TxPin 12 void setup() { pinMode(13, OUTPUT); pinMode(12, INPUT); Serial.begin(9600); // Debugging only Serial.println("Setup Transmitter"); // Initialise the IO and ISR vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec } void loop() { const char *msg = "Bonsoir tous le monde"; digitalWrite(13, true); // Flash a light to show transmitting vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Wait until the whole message is gone digitalWrite(13, false); delay(200); }
Código del receptor
#include <VirtualWire.h> #define RxPin 11 void setup() { pinMode(13, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); // Debugging only Serial.println("Setup Receiver"); 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(13, true); // Flash a light to show received good message // Message with a good checksum received, dump it. Serial.print("From transmitter : "); for (i = 0; i < buflen; i++) { //Serial.print(buf[i], HEX); →sert a afficher les valeurs en héxa Serial.print(char(buf[i])); //Serial.print(" "); } Serial.println(""); digitalWrite(13, false); } }
Es posible cambiar los pines utilizados utilizando las funciones vw_set_rx_pin y vw_set_tx_pin:
//Pour l’émetteur il faut taper vw_set_tx_pin(txPin); //Pour le récepteur il faut taper vw_set_rx_pin(rxPin);
Resultados
Una vez que los códigos se han cargado en cada uno de los microcontroladores, debería ver el mensaje que aparece en el monitor de serie del receptor.
Aplicaciones
- Transmisión de datos a distancia
- Control remoto del sistema