¿Interesado en explorar nuevas posibilidades de comunicación inalámbrica? En este artículo te guiaremos a través de los primeros pasos para utilizar el ESP32 con LoRa utilizando Arduino IDE. Descubre cómo aprovechar al máximo esta poderosa combinación y adéntrate en el fascinante mundo de la Internet de las cosas (IoT). ¡No te lo pierdas!
En este tutorial exploramos los principios básicos de LoRa y cómo se puede utilizar con ESP32 para proyectos de IoT utilizando Arduino IDE. Para ayudarlo a comenzar, también le mostraremos cómo crear un transmisor LoRa y un receptor LoRa simples utilizando el módulo transceptor RFM95.
Introducción a LoRa
Para obtener una breve introducción a LoRa, puede ver el vídeo a continuación o desplazarse hacia abajo para obtener una explicación escrita.
¿Qué es LoRa?
LoRa es una tecnología de comunicación de datos inalámbrica que utiliza una técnica de modulación de radio que puede generarse mediante chips transceptores Semtech LoRa.
Esta técnica de modulación permite la comunicación de pequeñas cantidades de datos a largas distancias (lo que significa un ancho de banda bajo), una alta inmunidad a las interferencias y al mismo tiempo un consumo mínimo de energía. Por tanto, permite la comunicación a largas distancias con un bajo consumo de energía.
frecuencias LoRa
LoRa utiliza frecuencias sin licencia que están disponibles en todo el mundo. Estas son las frecuencias más utilizadas:
- 868 MHz para Europa
- 915 MHz para América del Norte
- Banda de 433 MHz para Asia
Dado que estas cintas no tienen licencia, cualquiera puede utilizarlas libremente sin tener que pagar ni adquirir una licencia. Comprobar el Las frecuencias utilizadas en tu país..
Aplicaciones LoRa
Gracias a su largo alcance y bajo consumo de energía, LoRa es ideal para sensores alimentados por baterías y aplicaciones de bajo consumo en:
- Internet de las cosas (IoT)
- Casa inteligente
- Comunicación máquina a máquina
- Y mucho más…
Por lo tanto, LoRa es una buena opción para nodos sensores que funcionan con celdas de bobina o energía solar y transmiten pequeñas cantidades de datos.
Tenga en cuenta que LoRa no es adecuado para proyectos que:
- Requiere transmisión de alta velocidad de datos;
- Requerir transferencias muy frecuentes;
- O están en redes densamente pobladas.
Topologías LoRa
Puede utilizar LoRa en las siguientes áreas:
- Comunicación punto a punto
- O construir una red LoRa (por ejemplo con LoRaWAN)
Comunicación punto a punto
En la comunicación punto a punto, dos dispositivos habilitados para LoRa se comunican entre sí mediante señales de RF.
Esto es útil, por ejemplo, para intercambiar datos entre dos placas ESP32 equipadas con chips transceptores LoRa que están relativamente alejadas o en entornos sin cobertura WiFi.
A diferencia de WLAN o Bluetooth, que sólo permiten la comunicación a distancias cortas, dos dispositivos LoRa pueden intercambiar datos a larga distancia con una antena correspondiente.
Puede configurar fácilmente su ESP32 con un chip LoRa para enviar y recibir datos de manera confiable a una distancia de más de 200 metros (puede obtener mejores resultados dependiendo de su entorno y la configuración de LoRa). También existen otras soluciones LoRa que fácilmente tienen un alcance de más de 30 km.
LoRaWAN
También puedes construir una red LoRa con LoRaWAN.
El protocolo LoRaWAN es una especificación de red de área amplia de bajo consumo (LPWAN) derivada de la tecnología LoRa y estandarizada por LoRa Alliance. No exploraremos LoRaWAN en profundidad en este tutorial, pero para obtener más información puede visitar el Alianza LoRa Y La red de cosas Páginas web.
¿Cómo puede ser útil LoRa en sus proyectos de domótica?
Veamos una aplicación práctica.
Imagine que quiere medir la humedad en su campo. Aunque no esté lejos de tu casa, probablemente no haya señal WiFi allí. Entonces puedes construir un nodo sensor con un ESP32 y un sensor de humedad que envía los valores de humedad a otro ESP32 a través de LoRa una o dos veces al día.
El ESP32 más nuevo tiene acceso a WiFi y puede ejecutar un servidor web que muestra los niveles de humedad.
Este es sólo un ejemplo que ilustra cómo puede utilizar la tecnología LoRa en sus proyectos ESP32.
Nota: Le mostraremos cómo crear este proyecto en nuestro curso «Aprenda ESP32 con Arduino IDE». Es el proyecto 4 en la tabla de contenido: Monitoreo de sensores LoRa de largo alcance: informes de valores de sensores desde el exterior: humedad y temperatura del suelo. Consulte la página del curso para obtener más detalles.
ESP32 con LoRa
En esta sección, le mostraremos cómo comenzar con LoRa en su ESP32 usando el IDE de Arduino. Como ejemplo, construimos un transmisor LoRa simple y un receptor LoRa.
El transmisor LoRa envía un mensaje de «Hola» seguido de un contador con fines de prueba. Este mensaje se puede reemplazar fácilmente con datos útiles como lecturas de sensores o notificaciones.
Para completar esta parte necesitará los siguientes componentes:
- 2x placa ESP32 DOIT DEVKIT V1
- 2x módulos transceptores LoRa (RFM95)
- Placa de conexión RFM95 LoRa (opcional)
- Cables de puente
- tablero de circuitos o tablero de tiras
Alternativa:
En lugar de utilizar un ESP32 y un módulo transceptor LoRa independiente, existen placas de desarrollo ESP32 con un chip LoRa y OLED integrado, lo que facilita mucho el cableado. Si tiene una de estas placas, puede hacer lo siguiente: Placa OLED TTGO LoRa32 SX1276: Introducción a Arduino IDE.
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Preparando el IDE de Arduino
Existe un complemento para Arduino IDE que le permite programar el ESP32 usando el Arduino IDE y su lenguaje de programación. Siga uno de los siguientes tutoriales para preparar su IDE de Arduino para que funcione con ESP32 si aún no lo ha hecho.
- ventanas Instrucciones – Placa ESP32 en Arduino IDE
- mac y linux Instrucciones – Placa ESP32 en Arduino IDE
Instalación de la biblioteca LoRa
Existen varias bibliotecas para enviar y recibir paquetes LoRa fácilmente con el ESP32. En este ejemplo utilizamos el Biblioteca Arduino LoRa de Sandeep Mistry.
Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas y busca “lora“. Seleccione e instale la biblioteca LoRa resaltada en la imagen a continuación.
Obtención de módulos transceptores LoRa
Para enviar y recibir mensajes LoRa con el ESP32 utilizamos el Módulo transceptor RFM95. Todos los módulos LoRa son transceptores, lo que significa que pueden enviar y recibir información. Necesitas 2 de ellos.
También puede utilizar otros módulos compatibles, como tarjetas basadas en Semtech SX1276/77/78/79, incluidas: RFM96W, RFM98W, etc.
Alternativamente, hay placas ESP32 con LoRa integrada y pantalla OLED como esta Módulo WLAN ESP32 Helteco la placa TTGO LoRa32.
Antes de comprar su módulo transceptor LoRa, asegúrese de verificar la frecuencia correcta para su ubicación. Puedes conocer más sobre en el siguiente sitio web Las señales y regulaciones de RF varían según el país.. Por ejemplo, en Portugal podemos utilizar una frecuencia entre 863 y 870 MHz o 433 MHz. Para este proyecto utilizamos un RFM95 que funciona a 868 MHz.
Preparación del módulo transceptor RFM95
Si tienes una placa de desarrollo ESP32 con LoRa integrado, puedes omitir este paso.
El transceptor RFM95 no es adecuado para placas de pruebas. Una fila normal de conectores de 2,54 mm no encajará en los pines del transceptor. Las distancias entre las conexiones son más cortas de lo habitual.
Hay algunas opciones que puede utilizar para acceder a los pines del transceptor.
- Puedes soldar algunos cables directamente al transceptor;
- Rompa los cabezales de los pines y suelde cada uno individualmente.
- O puede comprar una placa de conexión que haga que la placa de pines sea compatible.
Soldamos un encabezado al módulo como se muestra en la imagen a continuación.
Esto le permite acceder a los pines del módulo utilizando cables de puente normales, o incluso insertar algunos encabezados para conectarlos directamente a una regleta o placa de pruebas.
antena
El chip transceptor RFM95 requiere una antena externa conectada al pin ANA.
Puede conectar una antena «real» o crear una usted mismo utilizando un cable conductor como se muestra en la imagen a continuación. Algunas placas de conexión vienen con un conector especial para agregar una antena adecuada.
La longitud del cable depende de la frecuencia:
- 868 MHz: 86,3 mm (3,4 pulgadas)
- 915 MHz: 81,9 mm (3,22 pulgadas)
- 433 MHz: 173,1 mm (6,8 pulgadas)
Para nuestro módulo necesitamos un cable de 86,3 mm de largo que se suelda directamente al pin ANA del transceptor. Tenga en cuenta que el uso de una antena adecuada amplía el alcance de la comunicación.
Importante: DEBE conectar una antena al módulo.
Cableado del módulo transceptor LoRa RFM95
El módulo transceptor RFM95 LoRa se comunica con el ESP32 a través del protocolo de comunicación SPI. Entonces usaremos los pines SPI estándar del ESP32. Conecte ambas tarjetas ESP32 a los módulos transceptores correspondientes como se muestra en el siguiente esquema:
Aquí están las conexiones entre el módulo transceptor LoRa RFM95 y el ESP32:
- ANA: Antena
- Dimensiones:
Dimensiones - DIO3: no se puede conectar
- DIO4: no conectar
- 3,3 V:
3,3 V - DIO0:
GPIO2 - DIO1: no conectar
- DIO2: no conectar
- GND: no conectar
- DIO5: no conectar
- RESTABLECEN A LOS PREDETERMINADOS: GPIO 14
- NSS: GPIO5
- SCK: GPIO 18
- MOSI: GPIO23
- MISO: GPIO 19
- GND: no conectar
Nota: El módulo transceptor RFM95 tiene 3 pines GND. No importa cuál uses, pero debes conectar al menos uno.
Por conveniencia, hicimos este circuito en un tablero de tiras. Esto es más fácil de manejar y los cables no se sueltan. También puedes utilizar una placa de pruebas si lo prefieres.
El boceto del transmisor LoRa
Abra su IDE de Arduino y copie el siguiente código. Este boceto se basa en un ejemplo de la biblioteca LoRa. Transmite mensajes usando LoRa cada 10 segundos. Envía un «Hola» seguido de un número que se incrementa en cada mensaje.
/*********
Rui Santos & Sara Santos - Random Nerd Tutorials
Modified from the examples of the Arduino LoRa library
More resources: https://RandomNerdTutorials.com/esp32-lora-rfm95-transceiver-arduino-ide/
*********/
#include <SPI.h>
#include <LoRa.h>
//define the pins used by the transceiver module
#define ss 5
#define rst 14
#define dio0 2
int counter = 0;
void setup() {
//initialize Serial Monitor
Serial.begin(115200);
while (!Serial);
Serial.println("LoRa Sender");
//setup LoRa transceiver module
LoRa.setPins(ss, rst, dio0);
//replace the LoRa.begin(---E-) argument with your location's frequency
//433E6 for Asia
//868E6 for Europe
//915E6 for North America
while (!LoRa.begin(868E6)) {
Serial.println(".");
delay(500);
}
// Change sync word (0xF3) to match the receiver
// The sync word assures you don't get LoRa messages from other LoRa transceivers
// ranges from 0-0xFF
LoRa.setSyncWord(0xF3);
Serial.println("LoRa Initializing OK!");
}
void loop() {
Serial.print("Sending packet: ");
Serial.println(counter);
//Send LoRa packet to receiver
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
delay(10000);
}
Echemos un vistazo rápido al código.
Comienza con la integración de las bibliotecas necesarias.
#include <SPI.h>
#include <LoRa.h>
Luego defina los pines utilizados por su módulo LoRa. Si siguió el esquema anterior, puede utilizar la definición de pin utilizada en el código. Si está utilizando una tarjeta ESP32 con LoRa integrado, verifique los pines utilizados por el módulo LoRa en su tarjeta y realice la asignación de pines correcta.
#define ss 5
#define rst 14
#define dio0 2
Lo inicializas Cambiar Variable a partir de 0;
int counter = 0;
En el configuración()inicializar la comunicación serie.
Serial.begin(115200);
while (!Serial);
Configure los pines para el módulo LoRa.
LoRa.setPins(ss, rst, dio0);
E inicialice el módulo transceptor con una frecuencia específica.
while (!LoRa.begin(868E6)) {
Serial.println(".");
delay(500);
}
Es posible que deba cambiar la frecuencia para que coincida con la frecuencia utilizada en su ubicación. Elige una de las siguientes opciones:
- 433E6
- 868E6
- 915E6
Los módulos transceptores LoRa escuchan paquetes dentro de su alcance. No importa de dónde vengan los paquetes. Para asegurarse de recibir solo paquetes de su remitente, puede configurar una palabra de sincronización (rango de 0 a 0xFF).
LoRa.setSyncWord(0xF3);
Tanto el receptor como el remitente deben utilizar la misma palabra de sincronización. De esta forma, el receptor ignora todos los paquetes LoRa que no contengan esta palabra de sincronización.
Siguiente en Cinta() Envían los paquetes LoRa. Inicializas un paquete con el comenzar paquete() Método.
LoRa.beginPacket();
Escribe datos en el paquete con el prensa() Método. Como puede ver en las dos líneas siguientes, enviamos un mensaje de saludo seguido del contador.
LoRa.print("hello ");
LoRa.print(counter);
Luego selle el paquete con el finalizar el paquete() Método.
LoRa.endPacket();
Luego, el contador de mensajes se incrementa en uno en cada bucle, lo que ocurre cada 10 segundos.
counter++;
delay(10000);
Probando el boceto del transmisor
Sube el código a tu placa ESP32. Asegúrese de haber seleccionado la placa y el puerto COM correctos.
A continuación, abra el monitor serie y presione el botón de activación ESP32. Debería ver un mensaje de éxito como se muestra en la siguiente imagen. El contador debe incrementarse cada 10 segundos.
El boceto del receptor LoRa
Ahora tome otro ESP32 y cargue el siguiente boceto (el boceto del receptor LoRa). Este boceto escucha paquetes LoRa utilizando la palabra de sincronización que usted define e imprime el contenido de los paquetes, así como el RSSI en el monitor serie. El RSSI mide la fuerza relativa de la señal recibida.
/*********
Rui Santos & Sara Santos - Random Nerd Tutorials
Modified from the examples of the Arduino LoRa library
More resources: https://RandomNerdTutorials.com/esp32-lora-rfm95-transceiver-arduino-ide/
*********/
#include <SPI.h>
#include <LoRa.h>
//define the pins used by the transceiver module
#define ss 5
#define rst 14
#define dio0 2
void setup() {
//initialize Serial Monitor
Serial.begin(115200);
while (!Serial);
Serial.println("LoRa Receiver");
//setup LoRa transceiver module
LoRa.setPins(ss, rst, dio0);
//replace the LoRa.begin(---E-) argument with your location's frequency
//433E6 for Asia
//868E6 for Europe
//915E6 for North America
while (!LoRa.begin(868E6)) {
Serial.println(".");
delay(500);
}
// Change sync word (0xF3) to match the receiver
// The sync word assures you don't get LoRa messages from other LoRa transceivers
// ranges from 0-0xFF
LoRa.setSyncWord(0xF3);
Serial.println("LoRa Initializing OK!");
}
void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet '");
// read packet
while (LoRa.available()) {
String LoRaData = LoRa.readString();
Serial.print(LoRaData);
}
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
}
}
Este boceto es muy similar al anterior. Solo esos Cinta() es diferente.
Es posible que tengas que cambiar la frecuencia y la palabra de sincronización para que coincidan con las del boceto del remitente.
En el Cinta() El código comprueba si se ha recibido un nuevo paquete utilizando el analizarpaquete() Método.
int packetSize = LoRa.parsePacket();
Cuando existe un nuevo paquete, leemos su contenido mientras está disponible.
Para leer los datos entrantes, utilice el leerCadena() Método.
while (LoRa.available()) {
String LoRaData = LoRa.readString();
Serial.print(LoRaData);
}
Los datos entrantes se almacenan en el LoRaData Variable e impreso en el monitor serie.
Finalmente, las siguientes dos líneas de código imprimen el RSSI del paquete recibido en dB.
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
Probando el boceto del receptor LoRa
Sube este código a tu ESP32. En este punto deberías tener dos placas ESP32 con bocetos diferentes: el transmisor y el receptor.
Abra el monitor serie para el receptor LoRa y presione el botón «Habilitar transmisor LoRa». Ahora debería recibir los paquetes LoRa en el receptor.
¡Felicidades! Construyeron un transmisor LoRa y un receptor LoRa con el ESP32.
Un paso mas alla
Ahora deberías probar el alcance de comunicación entre el transmisor y el receptor en tu área. El alcance de la comunicación varía mucho según su entorno (si vive en una zona rural o urbana con muchos edificios altos). Para probar el rango de comunicación, puede agregar una pantalla OLED al receptor LoRa y dar un paseo para ver hasta dónde puede comunicarse (este es un tema para un tutorial futuro).
En este ejemplo, solo enviamos un mensaje de bienvenida, pero la idea es reemplazar ese texto con información útil.
Envolver
En resumen, le hemos mostrado los conceptos básicos de la tecnología LoRa en este tutorial:
- LoRa es una tecnología de modulación de radio;
- LoRa permite la comunicación a larga distancia de pequeñas cantidades de datos con bajo consumo de energía.
- Puede utilizar LoRa en comunicación punto a punto o en una red;
- LoRa puede resultar especialmente útil si deseas monitorear sensores que no están cubiertos por tu red WiFi y que están a varios metros de distancia.
También le mostramos cómo construir un transmisor LoRa y un receptor LoRa simples. Estos son sólo ejemplos simples para comenzar con LoRa. Pronto agregaremos más proyectos sobre este tema, ¡así que estad atentos!
Usted también puede estar interesado en:
- [Review] TTGO LoRa32 SX1276 OLED: Pinout, especificaciones, etc.
- [Guide] Placa OLED TTGO LoRa32 SX1276: Primeros pasos con Arduino IDE
Este es un extracto de nuestro curso: Aprendiendo ESP32 con Arduino IDE. Si te gusta ESP32 y quieres aprender más sobre él, te recomendamos apuntarte al curso Aprende ESP32 con Arduino IDE.
Gracias por leer.
ESP32 con LoRa usando Arduino IDE – Primeros pasos
En este tutorial exploraremos los principios básicos de LoRa y cómo se puede utilizar con el ESP32 para proyectos de IoT utilizando el Arduino IDE. Para comenzar, también te mostraremos cómo crear un simple LoRa Sender y LoRa Receiver con el módulo transceptor RFM95.
Introducción a LoRa
LoRa es una tecnología de comunicación de datos inalámbrica que utiliza una técnica de modulación de radio generada por chips transceptores LoRa de Semtech. Esta técnica de modulación permite la comunicación a larga distancia de pequeñas cantidades de datos (lo que significa un ancho de banda bajo), alta inmunidad a interferencias, al tiempo que minimiza el consumo de energía. Por lo tanto, permite la comunicación a larga distancia con bajos requisitos de energía.
¿Qué es LoRa?
Las frecuencias de LoRa utilizadas son:
- 868 MHz para Europa
- 915 MHz para América del Norte
- Banda de 433 MHz para Asia
Estas bandas son de uso no licenciado, por lo que cualquiera puede utilizarlas libremente sin pagar o sin necesidad de obtener una licencia. Verifica las frecuencias utilizadas en tu país.
Aplicaciones de LoRa
LoRa, con sus características de largo alcance y bajo consumo de energía, es perfecto para sensores alimentados por batería y aplicaciones de bajo consumo en:
- Internet de las cosas (IoT)
- Hogar inteligente
- Comunicación máquina a máquina
Así que, LoRa es una buena elección para nodos de sensores que funcionan con una celda de bobina o alimentados por energía solar, que transmiten pequeñas cantidades de datos. Ten en cuenta que LoRa no es adecuado para proyectos que requieran transmisiones de alta velocidad de datos o frecuentes, o que estén en redes altamente pobladas.
¿Cómo puede ser útil LoRa en tus proyectos de automatización del hogar?
Imagina que quieres medir la humedad en tu campo. Aunque no esté lejos de tu casa, probablemente no tenga cobertura Wi-Fi. Por lo tanto, puedes construir un nodo sensor con un ESP32 y un sensor de humedad que envíe las lecturas de humedad una o dos veces al día a otro ESP32 mediante LoRa.
El segundo ESP32 tiene acceso a Wi-Fi y puede ejecutar un servidor web que muestre las lecturas de humedad. Este es solo un ejemplo que ilustra cómo puedes usar la tecnología LoRa en tus proyectos con ESP32.
ESP32 con LoRa
En esta sección te mostraremos cómo comenzar con LoRa en tu ESP32 utilizando el Arduino IDE. Como ejemplo, construiremos un simple LoRa Sender y un LoRa Receiver.
- Preparando el IDE de Arduino: Sigue las instrucciones para preparar tu Arduino IDE para trabajar con el ESP32.
- Instalación de la biblioteca LoRa: Hay varias bibliotecas disponibles para enviar y recibir paquetes LoRa con el ESP32. En este ejemplo, utilizaremos la biblioteca arduino-LoRa de sandeep mistry.
- Obtención de módulos transceptores LoRa: Para enviar y recibir mensajes LoRa con el ESP32, utilizaremos el módulo transceptor RFM95. Asegúrate de verificar la frecuencia correcta para tu ubicación.
- Configuración del módulo transceptor RFM95: Si no tienes una placa de desarrollo ESP32 con LoRa incorporado, tendrás que preparar el módulo transceptor RFM95 para su uso.
Continúa con el tutorial para obtener los esquemas de conexión, el código del LoRa Sender y LoRa Receiver, y las pruebas para asegurarte de que la comunicación LoRa funcione correctamente en tus proyectos con ESP32.
¡Felicitaciones! Has construido un LoRa Sender y un LoRa Receiver utilizando ESP32. Ahora puedes explorar la comunicación de largo alcance y bajo consumo de energía en tu propio entorno.
Muy claro y fácil de seguir, ¡gracias por compartir estos pasos para comenzar con ESP32 y LoRa! 🙌🏼
¡Excelente tutorial para iniciarse en el mundo de ESP32 con LoRa! Lo explican de manera sencilla y fácil de entender, ¡gracias por compartir este conocimiento! 🔥🚀