LoRa (Long Range) es una tecnología de comunicación inalámbrica diseñada para comunicaciones de largo alcance y bajo consumo, que se usa sobre todo en aplicaciones de Internet de las cosas (IoT). LoRa funciona en bandas de radiofrecuencia sin licencia y permite que los dispositivos envíen pequeñas cantidades de datos a distancias de varios kilómetros con un consumo de energía mínimo.
Esta página se centra en la comunicación LoRa pura y en los pasos necesarios para usarla correctamente en los PLC basados en Arduino. Si buscas un ejemplo de cómo usar LoRaWAN, consulta Cómo trabajar con LoRaWAN y un controlador PLC.
LoRa es una comunicación opcional. Solo pueden usarla los PLC M-Duino y Ardbox con la placa de comunicación adicional.
Hardware
Los PLC de Industrial Shields basados en Arduino admiten LoRa para Europa, Asia y Norteamérica, con una placa RFM9X5W. Las bandas admitidas son 868MHz y 915MHz, que se usan en Europa y América, respectivamente.
Para usar LoRa, hay que configurar correctamente los interruptores DIP.
Interruptores DIP
Localiza los interruptores situados en la zona izquierda del PLC y comprueba que están en la posición correcta (por defecto, ya vienen configurados para LoRa):
- Interruptor 3 (inferior) en OFF para habilitar LoRa.

Interruptor izquierdo
Pon el interruptor 1 y el interruptor 2 en OFF para habilitar la comunicación entre el módulo LoRa y la placa Arduino.

Interruptor derecho
Pon el interruptor 3 (inferior) y el interruptor 4 (inferior) en OFF para habilitar la comunicación entre el módulo LoRa y la placa Arduino.

Localiza los interruptores situados en la zona izquierda del PLC y comprueba que están en la posición correcta (por defecto, ya vienen configurados para GPRS):
- Interruptor 1 (superior) en OFF para habilitar GPRS.
- Interruptor 2 (superior) en OFF para habilitar GPRS.
- Interruptor 3 (inferior) en OFF para habilitar GPRS RST.
Localiza los interruptores situados en la zona izquierda del PLC y comprueba que están en la posición correcta (por defecto, ya vienen configurados para LoRa):
- Interruptor 1 en OFF para habilitar LoRa.
- Interruptor 2 en OFF para habilitar LoRa.

Localiza los interruptores situados en la zona derecha del PLC y comprueba que están en la posición correcta (por defecto, ya vienen configurados para GPRS):
- Interruptor 4 (superior) en OFF para habilitar GPRS RST.

Localiza los interruptores situados en la zona derecha del PLC y comprueba que están en la posición correcta (por defecto, ya vienen configurados para LoRa):
- Interruptor 3 (superior) en OFF para habilitar LoRa.
- Interruptor 4 (superior) en OFF para habilitar LoRa.

Recuerda alimentar correctamente el PLC con una fuente de alimentación de 12-24V.
Software
LoRa se usa en los PLC Arduino con la librería "LoRa". Para configurarla correctamente, sigue estos pasos:
- Selecciona la placa LoRa correspondiente: Tools > Board > Industrial Shields AVR Boards > Ardbox/M-duino LoRa family.
- Selecciona tu modelo en Tools > Model
- Selecciona el puerto que usas en Tools > Port.
- Abre los ejemplos de LoRa en File > Examples > LoRa.
Hay 2 ejemplos básicos disponibles:
- El ejemplo Receive configura un módulo LoRa para comunicación inalámbrica a 868.0MHz. Inicializa el módulo y escucha continuamente los paquetes de datos entrantes. Cuando recibe un paquete, imprime el valor recibido en el monitor serie para depuración.
- El ejemplo Send configura un módulo LoRa para comunicación inalámbrica a 868.0MHz. Inicializa el módulo y después envía continuamente el valor de un contador como paquete de datos cada 5 segundos. Tras enviar cada paquete, incrementa el contador e imprime mensajes de depuración en el monitor serie.
Referencia de la API
Descripción:
Inicializa el módulo LoRa.
Sintaxis:
LoRa.begin();
Parámetros:
Ninguno
Valores devueltos:
Devuelve true si la inicialización se ha realizado correctamente; si no, devuelve false.
Descripción:
Fija la frecuencia de trabajo del módulo LoRa.
Sintaxis:
LoRa.setFrequency(frequency);
Parámetros:
- frequency: la frecuencia que se fija en el módulo LoRa, en MHz.
Valores devueltos:
Devuelve true si la frecuencia se ha fijado correctamente; si no, devuelve false.
Descripción:
Comprueba si hay un paquete entrante disponible.
Sintaxis:
LoRa.available();
Parámetros:
Ninguno.
Valores devueltos:
Devuelve true si hay un paquete entrante disponible; si no, devuelve false.
Descripción:
Recibe un paquete y guarda el payload en el buffer indicado.
Sintaxis:
LoRa.recv(buf, len);
Parámetros:
- buf: puntero al buffer donde se guardará el payload.
- len: puntero a la longitud del buffer. Se actualiza con la longitud real del payload recibido.
Valores devueltos:
Devuelve true si el paquete se ha recibido correctamente; si no, devuelve false.
Descripción:
Envía un paquete con el payload indicado.
Sintaxis:
LoRa.send(buf, len);
Parámetros:
- buf: puntero al buffer que contiene el payload que se enviará.
- len: longitud del payload que se enviará.
Valores devueltos:
Nada.
Descripción:
Espera hasta que el paquete se haya enviado por completo.
Sintaxis:
LoRa.waitPacketSent();
Parámetros:
Ninguno.
Valores devueltos:
Nada.
No hay comentarios por ahora.