Introducción
El ESP32 PLC 14 equipado con el módulo transceptor LoRa RN2483A ofrece una plataforma eficiente para aplicaciones LoRaWAN. Este tutorial explica la integración de la LoRa Click Board con el ESP32 PLC 14 y ofrece una guía básica para usar esta tecnología.
El tutorial describe las funcionalidades del chip RN2483A, la interacción entre la placa click LoRa y el microcontrolador ESP32, y ofrece un sketch básico de Arduino IDE para probar el funcionamiento del módulo.
Placa de expansión LoRa
El ESP32 PLC 14 & LoRa incluye el módulo transceptor LoRa RN2483A, soldado en una placa click personalizada y conectado a la placa de expansión del PLC.
Este módulo está diseñado específicamente para aplicaciones LoRaWAN, ya que el chip puede configurarse para trabajar con OTAA o ABP y dispone de varios comandos para establecer los parámetros LoRaWAN adecuados.
Chip RN2483A
El módulo RN2483A se encarga de enviar y recibir paquetes LoRa a otros módulos LoRa y desde ellos. Gracias a la Command Reference User Guide (guía de referencia de comandos) , el usuario puede interactuar con el chip con facilidad y aprovechar todas las capacidades del módulo.
Los comandos más útiles son:
- sys reset: Reinicia el módulo.
- mac pause: Debe llamarse antes de cada transmisión o recepción LoRa. Devuelve el número de milisegundos que se puede pausar la mac.
- radio set wdt X: Cambia la duración del tiempo de espera a X milisegundos. Establécelo en 0 para desactivar el Watch Dog Timer.
- radio rx X: Pone el LoRa en modo de recepción durante X milisegundos. Si el wdt es inferior a X, la recepción terminará al agotarse el tiempo del wdt. Para el modo de recepción continua, establece X en 0 y desactiva el wdt.
- radio tx XX: Envía los valores hexadecimales XX (hasta 255 bytes para modulación LoRa) por LoRa.
Interacción con el módulo RN2483A
La placa click LoRa se comunica con el microcontrolador ESP32 a través de un PIC (circuito integrado programable), que convierte la comunicación Serial (TX / RX) de la click a I2C del microcontrolador ESP32.
Como el PIC está programado por Industrial Shields, debe incluirse una librería de cabecera personalizada en todos los proyectos que utilicen el PIC. Gracias a este archivo adicional, se puede acceder a la click LoRa mediante funciones como write, read o available. Consulta la cabecera para obtener más información.
Para probar el funcionamiento del módulo, podemos crear un sketch de Arduino IDE con la configuración básica:
#include <Adafruit_MCP23X17.h>
#include "HardwareSerialPicMkesp.h"
HardwareSerialPIC serialPIC = HardwareSerialPIC();
Adafruit_MCP23X17 mcp;
void setup() {
// Baudrate for Serial port
Serial.begin(115200);
delay(100);
// Initialize mcp
mcp.begin_I2C();
// Reset the LoRa module (active LOW)
mcp.pinMode(3, OUTPUT);
delay(100);
mcp.digitalWrite(3, LOW);
delay(100);
mcp.digitalWrite(3, HIGH);
// Start LoRa module
serialPIC.begin(120, 17);
// Flush the port
while(serialPIC.available()) {
Serial.print((char)serialPIC.read());
delay(10);
}
}
void loop() {
if (Serial.available()) {
byte rx = Serial.read();
serialPIC.write(rx);
}
if (serialPIC.available()) {
Serial.print((char)serialPIC.read());
}
}
En el sketch, primero incluimos la librería MCP23017 , que se utilizará para acceder a algunos pines de la placa de expansión, y la cabecera auxiliar.
A continuación, creamos los objetos serialPIC, que será nuestro puerto serie para comunicarnos con el módulo RN2483A, y mcp, que mediante I2C se comunica con el chip de expansión MCP23017 para ampliar las E/S del ESP32 PLC 14.
En la función setup, primero iniciamos el puerto Serial y el mcp.
Después, reiniciamos el módulo LoRa usando el pin 3 del MCP23017 e iniciamos el módulo LoRa en la dirección 0x78 (120 en decimal) y a 57600 baudios (17, consulta HardwareSerialMkesp.h). El RN2483A funciona por defecto a 57600 baudios, por lo que debemos configurar el puerto en consecuencia.
Por último, vaciamos el puerto serialPIC de los caracteres restantes.
En la función loop, enviamos al módulo RN2483A todo lo que escribimos en el puerto serie, y también imprimimos en el puerto Serial todo lo que recibimos del módulo LoRa.
Con esto, podemos interactuar directamente con la placa click y enviar datos por LoRa. Solo tienes que escribir los comandos en el monitor Serie y pulsar Intro (¡asegúrate de tener seleccionado NL & CR en el Monitor Serie de Arduino IDE para enviar "\r\n" justo después del mensaje!).