LoRa – Long Range (1/2)

Introducción
En entradas anteriores hemos visto como comunicar vía Ethernet nuestro Arduino o como sniffer la banda 433Mhz de los dispositivos Oregon para capturar su información.
En este proyecto emplearemos la tecnología LoRa para comunicar un nodo local y un nodo remoto. Esta tecnología es ampliamente utilizada en IoT por sus características que permite con un consumo bastante bajo (fundamental para tener distribuidos nodos remotos donde puede que la alimentación sea por baterías) tener un alcance más que razonable. En el siguiente punto veremos veremos que es LoRa y que nos permite hacer.
Para hacer más interesante el proyecto, a parte de realizar la comunicación entre 2 Arduinos con LoRa, también vamos a emplear varios buses para comunicarnos con los diferentes dispositivos hardware: LCD, termómetro, módulos LoRa, con lo que vamos a tener un buen ejemplo y base para proyectos futuros.
¿Qué es LoRa?
LoRa es una tecnología para trasmisiones de «largo alcance» y bajo consumo para redes WAN. Emplea bandas de frecuencia públicas sin coste, que lo hace ideal para comunicar pequeños dispositivos como sensores o actuadores. Esta tecnología viene muy bien para IoT donde contaremos con gran cantidad de dispositivos con un consumo limitado y que no van a requerir una gran velocidad de comunicación.
Para la codificación de los datos se emplea el método CSS «Chirp Spread Spectrum», si tenéis interés de como funciona CSS existe gran cantidad de información en Internet. Os dejo un enlace a una PPT
Bandas de trabajo
Como ya comentaba, LoRa emplea bandas públicas sin coste, lo que lo hace interesante para pequeños proyectos. En Europa se emplea la banda 433Mhz y 868Mhz, y en Norte América y Australia la 915Mhz.
La banda 433Mhz es ampliamente utilizada para comunicaciones inalámbricas. En otro post de mi blog podeis ver que los dispositivos de Oregon de las estaciones meteorológicas también emplean esta banda.
Seguridad
Tener una red de varios kilómetros con cientos de dispositivos enviando información a través de bandas públicas ampliamente conocidas nos lleva a plantearnos problemas de seguridad, y es que cualquiera podría estar escuchando nuestro tráfico.
Lorawan plantea el cifrado con AES128 y una distribución de claves durante un proceso de activación. Más información aquí
Nosotros en nuestro proyecto haremos un cifrado AES128 de nuestros datos con claves privadas en el código fuente.
Alcance
Según indican los fabricantes, podemos llegar a tener un alcance en zonas urbanas de entre 2 y 3 kilómetros, subiendo a 5-7 en zonas abiertas. El alcance siempre va a depender de las antenas de nuestros dispositivos y los obstáculos que se encuentren entre el gateway y los diferentes dispositivos.
Después de esta pequeña introducción, vamos a ver que componentes vamos a necesitar para nuestra pequeña prueba de concepto.
Diseño de nuestro proyecto
Nuestro proyecto va a consistir en conectar a través de LoRa un nodo local con un LCD y un pulsador, y un nodo remoto con un termómetro y un relé. El nodo local mostrará en la pantalla LCD la temperatura recogida por el nodo remoto y, con el pulsador, podremos cambiar el estado del relé que se encuentra en el nodo remoto.

- El nodo remoto, con una frecuencia determinada, enviará al nodo local tanto la temperatura recogida por el termómetro como el estado del relé.
- En nodo local mostrará esta información en el LCD.
- Cuando se pulse en botón del nodo local, se enviará un comando al nodo remoto para que cambie el estado del relé, pudiendo activar/desactivar un dispositivo de forma remota.
Con este proyecto ambos nodos reciben y envían información mediante la tecnología LoRa y emplean varios buses para conectarse con los diferentes componentes del montaje.
Listado de componentes de nuestros nodos
Interfaces a emplear en el proyecto
- Interfaz SPI
Al utilizar un Arduino Mega, deberemos conectar nuestra interfaz a los pines SPI siguientes:
|
![]() |
Fundamental conectar el PIN de reset para el correcto funcionamiento del módulo LoRa.

- Interfaz I2C
Para comunicarnos con la pantalla LCD vamos a usar el bus I2C que permite una comunicación en serie y con solo 3 cables (reloj, datos y GND). Puedes emplearen tus proyectos la librería Wire para trabajar con el bus de forma sencilla.
A parte de llamarse I2C, también puede encontrar dispositivos que utilicen la siguiente denominación: IIC, I2C, y también, como TWI (Two Wire Interface, o interface de 2 hilos).
- Interfaz 1-Wire
Protocolo de comunicaciones serie desarrollado por Dallas Semiconductor. Nos permite conectar varios dispositivos a un bus de un solo cable. En modo parásito, es posible alimentar a estos dispositivos por la misma línea de datos, con lo que se simplifica su instalación.

En este enlace tenéis más dispositivo 1-Wire.
Dispositivos principales del proyecto
- Módulo LoRa RA-01
El corazón del módulo LoRa es el chip SX1278 que nos va a permitir trabajar a una frecuencia de 433Mhz pública
En el diagrama de bloques del podéis ver a la derecha la interfaz SPI que utilizaremos para comunicar el Arduino con el SX1278
Podemos encontrar módulos SX1278 que nos van a facilitar mucho el montaje al ya tener los pines soldados y la antena correspondiente:


Pantalla LCD I2C
Para nuestro proyecto emplearemos una pantalla LCD 16×2 que en vez de conectar directamente al Arduino, teniendo que utilizar 6 salidas digitales, emplearemos el bus I2C que con 2 conexiones es más que suficiente.

En el caso de contar con un Arduino Mega, no tendríamos problema al tener una gran cantidad de salidas digitales, pero en modelos más pequeños, ese ahorro de salidas permite conectar mas cosas a nuestro pequeño.
Por debajo del LCD veréis el conversor de I2C a las salidas digitales que necesita el LCD.

Cuanta con un jumper para apagar la retroiluminación del LCD y por defecto vendrá con la dirección 0x27, que será el ID del dispositivo en el bus I2C y que indicaremos al inicializar la librería del LCD.
- Termómetro DS18B20
Termómetro digital de sobra conocido por todos los que nos gusta cacharrear con Arduino. Utiliza el bus 1-Wire y puede funcionar en modo parásito. En nuestro proyecto solo emplearemos un termómetro, pero es muy fácil añadir más de estos dispositivos al mismo bus., así que simplemente tendremos que conectarlo a 5v y a una entrada digital del Arduino.

Este pequeño y barato termómetro tiene muchas funcionalidades y podremos ajustar su precisión.

- Relé
Elemento bastante simple que cuenta con 3 entradas: 5V, GND y la entrada de señal. Necesitaremos conectarlo a una salida digital del Arduino para poder activar/desactivar el Relé.
En el próximo post veremos el montaje de nuestros dos dispositivos, su programación y como funciona.
No Comment