Ir al contenido

La librería LoRa de Industrial Shields: instalación y funciones

La librería LoRa de Industrial Shields

Los PLCs Arduino y ESP32 con LoRa usan la misma API, basada en la librería RadioHead. Así el código es compatible entre módulos, no solo entre los PLCs LoRa de Industrial Shields sino con cualquier módulo compatible con RadioHead. Los PLCs LoRa basados en Arduino incorporan el módulo RFM95 y los basados en ESP32, el RN2483. Se comunican con la CPU de forma muy distinta, pero las librerías desarrolladas por Industrial Shields hacen que gestionarlos sea sencillo.

Formato del mensaje

Todos los mensajes de un módulo RadioHead tienen esta estructura:

NombreTamañoFunción
txHeaderTo1 byteDirección del nodo de destino. Usa 0xFF para broadcast.
txHeaderFrom1 byteDirección del nodo emisor.
txHeaderId1 byteID de la cabecera.
txHeaderFlags1 byteFlags de la cabecera.
MensajeMáx. 251 bytesEl propio mensaje.

La función LoRa.recv() comprueba que el mensaje es correcto y lo analiza. Así varios nodos pueden compartir el mismo canal y solo el nodo destinatario procesa cada paquete. Ten en cuenta que, por defecto, la dirección de la cabecera no es una autenticación: no la uses como mecanismo de seguridad y no envíes datos sensibles en texto claro.

Funciones principales

begin()

Inicializa el módulo con su configuración por defecto. Devuelve true si la operación se realiza correctamente y false en caso contrario.

LoRa.begin();

available()

Comprueba si el buffer de recepción tiene un mensaje sin leer. Después, llama a recv() para leerlo. Devuelve true si hay un mensaje disponible.

LoRa.available();

send()

Envía len bytes a partir del array message. Devuelve true si el mensaje se ha enviado.

LoRa.send(message, len);

recv()

Lee un mensaje del buffer de recepción. Llámala después de que LoRa.available() devuelva true, para saber que hay un mensaje pendiente. El mensaje se guarda en el array buf y len se actualiza con la longitud del mensaje leído. Devuelve true si la operación se realiza correctamente.

LoRa.recv(buf, len);

Configuración de radio

El módulo RN2483 se puede configurar después de LoRa.begin() con estas funciones. La librería del RFM95 también las ofrece, pero los parámetros por defecto son distintos; consulta la documentación de la librería RadioHead. Todas devuelven true si la operación se realiza correctamente. Todos los nodos de un enlace deben usar la misma frecuencia, spreading factor, ancho de banda, coding rate y sync word.

setFrequency() recibe la frecuencia en hercios, como número entero: 868 MHz es 868000000, no 868 ni 868.0.

FunciónValoresPor defectoEjemplo
setFrequency()De 433050000 a 434790000 Hz, o de 863000000 a 870000000 Hz868000000 HzLoRa.setFrequency(864050000);
setSpreadingFactor()De 7 a 1212LoRa.setSpreadingFactor(7);
setTxPower()De -3 a 1513LoRa.setTxPower(2);
setSignalBandwidth()125, 250 o 500 kHz125LoRa.setSignalBandwidth(250);
setCodingRate4()5, 6, 7, 8 o 95LoRa.setCodingRate4(8);
setPreambleLength()De 0 a 655350LoRa.setPreambleLength(100);
setSyncWord()De 0x00 a 0xFF0x12LoRa.setSyncWord(0x10);

Elige la frecuencia y la potencia de transmisión que permita tu normativa local. Descubre los PLCs LoRa en www.industrialshields.com.

Calificación
0 0

No hay comentarios por ahora.

para ser el primero en comentar.