LoRa

Enviando textos a través de LoRa

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.

Módulo LoRa SX1278 (Ai-Thinker LoRa-02)

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.

Detección en Windows de las placas ESP32 y ESP8266

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.

Enviando y recibiendo textos con el Monitor Serie de Aurduino IDE

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

Montaje con cables Dupont conectando la ESP32 DEVKITV1 con el SX1278


Conexiones entre el módulo LoRa SX1278 y la ESP32 DEVKITV1

LoRa SX1278ESP32 DEVKITV1
3.3V3.3V
GNDGND
NSSD5
MOSID23
MISOD19
SCKD18
RSTD14
DIO0D2

Montaje con cables Dupont conectando la ESP32 DEVKITV1 con el SX1278

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

Montaje con cables Dupont conectando la NodeMCUv3 con el SX1278


Conexiones entre el módulo LoRa SX1278 y la ESP8266

LoRa SX1278NodeMCUv3 (ESP8266)
3.3V3.3V
GNDGND
NSSD8
MOSID7
MISOD6
SCKD5
RSTD0
DIO0D2

Montaje con cables Dupont conectando la NodeMCUv3 con el SX1278

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"