Comunicación Inalámbrica con LoRa E220 usando Arduino Nano
Transmisión y recepción de mensajes seriales mediante módulos LoRa en modo transparente
.jpg)
Presentación.
Este proyecto implementa una red simple de comunicación entre dos dispositivos mediante módulos LoRa E220-900T22S, conocidos por su bajo consumo y largo alcance. Los módulos se comunican en modo transparente, lo que significa que cualquier dato recibido por el puerto serial es transmitido automáticamente por radio sin necesidad de protocolos adicionales.
Cada Arduino Nano lee mensajes desde el Monitor Serial (Arduino IDE) y los transmite por LoRa, agregando un prefijo identificador ("Gabriel: "). El dispositivo receptor muestra los mensajes en su Monitor Serial, facilitando así una comunicación básica entre usuarios.
Funcionamiento.
Para este proyecto, desarrollé un sistema de comunicación inalámbrica utilizando un módulo LoRa E220 conectado a un Arduino Nano, con el objetivo de enviar y recibir mensajes de texto entre dos dispositivos sin necesidad de internet ni redes WiFi.
El funcionamiento general se basa en un intercambio de mensajes a través de los puertos seriales. Utilicé la librería SoftwareSerial
para establecer una comunicación entre el Arduino y el módulo LoRa a través de los pines digitales 2 (RX) y 3 (TX). Al mismo tiempo, la comunicación con el Monitor Serial de la computadora se realiza por el puerto USB habitual, permitiéndome ver y escribir mensajes desde la PC.
Cuando ejecuto el programa, el Arduino queda a la espera de que yo escriba un mensaje en el Monitor Serial. Al ingresar un texto y presionar Enter, el Arduino toma ese mensaje, le agrega un prefijo con mi nombre (por ejemplo: "Gabriel: Hola a todos"), y lo transmite automáticamente por el módulo LoRa.
En el otro extremo, otro Arduino con un módulo LoRa conectado recibe el mensaje y lo muestra en su propio Monitor Serial con el texto que envié, permitiendo una comunicación simple pero efectiva.
Además, el código también detecta si se recibe algún mensaje nuevo a través del LoRa. En ese caso, el Arduino lo captura y lo imprime directamente en el Monitor Serial, mostrándome de inmediato lo que la otra persona haya escrito.
Gracias a este sistema, puedo enviar mensajes inalámbricos de texto entre dos Arduinos de forma directa, sin usar redes o protocolos complejos. Es una solución útil para entornos rurales, zonas sin cobertura, o como base para proyectos de comunicación entre dispositivos IoT.
El resultado de la comunicacion se veria de la siguiente forma:
Realización.
1. Para comezar es necesario configurar el lora, por lo que basados en el siguiente diagrama de conexion entre el Lora E220 y Serial Convertidor TLL fue la manera en que logramos que el software de configuracion reconozca el Lora y poder manipular sus parametros.
Resultado de la conexion fisica:
2. Tras hacer la correcta conexion entre el modulo Lora y el TLL procedemos a hacer la configuración en el software del fabricante EBYTE
3. Una vez configurado el canal del Lora e220 realizamos la conexion del Lora con el arduino nano basado en el siguiente esquema de conexión con unos ligeros cambios los cuales son, la conexion de M1 y M0 iran conectados a GND para que el lora este en modo de transmición y el RXD y TXD estaran en D2 y D3 respectivamente para el envio de datos y programacion con el arduino nano:
La conexion fisica final nos queda de la siguiente manera:
4. Por ultimo, antes de empezar a programar en Arduino IDE, instalamos la Libreria de EBYTE en Arduino IDE, posterior a ello estamos listos para pasar a la programación:
Programación.
#include <SoftwareSerial.h>
// SoftwareSerial(RX, TX)
SoftwareSerial lora(2, 3); // Lora RX -> D2, TX -> D3
void setup() {
Serial.begin(9600); // Comunicación con PC (monitor serial)
lora.begin(9600); // Comunicación con LoRa
Serial.println("Arduino Nano listo. Escribe un mensaje.");
}
void loop() {
// Leer mensaje desde la PC
if (Serial.available()) {
String mensaje = Serial.readStringUntil('
');
String completo = "Gabriel: " + mensaje;
lora.println(completo); // Enviar por LoRa
Serial.println("Enviado por LoRa: " + completo);
}
// Leer mensaje recibido por LoRa
if (lora.available()) {
String recibido = lora.readStringUntil('
');
Serial.println("Recibido por LoRa: " + recibido);
}
}
En la función setup()
, inicialicé dos canales de comunicación serial:
-
Serial.begin(9600)
para comunicarme con la PC a través del Monitor Serial. -
lora.begin(9600)
para comunicarme con el módulo LoRa mediante la bibliotecaSoftwareSerial
, usando los pines digitales D2 (RX) y D3 (TX).
En el loop()
, el programa cumple dos funciones principales:
-
Envía mensajes por LoRa:
Si escribo un mensaje en el Monitor Serial de Arduino (en la PC), el Arduino lo captura conSerial.readStringUntil(' ')
, le agrega un prefijo con mi nombre ("Gabriel: "), y lo envía al otro módulo LoRa mediantelora.println()
. También muestra por pantalla un mensaje de confirmación:"Gabriel: <mensaje>"
. -
Recibe mensajes por LoRa:
Si llega un mensaje desde otro módulo LoRa, el Arduino lo lee conlora.readStringUntil(' ')
y lo muestra en la pantalla del Monitor Serial como"(Nombre del emisor): <mensaje>"
.
Utilización.
1. Como primer paso, conectamos el arduino al puerto USB de la laptop para que este sea reconocido en el software de Arduino IDE y poder seleccionar el puerto COM5, para posteriormente poder empezar a transmitir mensajes a otros dispositivos Lora.
2. Apartir de tener conectado el arduino al puerto y ser reconocido para el software, nos aparecera un mensaje el cual dira: "Arduino nano listo. Escribe un mensaje". Este nos indica que todo ha sido reconocido de manera correcta y podemos escribir nuestros mensajes para transmitirlos mediante el lora.
3. Apartir de este mensaje que ha aparecido en pantalla, podremos comunicarnos con los Lora en un radio de 5km dentro de nuestra red, para esta practica fuimos distribuidos en distintos puntos en la cual la distancia aproximada es la siguiente:
- A al C 97metros
- A a la cancha 149m
- A al S10 210m
- A al S7 228m
El resultado de la comunicacion se veria de la siguiente forma:
Conclusiones.
Jose Cacho:
A través de la realización de este proyecto, logré afianzar mis conocimientos sobre la comunicación serial entre dispositivos, tanto en el ámbito físico como lógico. Trabajar con el módulo LoRa E220 me permitió entender en profundidad cómo establecer enlaces de comunicación punto a punto usando señales digitales, sin necesidad de una red WiFi o infraestructura de red convencional. El uso de la librería SoftwareSerial
me permitió configurar pines específicos del Arduino Nano como puertos de transmisión y recepción, lo cual amplió mis habilidades para gestionar múltiples flujos de datos simultáneamente. Esta experiencia no solo fortaleció mi manejo del entorno Arduino IDE, sino que también me dio herramientas concretas para futuras aplicaciones en sistemas de comunicación autónomos e inalámbricos.
Gabriel Azcorra:
Una de las lecciones más valiosas de este proyecto fue la integración efectiva entre componentes electrónicos y programación. Me enfrenté al reto de conectar físicamente el módulo LoRa E220 al Arduino Nano, respetando la lógica de niveles de voltaje, los pines de control y el modo de funcionamiento del LoRa (modo transparente). Posteriormente, desarrollé un código que permite enviar y recibir mensajes personalizados, simulando un sistema de mensajería sencilla entre dos nodos. Esta experiencia me mostró que incluso con recursos limitados es posible construir soluciones funcionales y eficientes, siempre que exista una correcta planificación y comprensión del comportamiento de cada elemento involucrado.
Gabriel Ceme:
Considero que este proyecto tiene un gran potencial de aplicabilidad en contextos reales donde se requiere comunicación a distancia sin depender de redes móviles o conexiones a internet. El uso de LoRa como medio de transmisión representa una solución ideal para entornos rurales, zonas de emergencia o cualquier escenario donde la cobertura convencional sea limitada o inexistente. Me motiva saber que a partir de este proyecto básico, es posible escalar a sistemas más complejos como redes LoRaWAN, sensores distribuidos o estaciones de monitoreo remoto. Los cuales pueden ser aplicables al desarrollo de mi proyecto Kaaxlab, el cual tenia como uno de los objetivos facilitar la conexión de base de datos con el software y gracias a esta practica han surgido ideas para la complementacion de ambos proyectos los cuales pueden ser bastante escalables con esta tecnologiA, espero poder desarrolarlo en el futuro o el proximo semestre y de no ser asi, al menos indagar mas en el tema para un posible desarrollo de proyecto personal.
Referencias.
E32-433T20D_UserManual_EN_V1.0.pdf. (s. f.). Google Docs. https://drive.google.com/file/d/1z5S8Y8TroogUqAfZBrVpRm959TfyKska/view
Ebyte. (s. f.). EBYTE-LoRa/WiFi/BLE/ZigBee wireless modules Manufacturers, industrial IoT terminals suppliers. EBYTE. https://www.cdebyte.com/
OnosTECH. (2021, 15 de abril). Cómo construir una red LoRa con ES8266 || Nube de IoT RemoteXY YouTube. https://www.youtube.com/watch?v=6aDd_phtPCk
OnosTECH. (2021, 13 de mayo). Descripción general y configuración del módulo EBYTE LoRa. https://www.youtube.com/watch?v=6aDd_phtPCk
clickelectronica. (2021, 30 de noviembre). LoRa EBYTE E220-900T22D con ESP32 y ESP8266. Instalación, Configuración y Ejemplo. https://www.youtube.com/watch?v=Pu0-391iKC8&t=609s