Comunicación por radiofrecuencia entre dos Arduino

Los módulos nRF24L01 son transceptores, es decir, pueden transmitir y recibir una señal a una frecuencia de radio de 2,4 GHz. Vamos a probar su uso para la comunicación inalámbrica de 2 Arduino Uno. Vamos a ver cómo configurar un enlace de radio entre dos Arduino para transmitir los datos del sensor de temperatura y humedad DHT11. Una placa debe configurarse como receptor de la señal y el otro microcontrolador como transmisor.

Para esta actividad necesitaremos:

  • 2 Arduino Uno / Arduino Nano / Arduino Mega
  • 2 módulo de radio nRF2401+;
  • sensor de temperatura y humedad DHT11;
  • pantalla LCD 1602 i2c;
  • cables de conexion;
  • librerías nRF24L01.h y LiquidCrystal_I2C.h

Comunicación inalámbrica por radio entre 2 Arduino

El módulo utiliza la interfaz SPI, así que conecta el módulo nRF24L01 a puertos específicos del microcontrolador (no olvides que Arduino Mega 2560 tiene SPI en otros puertos). Una placa debe configurarse como receptor de señal y el otro microcontrolador como transmisor. Después de conectar los módulos inalámbricos al microcontrolador, carga los programas adecuados en la placa Arduino con el sensor DHT11 y con la pantalla 1602.

Programme Arduino para transmisor inalámbrico nRF24L01

Programme Arduino para transmisor inalámbrico nRF24L01
Programme Arduino para transmisor inalámbrico nRF24L01
nRF24L01 Arduino Uno Arduino Nano Arduino Mega
MISO 12 12 50
MOSI 11 11 51
SCK 13 13 52
SC 10 10 53

Conecta el sensor DHT11 al primer Arduino y pon el módulo nRF24L01 en modo transmisor. Después de montar el diagrama de cableado, carga el código en la placa.

#include "SPI.h"
#include "nRF24L01.h"
#include "RF24.h"
#include "DHT.h"

const uint64_t pipe = 0xF0F1F2F3F4LL;
RF24 radio(9,10);  // MEGA radio(9,53);
DHT dht(2, DHT11);

void setup() {
  dht.begin();
  Serial.begin(9600);
  radio.begin();
  radio.setChannel(0);
  delay(2);

  radio.setChannel(0);
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_HIGH);

  radio.openWritingPipe(pipe);
  radio.stopListening();
}

void loop() {
  float data[2];
  
  data[0] = dht.readHumidity();
  data[1] = dht.readTemperature();
  radio.write(&data, sizeof(data));

  Serial.print("Humidity: ");
  Serial.println(data[0]);
  Serial.print("Temperat: ");
  Serial.println(data[1]);
  delay(1000);
}

Explicación del código para nRF24L01 Arduino y sensor DHT11:

  1. los datos del sensor de temperatura y humedad DHT11 se envían al puerto serie y por enlace de radio una vez por segundo;
  2. Los pines 9 y 10 para la conexión nRF24L01 se pueden cambiar.

Programme Arduino para receptor inalámbrico nRF24L01

Programme Arduino para receptor inalámbrico nRF24L01
Programme Arduino para receptor inalámbrico nRF24L01
LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Conecta la pantalla LCD a la segunda placa Arduino y pon el módulo en modo receptor. Después de montar el diagrama de cableado, carga el código en el microcontrolador.

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C LCD(0x27, 16, 2);
 
#include "SPI.h"
#include "nRF24L01.h"
#include "RF24.h"

const uint64_t pipe = 0xF0F1F2F3F4LL;
RF24 radio(9,10);  // MEGA radio(9,53);

void setup() {
  LCD.init();
  LCD.backlight();

  Serial.begin(9600);
  radio.begin();
  radio.setChannel(0);
  delay(2);

  radio.setChannel(0);
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_HIGH);

  radio.openReadingPipe(1, pipe);
  radio.startListening();
}

void loop() {
  float data[2];
  
  if (radio.available()) {
    radio.read(&data, sizeof(data));

    Serial.print("Humidity: ");
    Serial.println(data[0]);
    Serial.print("Temperat: ");
    Serial.println(data[1]);

    LCD.setCursor(0, 0);
    LCD.print("Humidity: ");
    LCD.print(data[0]);
    LCD.setCursor(1, 0);
    LCD.print("Temperat: ");
    LCD.print(data[1]);
  }
 
}

Explicación del código para nRF24L01 Arduino y pantalla 1602:

  1. los pines 9 y 10 para la conexión del nRF24L01 se pueden cambiar;
  2. si los datos del receptor no aparecen en el monitor de puertos, compruebe primero que el transmisor está correctamente conectado.

Conclusión. Comunicación entre dos Arduino. El módulo funciona en la interfaz SPI, por lo que necesitas conectar el nRF24L01 a puertos específicos del microcontrolador (recuerda que Arduino Mega 2560 tiene SPI en otros puertos). El alcance del módulo es comparable al del módulo bluetooth de Arduino, pero con el nRF24L01 se puede crear una comunicación multicanal. Por lo tanto, es posible conectar en red hasta 7 dispositivos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *