Archivo de la categoría: IoT

Plataformas Cloud Públicas

Las plataformas de IoT son plataformas SW que reciben los datos datos recogidos por nuestros sensores y luego son enviados por los microcontroladores y que se alamacenan, además de dar otros servicios. Pueden ser plataformas de terceros o plataformas propias desarrolladas por nosotros.

Estas plataformas tienen un HW y el SW que pueden usar estas tecnologías:

  • Virtualización, las plataformas SW pueden estar virtualizadas generalmente por motivos de escaliabilidd.
  • Bases de Datos, principalmente nosql como Mongo DB, RavenDB, cassandra y otras muchas. Big Data.
  • Tratamiento de big data con Hadoop o spark
  • Plataformas propias como Amazon AWS que tiene para IoT https://aws.amazon.com/es/iot/
  • Google cloud platform: https://cloud.google.com/solutions/iot/
  • Google Weave, es una plataforma de comunicaciones para IoT
  • IBM blue Mix http://www.ibm.com/cloud-computing/bluemix/
  • Desarrollo con Microsoft Azure
  • Desarrollo de software de plataformas webs con .NET, php, javascript, python, django, node.js
  • Scadas industriales, scadas en la nube o scada as a service

Por el contrario se pueden instalar plataformas privadas en nuestras propias instalaciones sin acceso desde Internet, algunos ejemplos:

Plataformas IoT para makers: https://www.sparkfun.com/news/2413

Guía de plataformas IoT: https://www.ibm.com/developerworks/library/iot-lp101-why-use-iot-platform/index.html

Elegir plataforma IoT: https://ricveal.com/blog/plataformas-iot/

Arquitectura de una plataforma IoT:

Listado de algunas plataformas IoT:

Anuncios

Ecosistema IoT

¿Cómo Conectar a Internet una Tostadora?

Veamos un resumen de los elementos que necesitamos para conectar un dispositivo a Internet y hacer un proyecto de IoT completo.

Supongamos que quiero conectar mi tostadora a Internet y hacer un sistema que conecte mi coche con la tostadora y cuando me acerque a casa ponga en funcionamiento la tostadora y además me informe en el móvil que la tostadora se pone un funcionamiento y me indique la temperatura de la tostadora.

Lo primero que necesito es un sensor para medir la temperatura y un actuador que encienda la tostadora. Para poder leer el sensor y poder manejar el actuador necesitaré un microcontrolador con entradas (sensor) y salidas (actuador), por ejemplo, un Arduino.

Ahora ya puedo leer los datos de la tostadora y encenderla, el siguiente paso es conectarla a Internet.

Primero necesito acceso a Internet (conectividad), puedo usar ethernet, pero ¿Quien tiene una toma de red en la cocina?

Mejor usando comunicaciones inalámbricas como: wifi, bluetooth, redes móviles, XBee, etc…

Una vez tenemos conectividad, necesitamos un protocolo de comunicación para comunicar los datos y las órdenes entre los distintos dispositivos.

  • HTTP REST

  • MQTT

Supongamos tenemos nuestra tostadora con un Arduino integrado y un chip WiFi. Hay dos formas en la que pueden hablar entre el geolocalizador del coche y nuestra tostadora.

  • Tener uno de los dispositivos trabajando como servidor con una dirección IP, de forma que el otro dispositivo se pueda conectar en cualquier momento.
  • Tener un tercer servidor y tanto la tostadora como el coche se conecten al servidor y este mande mensajes a uno y otro.

La opción 1 es la más barata al no necesitar un elemento extra, pero al menos uno de los dispositivos necesita una IP pública conocida y fija, además hay que abrir puertos en el router de casa lo que supone una dificultad adicional y un punto más en la seguridad.

En la opción 2 el servidor maneja los mensajes, en el caso de MQTT se trata del broker. Es un elemento neutral al que las “cosas” se pueden conectar para enviar y recibir mensajes.

Adicionalmente podemos tener una plataforma que almacene datos y luego podamos visualizarlos, analizarlos, hacer cuadros de mando o interactuar con otras plataformas o servicios de terceros.

Elementos que Intervienen en el Ecosistema IoT

Explicación gráfica de los elementos necesarios en IoT: http://www.libelium.com/products/meshlium/wsn/

En resumen, al hacer un proyecto IoT debemos hacernos estas preguntas:

  • Qué quieres medir?
  • Cómo lo quieres conectar?
  • Qué quieres hacer con los datos?

Elementos en IoT:

  • Plataformas Software, para tratar los datos recogidos por nuestros sensores y almacenarlos. Pueden ser plataformas de terceros o plataformas propias desarrolladas por nosotros o simplemente guardar en BBDD propias. Por ejemplo: Carriots, Thingspeak, Temboo, Thinger, etc…
    Además todas estas plataformas SW que están en la nube, deben estar soportadas por un HW de servidores, unas BBDD de gran capacidad y una infraestructura segura que los hospede.
  • Servicios, son los servicios que ofrecen las plataformas como mostrar los datos recogidos, mandar avisos cuando se detecte un evento o la interconexión con otras plataformas o simplemente. Servicios ofrecidos por la plataforma carriots: https://www.carriots.com/que-es-carriots

Sensor — MCU — Comunicación — Protocolo — Plataforma — Servicios

Uno de los retos del IoT es mandar datos de cualquier sensor a través de cualquier protocolo a cualquier plataforma de forma inalámbrica y usando la menor energía posible para uso de baterías

Cadena de valor de IoT:

recoger datos — conectar — almacenar — analizar — mostrar — actuar — predecir

Mapa de IoT:

Mapa más complejo de IoT (imagen de la plataforma IoT de IBM):

Arduino IoT Manifesto: https://www.edn.com/electronics-blogs/eye-on-iot-/4441804/Arduino-s-IoT-Manifesto

“We believe that the best way to grow this environment is to develop open source platforms and protocols to propose as an alternative to the myriad of proprietary hardware and software platforms each one of the big players are developing.

We believe in creating tools that make these technologies understandable to the most diverse set of people as possible, this is the only way to make sure innovation benefits most of humanity.

We propose that connected devices should be: Open, Sustainable and Fair.”

“We foresee a world with billions of connected smart objects. These smart objects will be composed and orchestrated, thus making the Internet of Things a reality. The IoT will be the eyes, noses, arms, legs, hands of a new, extended, cyber body. The nervous system of such a body will be the Internet, allowing the interaction with a distributed intelligence made of hardware processors and human minds, behaviors, software procedures, and services, shared in the Cloud.”

Arduino cree que mediante la creación de nuevos productos conectados con software, hardware y protocolos de comunicación de código abierto podemos crear un entorno más innovador para fabricantes, empresarios y corporaciones. Al ofrecer a los usuarios la posibilidad de compartir su trabajo de forma más abierta, compartimos desafíos, resolvemos problemas y creamos juntos productos mejor conectados. Estamos seguros de que un enfoque abierto y compartido para el diseño de software, protocolos y hardware es la mejor solución.

¿Qué es IoT?

Internet de las cosas (en inglés Internet of things, abreviado IoT) es un concepto que se refiere a la interconexión digital de objetos cotidianos con Internet. En el caso que queramos interconectar los elementos de una empresa o una Industria es lo que se denomina IIOT (Industrial Internet of Things) o Industria 4.0

Definición de wikipedia:

¿Qués Internet de las Cosas?: http://www.ticbeat.com/tecnologias/que-es-el-internet-de-las-cosas/

Arduino y Raspberry Pi son dos elementos muy populares y abiertos que nos permiten de forma sencilla y económica conectar cualquier cosa a Internet. Con un Arduino y un sencillo módulo ethernet o wifi podemos conectar a Internet sensores para informar, controlar motores o bombillas desde cualquier parte del mundo o mandar un SMS o email cada vez que se abra la puerta de casa. Con una Raspberry Pi disponemos de un ordenador de bolsillo fácilmente conectable a Internet y que puede ejecutar tareas automatizadas, almacenar datos, mostrar información o hacer de pasarela para conectarnos a otras ubicaciones o dispositivos remotos.

Arduino y Raspberry Pi se ha convertido una figura destacada e incluso unos de los impulsores del IoT y no por casualidad, sino que  por sus características son HW con gran capacidad para usar en proyectos de IoT.

Características de Arduino y Raspberry Pi para IoT

  • Barato y rápido prototipado.
  • HW libre y por lo tanto es modificable para que consuma menos y para hacer un HW final de características industriales.
  • Disponibilidad de HW de comunicaciones de todo tipo para conectar con Arduino. Nuevas tecnologías de comunicación llegan antes que para elementos comerciales
  • Librerías y SW público para su reutilización o adaptación.
  • Flexibilidad en la programación.
  • Apoyo de la comunidad.

Intersante web con publicaciones sobre IoT: https://iot-analytics.com/

Como afecta IoT a nuestro dia a dia: http://socialgeek.co/tecnologia/8-formas-que-the-internet-of-things-impactara-dia-dia

IoT en 5 minutos con Arduino: http://hackaday.com/2016/01/08/internet-of-things-in-five-minutes/

Aplicaciones de IoT: https://temboo.com/iot-applications

