[ESP32 notas de estudio más completas (protocolo) - 2.ESP32 LoRa]

Acerca de este tutorial:

Conceptos básicos de ESP32                                

1. Introducción a ESP32                                                                

2. Entorno de desarrollo integrado ESP32 Arduino

3. Código VS y PlatformIO

4. pines ESP32

5. Entrada y salida ESP32

6. Modulación de ancho de pulso ESP32

7. Entrada analógica ESP32

8. Temporizador de interrupción ESP32

9 .ESP32 sueño profundo

Protocolo ESP32

1. Servidor web ESP32

2 ESP32 LoRa

3 ESP32 BLE

4.ESP32 BLE cliente-servidor

5 ESP32Bluetooth

6 ESP32 MQTT

7.ESP32 ESP-AHORA

8.ESP32 Wifi

9. ESP32 WebSocket

10.ESP32 ESP-MALLA

11. Buzón ESP32

12 ESP32 SMS

13. ESP32 HTTP obtener POST

14.HTTP GET Web API

15. API web HTTP POST

 Artículos del servidor ESP32

¡Sigue actualizando, sigue a los bloggers y no te pierdas! ! !

 Módulo sensor ESP32

¡Sigue actualizando, sigue a los bloggers y no te pierdas! ! !

Combate definitivo ESP32

Más de 100 proyectos prácticos ESP32, ¡presta atención! ! !

ESP32 Uso de Arduino IDE y LoRa - Primeros pasos

En este tutorial, exploraremos los fundamentos de LoRa y cómo usarlo con el ESP32 para proyectos de IoT utilizando el IDE de Arduino. Para comenzar, también le mostraremos cómo crear un transmisor LoRa y un receptor LoRa simples utilizando el módulo transceptor RFM95.

¿Qué es LoRa?

LoRa es una tecnología de comunicación inalámbrica de datos que utiliza técnicas de modulación de radio que pueden generarse mediante chips transceptores LoRa de Semtech.

Esta técnica de modulación permite la comunicación de largo alcance de pequeñas cantidades de datos (lo que significa un bajo ancho de banda), alta inmunidad a las interferencias y minimiza el consumo de energía. Por lo tanto, permite la comunicación a larga distancia con bajos requerimientos de energía.

Frecuencia LoRa

LoRa utiliza frecuencias sin licencia disponibles en todo el mundo. Estas son las frecuencias más utilizadas:

  • Europa 868 MHz
  • Norteamérica 915 MHz
  • Banda asiática de 433 MHz

aplicación lora

Las características de bajo consumo y largo alcance de LoRa lo hacen ideal para sensores alimentados por batería y aplicaciones de bajo consumo:

  • Internet de las cosas (IoT)
  • casa inteligente
  • comunicación máquina a máquina
  • y más...

Por lo tanto, LoRa es una buena opción para funcionar con una batería de bobina o un nodo sensor alimentado por energía solar, que transmite pequeñas cantidades de datos.

Tenga en cuenta que LoRa no es adecuado para los siguientes proyectos:

  • Se requiere transmisión de alta velocidad de datos;
  • requieren transferencias muy frecuentes;
  • O en una red densamente poblada.

Topología LoRa

Puedes usar LoRa de las siguientes maneras:

 

  • comunicación entre pares
  • O construya una red LoRa (tome LoRaWAN como ejemplo)

comunicación entre pares

En la comunicación entre pares, dos dispositivos habilitados para LoRa se comunican entre sí mediante señales de radiofrecuencia.

Esto es útil, por ejemplo, para el intercambio de datos entre dos placas ESP32 equipadas con chips transceptores LoRa, que se encuentran alejadas entre sí o en entornos sin cobertura Wi-Fi.

A diferencia de Wi-Fi o Bluetooth, que solo admiten comunicaciones de corto alcance, dos dispositivos LoRa con antenas adecuadas pueden intercambiar datos a largas distancias.

Puede configurar fácilmente su ESP32 con un chip LoRa para transmitir y recibir datos de manera confiable a distancias de más de 200 metros (puede obtener mejores resultados según su entorno y la configuración de LoRa). Hay otras soluciones LoRa que pueden alcanzar fácilmente un alcance de más de 30 kilómetros.

LoRaWAN

También puede usar LoRaWAN para construir una red LoRa.

 El protocolo LoRaWAN es una especificación de red de área amplia de baja potencia (LPWAN) derivada de la tecnología LoRa estandarizada por LoRa Alliance. No exploraremos LoRaWAN en este tutorial, pero para obtener más información, puede consultar los sitios web de LoRa Alliance y The Things Network.

¿Cómo puede LoRa desempeñar un papel en su proyecto de domótica?

Veamos una aplicación práctica.

Imagina que quieres medir la humedad en un campo. Aunque no está lejos de tu casa, probablemente no tenga cobertura Wi-Fi. Entonces puedes construir un nodo sensor con un ESP32 y un sensor de humedad que envía las lecturas de humedad una o dos veces al día a otro ESP32 usando LoRa .

 Los ESP32 posteriores tienen acceso a Wi-Fi, que puede ejecutar un servidor web que muestra lecturas de humedad.

 Este es solo un ejemplo para mostrar cómo usar la tecnología LoRa en el proyecto ESP32.

