Este montaje permite enviar textos de forma bidireccional entre dos puntos conectados por radio usando módulos LoRa SX1278 (Ai-Thinker LoRa-02).
Los dos módulos LoRa SX1278 están manejados de un lado por una placa NODEMCUv3 (ESP8266) y del otro extremo por una placa ESP32 DEVKITV1.
Las dos placas están conectadas a un PC que ejecuta "Monitor Serie" del Arduino IDE para escribir y recibir los textos. Permite enviar textos de 200 caracteres como máximo.
En esta prueba las dos placas están conectadas el mismo PC con Windows y las dos placas se muestran en el "Administrador de Dispositivos" como COM4: la ESP8266 y como COM5: la ESP32.
Desde el "Monitor Serie" del Arduino IDE se pueden escribir los mensajes a enviar y ver los textos recibidos. Se ejecutan dos instancias del Arduino IDE y su Monitor Serie para controlar cada una de las dos placas.
El programa utilizado está basado en el código que ofrece la página web: https://www.eccircuit.com/2021/08/lora-module-sx1278-ra-02-interfacing.html
Ese código se ha modificado ligeramente para adaptarlo a la placa ESP8266 (NodeMCUv3) ya que no se usan los mismos pin que la ESP32 y también se baja la velocidad a 9600 baudios en el caso de la ESP8266 porque no funcionaba bien con 115200 baudios.
Montaje con la ESP32 conectada al módulo LoRa SX1278
Conexiones entre el módulo LoRa SX1278 y la ESP32 DEVKITV1
LoRa SX1278 | ESP32 DEVKITV1 |
---|---|
3.3V | 3.3V |
GND | GND |
NSS | D5 |
MOSI | D23 |
MISO | D19 |
SCK | D18 |
RST | D14 |
DIO0 | D2 |
Programa utilizado en la ESP32 DEVKITV1
El programa utilizado está basado en el código que ofrece la página web: https://www.eccircuit.com/2021/08/lora-module-sx1278-ra-02-interfacing.html
// Lora Ra-02 Bidirectional Communication With Esp32 #include <LoRa.h> #define SS 5 #define RST 14 #define DIO0 2 String data = ""; bool stringComplete = false; // Whether the string is complete void setup() { Serial.begin(115200); // Serial.begin(9600); while (!Serial); Serial.println("Dispositivo Activo"); LoRa.setPins(SS, RST, DIO0); if (!LoRa.begin(433E6)) { Serial.println("Error LoRa"); delay(100); while (1); } data.reserve(200); // Max Number of character Sended through a Single mssage } /* Created By Eccircuit * Made By Ankit jat * Date 06/08/2021 * Code For Lora Ra-02 bidirectional Communication With Esp8266 * Website -> https://www.eccircuit.com * E-mail -> Eccicuit@gmail.com */ void loop() { serialEvent(); stringComplete = false; int packetSize = LoRa.parsePacket(); if (packetSize) { while (LoRa.available()) { Serial.print("Mensaje Recibido: "); Serial.println(LoRa.readString()); } } } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); data += inChar; if (inChar == '\n') { stringComplete = true; Serial.print("Enviando Mensaje: "); Serial.println(data); LoRa.beginPacket(); LoRa.print(data); LoRa.endPacket(); data=""; delay(2000); } } }
Pulsa aquí para descargar el código "Lora_Article-esp32.ino"
NodeMCUv3 (ESP8266) conectada al módulo LoRa SX1278
Conexiones entre el módulo LoRa SX1278 y la ESP8266
LoRa SX1278 | NodeMCUv3 (ESP8266) |
---|---|
3.3V | 3.3V |
GND | GND |
NSS | D8 |
MOSI | D7 |
MISO | D6 |
SCK | D5 |
RST | D0 |
DIO0 | D2 |
Programa utilizado en la ESP8266 (NodeMCUv3)
El programa utilizado está basado en el código que ofrece la página web: https://www.eccircuit.com/2021/08/lora-module-sx1278-ra-02-interfacing.html
// Lora Ra-02 Bidirectional Communication With Esp8266 #include <LoRa.h> #define SS 15 #define RST 16 #define DIO0 4 String data = ""; bool stringComplete = false; // Whether the string is complete void setup() { //Serial.begin(115200); Serial.begin(9600); while (!Serial); Serial.println("Dispositivo Activo"); LoRa.setPins(SS, RST, DIO0); if (!LoRa.begin(433E6)) { Serial.println("Error LoRa"); delay(100); while (1); } data.reserve(200); // Max Number of character Sended through a Single mssage } /* Created By Eccircuit * Made By Ankit jat * Date 06/08/2021 * Code For Lora Ra-02 bidirectional Communication With Esp8266 * Website -> https://www.eccircuit.com * E-mail -> Eccicuit@gmail.com */ void loop() { serialEvent(); stringComplete = false; int packetSize = LoRa.parsePacket(); if (packetSize) { while (LoRa.available()) { Serial.print("Mensaje Recibido: "); Serial.println(LoRa.readString()); } } } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); data += inChar; if (inChar == '\n') { stringComplete = true; Serial.print("Enviando Mensaje: "); Serial.println(data); LoRa.beginPacket(); LoRa.print(data); LoRa.endPacket(); data=""; delay(2000); } } }
Pulsa aquí para descargar el código "Lora_Article-esp8266.ino"