7 Leccciones sobre IoT: https://www.greenbiz.com/article/7-essential-lessons-about-internet-things

Temboo es una plataforma de IoT que nos permite conectar fácilmente mediante una API un Arduino o una Raspberry Pi para interactuar con ellos desde un navegador web e interconectar con servicios de terceros como correo, visualización de datos o machine learning: https://temboo.com/platform, combinando tecnologías para asumir cualquier reto de ingeniería.

Una visión del IoT aplicado a la industria es lo denominado como Industria 4.0 o Industria conectada o IIoT que deriva del concepto de M2M (machine to machine) que se refiere al intercambio de información o comunicación en formato de datos entre dos máquinas remotas sin necesidad de conexión a Internet sino que puede ser en una red privada y crear una industria inteligente donde todos los elementos están interconectados y comparten los datos.

Definiciones de wikipedia:

Diferencias entre IoT y M2M: https://www.pubnub.com/blog/2015-01-02-iot-vs-m2m-understanding-difference/

El coche autónomo, en el que trabajan grupos como Google, BMW, Volvo o Tesla, es toda una proeza de la robótica.La conducción autónoma se basa en las comunicaciones máquina a máquina (M2M), por las que los vehículos pueden intercomunicarse con las señales, los semáforos y los otros automóviles. Todo esto también tiene mucho que ver con las smart cities.

Interesantes artículos de Basic IoT:

Reflexiones de David Cuartielles sobre IoT en base a un paper de IBM: https://vimeo.com/299112221

Mercados Verticales IoT

En este curso vamos a ver IoT desde un punto general para poder ser aplicable en cualquier sector, pero cuando se va a acometer un proyecto IoT suele ser adecuado hacer un enfoque vertical en función del sector en el que se vaya a aplicar puesto que cada sector tienen unas características concretas.

Conceptos como Industria 4.0, Smart Cities, Agricultura 2.0, Smart Home, Smart factory, etc… al final son etiquetas y en lugar de especializarse en áreas tecnológicas como sensores, comunicaciones, protocolos, sistemas, etc… pensamos como especialistas de sectores porque un mismo concepto como el de IoT se puede aplicar a muchos sectores de de una forma distinta.

El vino y el IoT http://www.elmundo.es/economia/2016/11/03/5819d37346163f9c528b45c9.html

Visión horizontal IoT

Algunos mercados verticales IoT:

  • Salud
  • Retail
  • Construcción
  • Gobierno/Servicios Públicos/Smart Cities
  • Manufactura y Cadena de Suministro
  • Industria
  • Automoción
  • Logística/Transporte/Almacenes
  • Agricultura
  • Energía/Smart Metering
  • Hogar Inteligente/Domótica/Inmótica
  • Hoteles/Turismo
  • eHealth/Deporte

Encuesta: https://www.forbes.com/sites/louiscolumbus/2016/11/27/roundup-of-internet-of-things-forecasts-and-market-estimates-2016/#28e2ea4d292d

¿Que Dispositivos podemos conectar a Internet?

La respuesta es: Cualquier cosa que podamos imaginar.

IoT en su amplio concepto es conectar a Internet cualquier cosa, teniendo sentido o sin tenerlo. Por ejemplo, podríamos conectar a internet un sofá con un Arduino y unos pocos sensores, este sofá podría tuitear que nos acabamos de sentar a ver nuestra serie favorita, simplemente detectando el peso de la persona y conectándose a una API de un servidor de streaming como netflix y comprobando que acabo de poner un capítulo de westworld.

Puede parecer una idea sin sentido, pero esta idea para Netflix podría ser muy interesante, monitorizar a la gente que ve su canal, cuántas veces se levanta el espectador o si se queda dormido.

Un ejemplo más serio de IoT es aplicar las nuevas tecnologías a elementos cotidianos que no imaginarías que tuviera sentido conectar a Internet, pero que pensándolo puede ser muy útil. Por ejemplo, pensemos en conectar a Internet un cortacésped. Con un Arduino podríamos conectar diversos sensores de temperatura del motor, temperatura externa, revoluciones del motor, consumo eléctrico (cortacésped eléctricos), gps, logs, etc… que podrían ser mandados a una plataforma del fabricante y le permitiría analizar esos datos para mejorar sus futuros productos o detectar avería de forma precoz. Podría mandar una desconexión remota en caso que en una determinada partida de fabricación se haya detectado un fallo que podría provocar daños al usuario o actualizar on-line el firmware si se detecta un fallo sin necesidad de llevar al servicio técnico.

Ejemplos de cortacesped conectados:

También podemos conectar a Internet un bastón o una botas de seguridad:

