Home»Desarrollos»LoRa – Long Range (1/2)

LoRa – Long Range (1/2)

0
Shares
Pinterest WhatsApp

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

          2 x Arduino Mega 2560: Para el proyecto vamos a usar uno de los arduinos más potentes con microcontrolador ATmel. Realmente cualquier Arduino sería suficientemente potente, lo que debe tener salida de 3V3 para poder alimentar al módulo LoRa
2 x Módulo LoRa: Para nuestro proyecto vamos a usar un SX1278, barato y fácil de encontrar. Yo he buscado ya uno con los pines soldados para facilitar el montaje como es el RA-01.
2 x Pequeña antena para aumentar el alcance de nuestro módulo LoRa: Podéis encontrar kits ya montados.
Sensor de temperatura. ds18b20. Nos va a permitir leer la temperatura ambiente y enviarla al módulo local.
Relé. Lo usaremos para que el nodo remoto actúe ante el mensaje enviado por le nodo central.
LCD I2C: Formado por una pantalla LCD 16×2 y un adaptador I2C para trabajar con el LCD a través de este bus.
Un pequeño pulsador para permitir enviar comandos desde el módulo local al remoto
 2 x Transformador 9v: Será el encargado de alimentar al Arduino de forma estable.
Cables preparados para conectar de forma sencilla los diferentes componentes con el Arduino. Veremos que para este montaje son importantes.

Interfaces a emplear en el proyecto

  • Interfaz SPI

Al utilizar un Arduino Mega, deberemos conectar nuestra interfaz a los pines SPI siguientes:

RA-01 Arduino
NSS D53
MOSI D51
MISO D50
SCK D52
DI00 D02
RST D03
3V3 3V3
GND GND
ArduinoMega2560_SPI_pins

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

Enlace al fabricante

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.

Previous post

Medidor de consumo V2 - MQTT

Next post

LoRa – Long Range (2/2)

No Comment

Leave a reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *