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:
| Nombre | Tamaño | Función |
|---|---|---|
| txHeaderTo | 1 byte | Dirección del nodo de destino. Usa 0xFF para broadcast. |
| txHeaderFrom | 1 byte | Dirección del nodo emisor. |
| txHeaderId | 1 byte | ID de la cabecera. |
| txHeaderFlags | 1 byte | Flags de la cabecera. |
| Mensaje | Máx. 251 bytes | El 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ón | Valores | Por defecto | Ejemplo |
|---|---|---|---|
setFrequency() | De 433050000 a 434790000 Hz, o de 863000000 a 870000000 Hz | 868000000 Hz | LoRa.setFrequency(864050000); |
setSpreadingFactor() | De 7 a 12 | 12 | LoRa.setSpreadingFactor(7); |
setTxPower() | De -3 a 15 | 13 | LoRa.setTxPower(2); |
setSignalBandwidth() | 125, 250 o 500 kHz | 125 | LoRa.setSignalBandwidth(250); |
setCodingRate4() | 5, 6, 7, 8 o 9 | 5 | LoRa.setCodingRate4(8); |
setPreambleLength() | De 0 a 65535 | 0 | LoRa.setPreambleLength(100); |
setSyncWord() | De 0x00 a 0xFF | 0x12 | LoRa.setSyncWord(0x10); |
Elige la frecuencia y la potencia de transmisión que permita tu normativa local. Descubre los PLCs LoRa en www.industrialshields.com.
No hay comentarios por ahora.