Otra aplicación de IoT usando Arduino o Raspberry Pi como herramienta, es la de obtener información externa disponible mediante APIs del open data. Un ejemplo es el de un sistema de riego automático que podemos tener en una ciudad. En los inicios de la automatización se usaron programadores conectados a una electroválvula donde indicamos las horas entre las que deseamos regar. El siguiente paso fue poner detectores de lluvia para no regar si estaba lloviendo. Otro paso fue poner sensores de temperatura y humedad ambientales y sensores de humedad de suelo que nos indican cuándo debemos regar y en qué áreas de la ciudad.

El paso más avanzado que ofrece el IoT es poder conectar todo este sistema, ya de por sí muy eficiente, a los opendata meteorológicos disponibles en Internet como el de la aemet http://www.aemet.es/es/datos_abiertos/AEMET_OpenData y que nuestro sistema obtenga datos de prediciones meteorológicas y decida no regar si la predicción de lluvia es mayor del 80% en los próximos dos días o simplemente ajustar el algoritmo de riego en función los valores de los sensores + es de los datos meteorológicos. También puede recibir alertas de tormenta o pedrisco y tomar determinadas acciones o simplemente mandar un email o SMS al propietario del huerto. ¿Podríamos hacer esto con un sistema comercial?

Esto podría extenderse a explotaciones agrícolas usando un servicio como el sistema de información agroclimática de La Rioja:

Un ejemplo práctico de esto es el proyecto Aggrofox:

Aggrofox: IoT sensing, notifications and analytics platform for urban and large-scale agriculture with automated irrigation, using Sigfox technology: https://www.hackster.io/107329/aggrofox-large-scale-and-urban-agriculture-iot-solution-8155fe

IoT no es que un coche se pueda conectar a Internet para ver videos de youtube, sino que este coche esté conectado a Internet para que pueda actualizar su firmware automáticamente para dotar de nuevas funcionalidades sin necesidad de ir al concesionario, pueda ser inmovilizado en caso de robo o pueda mandar datos de los parámetros internos del coche para que sean analizados y poder detectar alertas precoces de fallo y actualizar automáticamente ese fallo sin que el usuario tenga que hacer nada o avisar al usuario para que lleve el coche a reparar y parar el coche si el usuario no ha llevado a revisión al cabo de unos kms para evitar males mayores.

Interesantes reflexiones sobre IoT:

Ejemplo de Aplicaciones IoT

El conectar dispositivos a Internet puede tener muchos usos y aplicaciones que hasta ahora no hubiéramos imaginado.

Aplicaciones de IoT: https://temboo.com/iot-applications

Algunos ejemplos

  • Monitorización en Tiempo real
  • Avisos precoces
  • Control remoto de instalaciones
  • Eficiencia energética
  • Automatización de procesos
  • Automatización de informes/Cuadros de mando
  • Mantenimientos Predictivos
  • PRL (Prevención de Riesgos Laborales)
  • análisis de datos (data mining, etc…)
  • Monitorización y notificación
  • Business intelligence (detectar problemas comunes, medir cuellos de botella, etc…) y ayudar en el mantenimiento predictivo.
  • Integrar con el software corporativo. ERP, CRM, GMAO (Gestión del Mantenimiento Asistido por Ordenador), CMMS
  • Recoger datos y tenerlos en tiempo real por ejemplo datos para sanidad en cámaras frigoríficas.
  • Automatizar todo el papeleo siendo recogidos los datos y guardados y generados los informes.

¿Qué otras aplicaciones tenéis?

Saber más de IoT…

Día 10: “Plataformas IoT”

  • Arduino Day 2019: 16 de marzo de 2019

Capítulos vistos día 10:

Capítulos no vistos:


Día 1: “Presentación del Curso”

Qué es IoT y Taller impartido en el Arduino Day 2017

¡¡IMPORTANTE!! – Traer lector de tarjetas microSC

Capítulos vistos día 1:

Día 2: “Arduino en IoT”

Capítulos vistos día 2:

Día 3: “Raspberry Pi en IoT”

IoT y prevención de riesgos laborales: http://www.cepymearagon.es/?p=9743

Capítulos vistos día 3:

Día 4: “Instalación SW en Raspberry Pi”

ESTADO DEL MATERIAL KIT RASPBERRY PI

Tecnologías Maduras: Hardware y Software

Gateway de http a https para Arduino con una Raspberry Pi. Miguel.

Gateway LoRa de Arduino: https://blog.arduino.cc/2018/11/14/arduino-pro-gateway-for-lora-now-available-for-pre-order/. Producto: https://store.arduino.cc/arduino-pro-gateway

