Lo primero que hay que aclarar es que LoRa y LoRaWAN no son lo mismo, LoRa es el tipo de modulación en radiofrecuencia patentado por Semtech y que entre sus principales ventajas se encuentra: •
•
•
•
•
•
•
•
Alta tolerancia tolerancia a las interferencias Alta sensibilidad sensibilidad para recibir recibir datos datos (-168dB) Basado en modulación chirp Bajo Consumo (hasta 10 años con una batería*) Largo alcance 10 a 20km Baja transferencia de datos (hasta 255 bytes) Conexión punto a punto Frecuencias de trabajo: 915Mhz América, 868 Europa, 433 Asia
Todo esto hace a la tecnología ideal para conexiones a grandes distancias y para redes de IoT que se pueden utilizar en ciudades inteligentes, lugares con poco cobertura celular o redes privadas de sensores o actuadores, por eso es que nace LoRaWAN.
LoRaWAN es un protocolo de red que usa la tecnología LoRa para comunicar y administrar dispositivos LoRa, se compone
de dos partes principalmente: gateways y nodos, los primeros son los encargados de recibir y enviar información a los nodos y los segundos, segundos, son los dispositivo dispositivoss finales que envían envían y reciben información hacia el gateway.
Las principales características de LoRaWAN son: •
•
•
•
•
•
•
•
Topología estrella Alcance de 10 10 a 15km en línea de vista Encriptación AES 128 Soporte para 3 clases de nodos Administración Administración de dispositivos dispositivos Redes públicas y privadas Bajo consumo y largo alcance Baja transferencia de datos (hasta 242 bytes)
Estructura de red LoRaWAN
En la imagen anterior puedes ver claramente cómo se compone una red LoRaWAN clásica, en la que una serie de dispositivos finales se conectan a Gateways y estos envían todo a un servidor, que por medio de una API entrega los datos a una aplicación final para el usuario. Nosotros como BeeLAN nos encargamos de dos principales tareas en este proceso: •
•
Infraestructura: Crear la infraestructura de gateways y antenas en cualquier parte donde sea necesario para que tú solo te dediques a crear los nodos para tu solución. Aplicación LoRa: Tenemos una aplicación que te permite administrar y crear tus nodos en nuestros servidores o de manera local en tus servidores, con esta aplicación todos los datos que llegan a la red son entregados por medio de una API a tu aplicación final creada para ti o tu cliente.
•
•
•
•
•
Conexiones punto a punto (P2P) o máquina a máquina. Redes de sensores en ciudades, campo o industria. Redes IoT donde NO se requiere transferir voz o video. Tracking de vehículos, animales o personas. Redes privadas que no requieren conectarse a servicios en la nube o donde no hay cobertura celular.
En resumen LoRa termina siendo una tecnología muy flexible para solucionar diversos y variados problemas, gracias a sus topologías de conexión P2P, mesh y redes LoRaWAN privadas o públicas. Gracias a su largo alcance y bajo consumo esto la hace una tecnología barata y fácil de implementar.
En modo Lora los nodos pueden funcionar con una conexión punto-a-punto (P2P) o mesh la principal característica de este modo es que no se requiere un dispositivo intermediario que administre la comunicación, los dispositivos pueden enviar entre ellos informacion directamente, esto es perfecto para comunicaciones sencillas y simples por ejemplo controlar el encendido y apagado de un motor.
La otra manera es con un tipo de Mesh donde encontramos un nodo que se encarga de coordinar la red, sus desventaja es que esta limitada a 255 redes de 255 nodos* y a que el nodo coordinador solo puede escuchar un nodo a la vez.
En modo LoRaWAN los nodos forzosamente se deben conectar a un gateway que soporta hasta 62,500* y puede escuchar 8 nodos a la vez, para poder unirse a la red y aprovechar las bondades del protocolo el nodo debe enviar una serie de llaves de identificación y seguridad, todos los nodos trabajan en un una conexión tipo estrella, los mismos nodos aun estando en movimiento se conectan al gateway más cercano y con mejor calidad de comunicación, muy similar a como funciona una red celular.
En protocolo LoRaWAN existen tres tipos de clases de nodo: •
Clase A:
La más soportada en casi todos los dispositivos, este tipo de clase ofrece el mayor ahorro de energía debido a que solo entra en modo escucha (llamado ventana RX) después de enviar un datos hacia el gateway, por eso es ideal para dispositivos que usan una batería. •
Clase B:
Este tipo de dispositivos tiene las ventanas de recepción con base a tiempos predeterminados con el gateway, este tipo de nodos puede usar una batería o una fuente externa dependiendo de los tiempos asignados de escucha. Hasta el momento no conozco ningún servicio para lorawan que soporte esta clase hasta el momento
Clase C: Este tipo de clase ofrece el menor ahorro de energía debido a que siempre esta en modo escucha y solo cuando es necesario en modo transmitir, la recomendación es usarlo en dispositivos que cuentan con una fuente externa de alimentación.
Existen dos maneras de conectarse a una red LoRaWAN como mencioné anteriormente para lograr entrar a la red se requieren una serie de claves y número de identificación por parte del nodo para lograr el correcto funcionamiento de la red y mantener su seguridad.
Modo OTAA
El modo OTAA (Over-The-Air-Activation) es la manera más segura de conectarse a la red los parámetros de configuración son: DevEUI: Este es un identificador de fábrica, hace a cada dispositivo único. Esta configuración en algunos dispositivos se puede ajustar. AppEUI: Identificador de aplicación unico utilizado para agrupar objetos. Esta dirección de 64 bits se, utiliza para clasificar los dispositivos por aplicación. Esta Configuración se puede ajustar AppKey: Es una clave secreta AES de 128bits compartida entre el dispositivo periférico y la red. Se utiliza para determinar las claves de sesión. Esta configuración se puede ajustar.
Con estos datos de manera simple la conexión se realiza de la siguiente manera: 1.- El nodo solicita un join (o inicio de sesión) a la red con los datos de configuración y abre la ventana de recepción. 2.- El Gateway recibe la solicitud y la envía al servidor. 3.- El servidor verifica que el nodo este dado de alta y la llave de encriptación sea correcta. 4.- Si es correcta asigna una sesión temporal y la envía por medio del gateway al nodo, si los datos son incorrectos rechaza el join. 5.- El nodo recibe la sesión temporal y puede enviar datos a la red. La principal ventaja de la conexión tipo OTAA es la seguridad ya que la sesión se dice: “se crea en el aire” y se renueva cada vez que el dispositivo pierde la conexión, es apagado o reiniciado, esto dificulta que alguien pueda robar la sesión y clonar el dispositivo.
ABP
El modo ABP (Activation By Personalization) es el modo más sencillo de conexión, los parámetros de conexión son: DevAddress: Dirección lógica (equivalente a una dirección IP) que se utilizará para toda comunicación posterior con la red. NetworkSessionKey: Clave de cifrado entre el dispositivo y el operador utilizado para las transmisiones y para validar la integridad de los mensajes. ApplicationSessionKey: Clave de cifrado entre el dispositivo y el operador (a través de la aplicación) utilizada
para transmisiones y para validar la integridad de los mensajes. Con estos parámetros la conexión se realiza de la siguiente manera: 1.- El dispositivo envía datos hacia al Gateway 2.- El Gateway válida que los datos corresponda a la sesión 3.- Si es correcta la sesión se procesan los datos, sino se rechazan. La principal ventaja de este tipo de conexión es que no se requiere hacer un join a la red para poder enviar datos, la confirmación del lado del servidor no es necesaria ya que la sesión ya está manualmente asignada, para dispositivos que están en movimiento o no tienen excelente recepción este tipo de conexión es ideonia. La desventaja es que al encontrarse la llave de encriptación en el dispositivo pudiera ser extraída y clonada por una atacante.
Fuente: https://www.jaguar-network.com/en/news/lorawan-in-a-nutshell-2-internet-of-thingsiot/
Una vez que hemos cubierto lo básico sobre los nodos LoRa y los tipos de conexión disponible debes saber que a partir de de este punto los siguientes post solo aplica para redes LoRaWAN, Gateways, prototipos y visualización de datos estarán enfocados a ese modo
el capítulo anterior hablamos de los nodos sus tipos, clases y conexiones. En esta ocasión hablaremos de los gateways este componente es el concentrador al que se conectan todos los dispositivos en una red LoRaWAN
Al igual que en un red wifi el router se encarga de recibir y enviar a internet la información de nuestras computadoras y viceversa cuando recibe información desde internet. El Gateway se encarga de comunicarse de forma bidireccional vía LoRa con los nodos finales.
Prototipo Picocell Gateway
Lo primero que debes saber es que hay una gran variedad de gateways en el mercado y con ello una gran variedad de características diferentes entre ellos, pero hay unas que casi siempre comparte y son: •
•
•
•
Para América y Europa chip SX301 (para 915 y 868 MHZ) 8 canales de recepción simultánea 1 canal de transmisión Sistema operativo basado en Linux
Gateway single channel
Hay un tipo de gateway llamado single channel que se caracteriza por tener solo un canal de escucha comparado contra los otros que tienen 8, este tipo de gateway solo se recomienda para las personas que van iniciando y para hacer pruebas de concepto, ya que tanto el chip como el procesador, no soportan una gran cantidad de nodos.
¿Cuántos nodos puede soportar un gateway? Eso depende del tipo y modelo del gateway, pero un aproximado (no garantizo) es de 62,500 nodos enviando información una vez al día o 1,000 nodos enviando información cada 30 segundos.
En beeLAN contamos con 3 diferentes kits de gateway, listados continuación: Básico: Creado para personas con bajo presupuesto que desean experimentar y conocer las bondades de una red LoRaWAN. Developer: Creado para personas y empresas que desean implementar una red privada LoRaWAN pequeña. SmartCities: Creado para empresa o gobiernos que desean conectar ciudades, lugares rurales o grandes empresas con una red LoRaWAN. Todos los kits incluyen: •
•
Gateway Cable
•
•
2 nodos de prueba Pre—configuración para trabajar con BeeLAN
Si quieres más informacion o costos puedes contactarnos, seguro tendremos una solución adecuada a tu problema. En nuestro siguiente post les mostrare como crear un prototipo con LoRaWAN, los componentes necesarios y bibliotecas para crear firmware, en esta ocasión usare como plataforma base Arduino.
Haciendo IoT con LoRa: Capitulo 4.- Creando un prototipo (Capítulo anterior: Capitulo 3.- Tipos de Gateways ) Importante: Si llegas acá por primera vez, empieza aquí. ¡No te adelantes! Una vez que ya conocemos todas las parte de una red LoRaWAN es momento de mostrarles como crear un nodo, cuales son las principales herramientas que se utilizan para crearlo físicamente y en firmware, para este ejemplo utilizaremos la plataforma de desarrollo Arduino, pero varios de estos conceptos se pueden aplicar en otras plataformas como mbed, pic u otras similares.
Chip LoRa El principal chip que se usa en America para LoRa es el SX1272 que contiene el transceptor, al ser muy pequeño este chip regularmente lo vamos a encontrar en módulos más grandes que ya incluyen todos los componentes necesarios para que el chip trabaje correctamente. Quiero aclarar que puedes encontrar el chip en su forma más simple y así crear tu producto final, pero para iniciar yo recomiendo utilices las siguientes versiones:
RFM95 El RFM95 es un módulo chino creado RFHope con el cual tendrás todo lo necesario para conectar un SX1272 a un microcontrolador por medio de comunicación SPI
RFM95
Este es uno de los modulos mas económicos que podrás encontrar en el mercado, haciendo lo excelente para iniciar de una forma economica, una de las principales ventajas es que tienes acceso completo a los DIO de chip esto garantiza que puede ser cualquier tipo clase de nodo A, B o C. Tener en cuenta que este modulo trabaja a 3.3v y no es tolerable a 5v
Pinout RFM95
Algunas tarjetas que puedes encontrar en el mercado que cuentan con este chip es el adafruit feather que puede encontrar en versiones con Atmega32u4 o SAMD
Adafruit feather RFM95
Si lo tuyo es el arduino UNO y quieres encontrar una tarjeta mexicana, puedes encontrar el shield para Arduino “LoraCatShield” disponible en Tindie
LoRaCatShield para Arduino UNO
RN2903A El RN2903A es un módulo creado por microchip que cuenta con certificación FCC y se controla por medio de comunicación serial, internamente tiene un PIC de la familia 18 y un Sx1272. Este chip tiene un costo un poco superior al RFM95 pero al tener una certificación FCC se garantiza el correcto funcionamiento en la frecuencia de los 915Mhz.
Este modulo lo puede encontrar tambien en algunas breakboard listo para conectar a un arduino o cualquier microcontrolador.
Incluso si lo tuyo es raspberry pi y quieres encontrar una tarjeta mexicana, puedes encontrar el hat para raspberry pi zero del buen Jose Navarro
Algo interesante de este chip es que recientemente microchip acaba de sacar el SDK de desarrollo para programar el PIC interno y no tener que utilizar un microcontrolador externo, esto es algo que estamos haciendo ya en Electronic Cats.
Como les comente al inicio en este punto hablare de como utilizar los modulos anteriormente mencionados con Arduino aunque estos mismo ejemplos pueden servir de base para comprender como configurar un sistema embebido en LoRaWAN.
LMIC + RFM95 Esta biblioteca originalmente fue creada por IBM y después fue portada para Arduino donde actualmente esta a cargo de matthijskoooijman (un gran contribuidor del repositorio de Arduino oficial) esta biblioteca se utiliza en conjunto con el modulo RFM95. matthijskooijman/arduino-lmic arduino-lmic - LoraWAN-in-C library, adapted to run under the Arduino environmentgithub.com
Puedes encontrar ejemplos de uso de esta biblioteca para trabajar en los 915Mhz y con la red Beelan en el siguiente repositorio de Electronic Cats. ElectronicCats/beelanworkshop beelanworkshop - Examples basic Beelangithub.com
Para cualquier duda sobre los ejemplos puedes abrir un issue y con gusto te responderan.
RN2903 o RN2483 Para el modulo RN2903 existen dos bibliotecas populares la oficial de TheThingsNetworks que esta especialmente creada para trabajar con su tarjeta oficial, pero están agregando características para hacerla universal. Algo interesante de esta biblioteca es que incluye low power payload de Cayenne un “estándar” para enviar de manera optimizada informacion en redes de bajo consumo y largo alcance. TheThingsNetwork/arduino-device-lib arduino-device-lib - Arduino Library for TTN Devicesgithub.com
Otra biblioteca es la de jpmeijers que nos tambien controlar los chips RN2xx3, esta biblioteca tiene algunas diferencias en comparación a la de TTN ya que fue pensada para usos mas genericos, pero en general funcionan casi igual jpmeijers/RN2483-Arduino-Library RN2483-Arduino-Library - Arduino C++ code to communicate with a Microchip RN2483 modulegithub.com
Ademas de tener su repositorio en github cada una de esta bibliotecas puedes encontrarlas en el manager de bibliotecas de arduino directamente con sus respectivos ejemplos.