ESP32 y LoRa

En esta sección, le mostraremos cómo comenzar a usar LoRa con ESP32 usando Arduino IDE. Por ejemplo, construiremos un transmisor LoRa simple y un receptor LoRa.

El transmisor LoRa enviará 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 sección, necesita los siguientes componentes:

2 placas de desarrollo ESP32 DOIT DEVKIT V1
2 módulos transceptores LoRa (RFM95)
Placa de conexión RFM95 LoRa (opcional) Cables
de puente
Placa de prueba o placa de tiras
Opcional: 2 OLED TTGO LoRa32 SX1276

Preparar Arduino IDE

El IDE de Arduino tiene un complemento que le permite programar el ESP32 usando el IDE de Arduino y su lenguaje de programación. Si no tiene el IDE de Arduino listo para usar el ESP32, siga adelante.

Instalar la biblioteca LoRa

Hay varias bibliotecas disponibles para enviar y recibir fácilmente paquetes LoRa usando ESP32. En este ejemplo, utilizaremos la biblioteca arduino-LoRa de Sandeep Mistry .

Abra su IDE de Arduino, vaya a Sketch  >  Incluir biblioteca  >  Administrar bibliotecas y busque "  LoRa  ". Seleccione la biblioteca LoRa resaltada en la imagen a continuación e instálela.

Obtenga el módulo transceptor LoRa

Para enviar y recibir mensajes LoRa usando ESP32 usaremos  Módulo transceptor RFM95 Módulo transceptor RFM95 Módulo transceptor RFM95 . Todos los módulos LoRa son transceptores, lo que significa que pueden enviar y recibir información. Necesitas 2 de estos.

También puede usar otros módulos compatibles, como las placas basadas en Semtech SX1276/77/78/79, que incluyen: RFM96W, RFM98W, etc.

Prepare el módulo transceptor RFM95

Si tiene una placa de desarrollo ESP32 con LoRa integrado, puede omitir este paso.

Los transceptores RFM95 no son adecuados para placas de prueba. Una fila de pines de cabecera normales de 2,54 mm no encajará en un pin de transceptor. El espacio entre conexiones es más corto de lo habitual.

Hay varias opciones disponibles para acceder a los pines del transceptor.

  • Puede soldar algunos cables directamente al transceptor;
  • Desconecte los pines del cabezal y suelde cada uno individualmente;
  • O puede comprar una placa de conexión para que sea más compatible con la placa de pruebas.

Hemos soldado los cabezales al módulo como se muestra en la imagen de abajo.

De esta manera, puede usar cables de puente normales para acceder a los pines del módulo e incluso colocar algunos pines de cabecera para conectarlos directamente a una placa de tiras o de pruebas.

antena

El chip transceptor RFM95 requiere una antena externa conectada al pin ANA.

Puede conectar una antena "real" o hacer una usted mismo usando un cable como se muestra en la imagen a continuación. Algunas placas de conexiones 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 usar cables de 86,3 mm soldados directamente a los pines ANA del transceptor. Tenga en cuenta que el uso de una antena adecuada aumentará el alcance de la comunicación.

NOTA IMPORTANTE: Debe conectar la antena al módulo.

Conecte el módulo transceptor RFM95 LoRa

El módulo transceptor RFM95 LoRa utiliza el protocolo de comunicación SPI para comunicarse con ESP32. Por lo tanto, utilizaremos los pines SPI predeterminados del ESP32. Conecte las dos placas ESP32 a los módulos transceptores correspondientes como se muestra en el siguiente esquema:

La siguiente es la conexión entre el módulo transceptor RFM95 LoRa y ESP32:

  • ANA: Antena
  • TIERRA: TIERRA
  • DIO3: sin conexión
  • DIO4: sin conexión
  • 3,3 voltios:  3,3 V
  • DIO0:   GPIO2
  • DIO1: no conectado
  • DIO2: no conectado
  • GND: no conectado
  • DIO5: no conectado
  • RESTABLECER: GPIO 14
  • NSS: GPIO 5
  • SCK: GPIO 18
  • MOSI: GPIO 23
  • MISO: GPIO 19
  • GND: no conectado

Nota:  El módulo transceptor RFM95 tiene 3 pines GND. No importa cuál uses, pero necesitas al menos uno conectado.

    

Por razones prácticas, hicimos este circuito sobre listones. Es más fácil de manejar y los cables no se rompen. Puedes usar una placa de prueba si lo prefieres.

Código del transmisor LoRa