Actualización firmware bluetooth para Arduino MKR WiFi 1010: http://forum.arduino.cc/index.php?topic=579306.0

Unipi: https://www.unipi.technology/

Conectapro:

ESP32 LoRa OLED Display Bluetooth WIFI: https://es.aliexpress.com/item/868-MHz-915-MHz-SX1276-ESP32-LoRa-0-96-pulgadas-pantalla-OLED-azul-Bluetooth-WIFI-Lora/32836591865.html

  • Transceiver: SX1276
  • Pantalla OLED

Wemos® TTGO T-Beam ESP32: https://www.banggood.com/es/Wemos-TTGO-T-Beam-ESP32-433868915Mhz-WiFi-Wireless-Bluetooth-Module-p-1320390.html

Capítulos vistos día 4:

Día 5: “Protocolo HTTP”

Resumen primera semana y la próxima semana nos centraremos en MQTT y plataformas IoT.

  • MySQL manejar privilegios de usuarios:
    • GRANT ALL PRIVILEGES ON *.* TO ‘pi’@’%’;  (Para acceso remoto)
    • GRANT GRANT OPTION ON *.* TO ‘pi’@’localhost’; (Privilegios para dar permisos a otros usuarios)
    • Para conectarnos desde otro servidor: mysql -h ip_raspberry -u root -p

Capítulos vistos día 5:

Día 6: “Mosquitto”

Esta semana: MQTT + ESP8266 + Plataformas IoT púbicas

¿Otros temas de interés?

Todo lo instalado en Raspberry Pi se puede instalar en un servidor en la propia empresa o en la nube.

Inventario de material Raspberry Pi

Algunos transcievers LoRa:

Librería LMIC solo para módulos SX1272, SX1276 y módulos compatible como RFM9x:

Capítulos vistos día 6:

Día 7: “Protocolo MQTT y Sensores”

Capítulos vistos día 7:

Día 8: “Node-RED”

Resultado de imagen de mqtt frame format

Capítulos vistos día 8:

Día 9: “LoRa y Moteino”

Capítulos vistos día 9:

Arduino y LoRaWAN

Arduino MKR WAN 1300

MKR WAN 1300 es una placa potente que combina la funcionalidad de la conectividad MKR Zero y LoRa. Es la solución ideal para los fabricantes que desean diseñar proyectos de IoT con una mínima experiencia previa en redes que tengan un dispositivo de baja potencia.

La placa MKR WAN 1300 tiene comunicación inalámbrica unido a un diseño de la placa MKR Zero Board, es decir, que tendremos soporte para aplicaciones de 32 bits. La placa cuenta con 256KB de Memoria flash y 32KB SRAM. Puede funcionar con la energía de dos pilas de 1,5V y todo en un tamaño de 67,64 x 25mm. Al tener comunicación inalámbrica, el dispositivo al que se conecte tendrá opción de comunicarse a Internet.

El MKR WAN 1300 usar el módulo Murata CMWX1ZZABZ Lo-Ra module que lleva el transceiver Semtech SX1276:

Más información: https://store.arduino.cc/mkr-wan-1300

Buen artículo para sobre el MKR 1300: http://tinkerman.cat/arduino-mkr-wan-1300/

Moteino

Moteino es una plataforma de desarrollo compatible con Arduino inalámbrica de baja potencia basada en el popular chip ATmega328p utilizado en el Arduino-UNO, lo que lo hace 100% compatible con el IDE de Arduino (entorno de programación).

Para la programación, necesitará un adaptador FTDI externo para cargar los sketchs, con las ventajas de un menor costo y un tamaño más pequeño. La variante MoteinoUSB incluye el convertidor de serie USB.

Los Moteinos son compatibles y se pueden comunicar con cualquier otra plataforma Arduino o de desarrollo que utilice los populares transceptores HopeRF RFM69 o LoRa. Moteino también viene con un chip de memoria flash SPI opcional para programación inalámbrica o registro de datos.

Web Moteino: https://lowpowerlab.com/guide/moteino/

Moteino fue diseñado para ser una plataforma de desarrollo compacta, altamente personalizable y asequible, adecuada para IoT, domótica y proyectos inalámbricos de largo alcance. Estas son algunas de las características que distinguen a Moteino:

  • diseño modular pequeño y ligero que se adapta a recintos minúsculos
  • las configuraciones flexibles permiten el uso de varios transceptores inalámbricos
  • potencia realmente ultra baja: con tan solo ~ 2uA alcanzables en el modo de suspensión profunda, los Moteinos permiten que los proyectos con batería, como los sensores inalámbricos de movimiento/entorno, funcionen durante años. El modo de suspensión de Watchdog está en ~ 6uA (activación periódica). El nuevo 8Mhz Moteino permite el modo de sueño 100nA más bajo posible
  • Las radios sub-Ghz y LoRa producen un rango mucho más largo que las bandas de 2.4Ghz
  • programable de forma inalámbrica: puede volver a flashearlo sin cables, cuando se implementa en ubicaciones difíciles (solo con radios RFM69)
  • fácil de usar desde el familiar IDE Arduino, muchos ejemplos de código brindados para ayudarlo a comenzar

