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"