Abra su IDE de Arduino y copie el siguiente código. Este boceto se basa en el ejemplo de la biblioteca de LoRa. Utiliza LoRa para transmitir un mensaje cada 10 segundos. Envía un "hola" seguido de un número que se incrementa con cada mensaje.

  
#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
  //866E6 for Europe
  //915E6 for North America
  while (!LoRa.begin(866E6)) {
    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.

Primero incluye las bibliotecas requeridas.

#include <SPI.h>
#include <LoRa.h>

Luego, defina los pines utilizados por el módulo LoRa. Si siguió el esquema anterior, puede usar las definiciones de pines utilizadas en el código. Si está utilizando una placa ESP32 con LoRa incorporado, verifique los pines utilizados por el módulo LoRa en la placa y realice la asignación de pines correcta.

#define ss 5
#define rst 14
#define dio0 2

Inicializas la variable de contador a partir de 0;

int counter = 0;

Dentro de setup() , inicializa la comunicación en serie.

Serial.begin(115200);
while (!Serial);

Configura los pines del módulo LoRa.

LoRa.setPins(ss, rst, dio0);

E inicialice el módulo transceptor con la frecuencia especificada.

while (!LoRa.begin(866E6)) {
  Serial.println(".");
  delay(500);
}

Es posible que deba cambiar la frecuencia para que coincida con la que se usa en su ubicación. Elige una de las siguientes opciones:

  • 433E6
  • 866E6
  • 915E6

El módulo transceptor LoRa escucha paquetes dentro de su rango. No importa de dónde vengan los paquetes. Para asegurarse de que solo recibe paquetes del remitente, puede configurar una palabra de sincronización (rango de 0 a 0xFF).

LoRa.setSyncWord(0xF3);

Tanto el receptor como el remitente deben usar la misma palabra de sincronización. De esta forma, el receptor ignorará cualquier paquete LoRa que no contenga esta palabra de sincronización.

Luego, en loop() envías paquetes LoRa. Inicializas un paquete con el método beginPacket () .

LoRa.beginPacket();

 Usas el método print(). Como puede ver en las siguientes dos líneas, enviamos un mensaje de saludo seguido del contador.

LoRa.print("hello ");
LoRa.print(counter);

 Luego, cierre el método endPacket () del paquete .

LoRa.endPacket();

 A partir de entonces, el mensaje del contador se incrementa en 1 en cada ciclo, lo que ocurre cada 10 segundos.

counter++;
delay(10000);

Probar el código del remitente

Sube el código a tu placa ESP32. Asegúrese de seleccionar la placa y el puerto COM correctos.

Después de eso, abra el monitor en serie y presione el botón de activación ESP32. Debería ver un mensaje de éxito, como se muestra en la imagen a continuación. El contador debe incrementarse cada 10 segundos.

Código del receptor LoRa

Ahora, tome otro ESP32 y cargue el siguiente código (código del receptor LoRa). Este código escucha un paquete LoRa con una palabra de sincronización que defina e imprime el contenido del paquete en el monitor serie y RSSI. RSSI mide la fuerza relativa de la señal recibida.

#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
  //866E6 for Europe
  //915E6 for North America
  while (!LoRa.begin(866E6)) {
    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 código es muy similar al anterior. Solo loop() es diferente.

Es posible que deba cambiar la frecuencia y la palabra sincronizada para que coincidan con la utilizada en el boceto del remitente.

Dentro de loop() el código usa el método parsePacket () .

int packetSize = LoRa.parsePacket();

Si hay un paquete nuevo, leemos su contenido a medida que está disponible.

Para leer los datos entrantes, puede usar el método readString () .

while (LoRa.available()) {
  String LoRaData = LoRa.readString();
  Serial.print(LoRaData); 
}

Los datos entrantes se guardan en la variable de datos LoRa y se imprimen 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());

Probar el código del receptor LoRa

Sube este código a tu ESP32. En este punto deberías tener dos placas ESP32 con diferentes códigos: transmisor y receptor.

Abra el monitor serie del receptor LoRa y presione el botón de activación del transmisor LoRa. Debería comenzar a recibir paquetes LoRa en el receptor.

¡Felicidades! Has construido un transmisor LoRa y un receptor LoRa usando ESP32.

más

Ahora debe probar el rango de comunicación entre el remitente y el receptor en su área. El rango de comunicación varía mucho según su entorno (si vive en un área rural o urbana con muchos edificios altos). Para probar el rango de comunicación, puede agregar una pantalla OLED al receptor LoRa y salir a caminar para ver qué tan lejos puede comunicarse (este es un tema para un tutorial futuro).

 En este ejemplo, solo estamos enviando un mensaje de saludo, pero la idea es reemplazar ese texto con información útil.

Resumir

En resumen, en este tutorial le hemos mostrado los conceptos básicos de la tecnología LoRa:

  • LoRa es una tecnología de modulación de radio;
  • LoRa permite la comunicación a larga distancia de pequeñas cantidades de datos y requiere un bajo consumo de energía;
  • Puede usar LoRa en comunicación o red entre pares;
  • LoRa es especialmente útil si desea monitorear sensores que no están cubiertos por una red Wi-Fi y están a varios metros de distancia.

Supongo que te gusta

Origin blog.csdn.net/m0_46509684/article/details/129372384
Recomendado
Clasificación