Pinout:

Los transceiver soportados por Moteino son:

Transceiver Datasheets

Muy buena explicación de los módulos de Adafruit: https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-breakouts/overview

Librería para los módulos RFM69: https://github.com/LowPowerLab/RFM69

IMPORTANTE: Los módulos RFM69 no son LoRa y no son compatibles con los módulos RFM95/RFM96. Además los módulos RFM95/RFM96 necesitan de una librería de terceros.

Más información RFM69:

Uso con Lora: https://lowpowerlab.com/guide/moteino/lora-support/

Librería para los módulos LoRa RFM95 (868-915mhz) and RFM96 (433mhz).: http://www.airspayce.com/mikem/arduino/RadioHead/index.html

Getting started para instalar el soporte y las librerías: https://lowpowerlab.com/guide/moteino/programming-libraries/

Github: https://github.com/LowPowerLab y Librería: https://github.com/LowPowerLab/Moteino

Comprar Moteino:https://lowpowerlab.com/shop/

Moteino weather shield: https://lowpowerlab.com/2016/09/09/weathershield-r2-released/ with a BME280 which includes all Temperature/Humidity/Pressure readings all in 1 sensor.

Moteino PowerShield: https://lowpowerlab.com/guide/powershield/

Gateway LoRa con Moteino + Raspberry Pi:

Dragino

En Dragino http://www.dragino.com/ podemos encontrar Hardware para LoRa: http://www.dragino.com/products/products-list.html

Wiki: http://wiki.dragino.com/index.php?title=Main_Page

La librería recomendada es: https://github.com/matthijskooijman/arduino-lmic, pero puede usarse la librería Radiohead: http://www.airspayce.com/mikem/arduino/RadioHead/

LoRa Shield:

Otro HW LoRa compatible con Arduino

Existen más HW de desarrollo compatible con Arduino con módulos LoRa diferentes:

Gateways LoRa

En las redes LoRaWan un gateway es un dispositivo dentro de la arquitectura de red que recibe los datos transmitidos por un dispositivo de nodo final y que reenvían los paquetes de datos a un servidor de red centralizado. Los datos de un nodo final LoRa pueden ser recibidos por múltiples puertas de enlace (gateway),

Los gateways o puertas de enlace son un puente transparente entre los dispositivos finales y el servidor de red central. Uno o más dispositivos finales se conectan a una o más puertas de enlace, mediante una conexión inalámbrica de un solo salto, usando tecnología RF LoRa™ o FSK, formando así una red en estrella.

Una o más puertas de enlace se conectan al servidor de red central por medio de conexiones IP estándar, formando así una red en estrella. Las comunicaciones entre los dispositivos y el servidor de red, son generalmente unidireccionales o bidireccionales, pero el estándar también soporta multidifusión, permitiendo la actualización de software en forma inalámbrica, u otras formas de distribución de mensajes en masa.

Los gateways son enrutadores equipados con un concentrador LoRa, lo que les permite recibir paquetes LoRa. Por lo general, puede encontrar dos tipos de puertas de enlace:

  • Las pasarelas se ejecutan con un firmware mínimo, por lo que son de bajo costo y fáciles de usar (por ejemplo, The Things Gateway) y solo ejecutan el software de reenvío de paquetes.
  • Gateways que ejecutan un sistema operativo, para el cual el software de reenvío de paquetes se ejecuta como un programa de fondo (por ejemplo, Kerlink IoT Station, Multitech Conduit). Esto le da más libertad al administrador del gateway para administrar su puerta de enlace e instalar su propio software.

Una forma de montar un gateway LoRa barato es con una Raspberry Pi y un hat de Moteino con un módulo LoRa:

Un gateway simple con LoPy: https://www.hackster.io/bucknalla/lopy-lorawan-nano-gateway-using-micropython-and-ttn-a9fb19

Construir un gateway LoRa barato: http://cpham.perso.univ-pau.fr/LORA/RPIgateway.html

Módulos LoRa para conectar un ordenador y haga de gateway: https://www.cooking-hacks.com/waspmote-gateway-sx1272-lora-sma-4-5-dbi-868-mhz y tutorial LoRa gateway Libelium: http://www.libelium.com/development/waspmote/documentation/lora-gateway-tutorial/

Lista de gateways de loriot: https://www.loriot.io/lora-gateways.html

The things gateway: https://www.thethingsnetwork.org/docs/gateways/gateway/

The Things Gateway permite que dispositivos como sensores y computadoras integradas se conecten a internet. Con un proceso fácil de conectar, está creando el aspecto más sustancial de su red de datos IoT. Active la puerta de enlace en solo 5 minutos y cree su propia red local. Con la capacidad de servir a miles de nodos, la puerta de enlace es el componente principal de su red conectada. Esta versión funciona a 868MHz para uso en la UE y 915Mhz para uso en los EE.UU.

Lista de gateways de thethingsnetwork:

Gateway draguino (open wrt): http://www.dragino.com/products/lora/item/119-lg01-s.html

Ejemplo con Dragino para usarlo como gateway (Lora Shield + Arduino Yun Shield):

Más información:

Librería RadioHead LoRa

Una de las librerías más usadas para módulos LoRa con Arduino es RadioHead: http://www.airspayce.com/mikem/arduino/RadioHead/index.html

Proporciona una biblioteca completa orientada a objetos para enviar y recibir mensajes paquetizados a través de una variedad de radios de datos comunes y otros transportes para microprocesadores integrados.

RadioHead consta de 2 grupos principales de clases: driversy managers.

  • Los drivers proporcionan acceso de bajo nivel a un rango de diferentes radios y otros transportes de mensajes paquetizados.
  • Los managers brindan servicios de envío y recepción de mensajes de alto nivel para una variedad de requisitos diferentes.

Cada programa de RadioHead tendrá una instancia de un driver para proporcionar acceso a la radio o transporte de datos, y generalmente un manager que usa ese driver para enviar y recibir mensajes para la aplicación. El programador debe instanciar un driver y un manager e inicializar el manager. A partir de entonces, las funciones del manager se pueden usar para enviar y recibir mensajes.

También es posible usar un driver por sí mismo, sin un manager, aunque esto solo permite un transporte no confiable y sin dirección a través de las funciones del driver.

Se admite una amplia gama de plataformas de microprocesadores.

Unos ejemplos de drivers:

  • RH_RF69 Works with Hope-RF RF69B based radio modules, such as the RFM69 module
  • RH_NRF24 Works with Nordic nRF24 based 2.4GHz radio modules, such as nRF24L01 and others.
  • RH_RF95 Works with Semtech SX1276/77/78/79, Modtronix inAir4 and inAir9, and HopeRF RFM95/96/97/98 and other similar LoRa capable radios. Supports Long Range (LoRa) with spread spectrum frequency hopping, large payloads etc.
  • RH_Serial Works with RS232, RS422, RS485, RS488 and other point-to-point and multidropped serial connections, or with TTL serial UARTs such as those on Arduino and many other processors, or with data radios with a serial port interface. RH_Serial provides packetization and error detection over any hardware or virtual serial connection. Also builds and runs on Linux and OSX.
  • RHEncryptedDriver Adds encryption and decryption to any RadioHead transport driver, using any encrpytion cipher supported by ArduinoLibs Cryptogrphic Library http://rweather.github.io/arduinolibs/crypto.html

Managers, cualquier manager puede usarse con cualquier driver:

  • RHDatagram Addressed, unreliable variable length messages, with optional broadcast facilities.
  • RHReliableDatagram Addressed, reliable, retransmitted, acknowledged variable length messages.
  • RHRouter Multi-hop delivery of RHReliableDatagrams from source node to destination node via 0 or more intermediate nodes, with manual routing.
  • RHMesh Multi-hop delivery of RHReliableDatagrams with automatic route discovery and rediscovery.

Esta librería es compatible entre otros con:

Para los módulos con moteino que se ha usado en la demo, son necesarios los drivers: http://www.airspayce.com/mikem/arduino/RadioHead/classRH__RF95.html

Si se quiere añadir una capa de seguridad debe usarse la clase: http://www.airspayce.com/mikem/arduino/RadioHead/classRHEncryptedDriver.html

Si se quiere usar direccionamiento debe usarse la clase: http://www.airspayce.com/mikem/arduino/RadioHead/classRHDatagram.html

IMPORTANTE PARA MODULOS LORA, la librería está configurada por defecto a 434: Check if you have set the right frequency:After putting the library in the right place, you have to also modify the frequency to the frequency you want to use, the position of this issetFrequency() in the file: arduino-xxx\libraries\RadioHead\RH_RF95.cpp;

Para los módulos RFM95 de moteino debe ponerse: setFrequency(868.0);

He hecho un fork de la librería con la modificación para módulos LoRa: https://github.com/jecrespo/RadioHead

Proyecto LoRa con Moteino

A la hora de afrontar un proyecto con LoRa para monitorizar un entorno donde no tenemos acceso a una red ethernet/wifi ni toma eléctrica, podemos planteamos usar Moteino como una solución basada en Arduino de bajo consumo y con módulos LoRa integrados.

La primera duda es que módulo de radio o transceiver usar el RFM69 o RFM95:

  • RFM69 no es LoRa usa modulación FSK en lugar de la modulación LoRa
  • RFM95 es LoRa estándar.

RFM69 y RFM95 son módulos de radio para comunicación a larga distancia, donde la velocidad de transmisión no es crítica (no se hace streaming de vídeo). Al usar modulación diferente no son compatibles entre ellos.

Estos módulos de radio vienen en cuatro variantes (dos tipos de modulación y dos frecuencias). Los RFM69 son los más fáciles de usar, y son bien conocidos y entendidos. Las radios LoRa son más potentes, pero también más caros.

Comparativa y explicación de los módulos: https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-breakouts

Transceiver Moteino: https://lowpowerlab.com/guide/moteino/transceivers/

RFM69

Módulo basado en SX1231 con interfaz SPI

  • +13 a +20 dBm hasta 100 mW Capacidad de salida de potencia (salida de potencia seleccionable en software)
  • Drenaje de corriente de 50 mA (+13 dBm) a 150 mA (+20 dBm) para transmisiones, ~ 30 mA durante la escucha de radio activa.
  • Las radios RFM69 tienen un alcance de aprox. Línea de visión de 500 metros con antenas unidireccionales sintonizadas. Dependiendo de las obstrucciones, la frecuencia, la antena y la potencia de salida, obtendrá rangos más bajos, especialmente si no tiene línea de visión.
  • Crear redes multipunto con direcciones de nodo individuales
  • Motor de paquete cifrado con AES-128

Guía completa del módulo de radio RFM69: https://learn.sparkfun.com/tutorials/rfm69hcw-hookup-guide

Librería Arduino RFM69: https://github.com/LowPowerLab/RFM69

Completa información RFM69: http://www.hoperf.com/upload/rf/RFM69W-V1.3.pdf

Explicación de librería RFM69 https://lowpowerlab.com/2013/06/20/rfm69-library/

RFM95

Módulo basado en LoRa® SX1276 con interfaz SPI

  • Capacidad de salida de potencia de +5 a +20 dBm hasta 100 mW (salida de potencia seleccionable en software)
  • ~ 100mA de pico durante la transmisión de + 20dBm, ~ 30mA durante la escucha activa de la radio.
  • Las radios RFM9x tienen un rango de aprox. Línea de visión de 2 km con antenas unidireccionales sintonizadas. Dependiendo de las obstrucciones, la frecuencia, la antena y la potencia de salida, obtendrá rangos más bajos, especialmente si no tiene línea de visión.

Estos son radios de paquete LoRa de +20 dBm que tienen una modulación de radio especial que no es compatible con los RFM69 pero que puede ir mucho más lejos. Pueden ir fácilmente a la línea de vista de 2 km utilizando antenas de cable simples, o hasta 20 km con antenas direccionales y ajustes.

Completa información RFM95: http://www.hoperf.com/upload/rf/RFM95_96_97_98W.pdf

Librería: http://www.airspayce.com/mikem/arduino/RadioHead/

SX127x Datasheet – The RFM9X LoRa radio chip itself

Librería: http://www.airspayce.com/mikem/arduino/RadioHead/

Módulos Moteino Usados

Optamos LoRa porque da entre un 50% y 100% más de alcance.

LoRa support for Moteino: https://lowpowerlab.com/guide/moteino/lora-support/

Todo sobre moteino y como programarlo: https://lowpowerlab.com/guide/moteino/

Los moteino a usar con LoRa son los moteinoLR y mejor moteinoUSB-LoRa que ya tiene el interfaz USB:

Para wireless programming necesitas las flash extra: https://lowpowerlab.com/guide/moteino/wireless-programming/

Gateway

Si queremos conectar a Internet los sensores, necesitamos un gateway.

Gateway con Raspberry Pi:

Otra opción de gateway es usar un shield LoRa de dragino:

Productos de dragino: http://www.dragino.com/products/products-list.html

Cloud

Ya tenemos el nodo y el gateway, nos falta el cloud que podemos hacerlo con muchas plataformas IoT.

Thingspeak: https://thingspeak.com/