Archivo de la etiqueta: Curso IoT Open Source

Raspberry Pi en IoT

Qué es Raspberry Pi

Una Raspberry Pi es una placa de desarrollo basada en linux, pero a efectos de todos se trata de un ordenador con linux completo.

Raspberry nació con un propósito: incentivar la enseñanza de informática en el entorno docente. Es un ordenador muy pequeño, del tamaño de una tarjeta, muy económico y también muy conocido para crear prototipos. Con esta plataforma de desarrollo se gestiona una gran cantidad de datos y es especialmente atractiva para la creación de aplicaciones móviles (Apps) donde el peso de la interfaz gráfica es muy importante. Está muy indicada, además, para proyectos multimedia basados en Linux.

En 2009 se creó la Fundación Raspberry Pi en Reino Unido y dos años más tarde comenzaron a fabricarse las primeras placas prototipo. El éxito fue tan grande que los fundadores trasladaron su producción a Gales, de donde salen miles de dispositivos al día. Existen varios modelos de placas y su popularidad ha generado que salgan al mercado diversidad de accesorios que suman funcionalidades a la placa base, al igual que Arduino.

La placa Raspberry se utiliza, como Arduino, en entornos de robótica o domótica, pero también como servidor de archivos. Es otra opción dentro del IoT y es muy interesante cuando el objetivo es procesar y tratar muchos datos. Cualquiera de ellos, Arduino o Raspberry, ofrece fórmulas eficaces para multitud de proyectos, pero todavía es difícil establecer su límite al estar en constante evolución.

Pero además, la Raspberry Pi 3 viene cargada con tecnología adicional para que podamos conectar nuestros proyectos al mundo de Internet de las Cosas.

  • 11n Wireless LAN
  • Bluetooth 4.0
  • Bluetooth Low Energy (BLE)

Estas nuevas características son precisamente las que nos van a permitir cubrir nuestras necesidades de conexión de forma inalámbrica a nivel de red local LAN y acceso a Internet, gracias al WiFi, y a nivel de comunicación con sensores y actuadores, gracias al Bluetooth. La Raspberry Pi 3 nos pone en bandeja todo lo necesario para comenzar a construir proyectos para Internet de las Cosas y aprender multitud de cosas, como programación, comunicaciones, electrónica, etc.

Buena introducción a Raspberry Pi:

Más información:

Marca powered by raspberry pi: https://www.hwlibre.com/powered-by-raspberry-pi-el-nuevo-sello-de-calidad-de-raspberry-pi/

Webs importantes de Raspberry Pi:

Arduino vs Raspberry Pi

Ver: https://aprendiendoarduino.wordpress.com/2017/06/19/arduino-vs-raspberry-pi-3/

Modelos Raspberry Pi

Raspberry Pi tiene diverso hardware. Productos Raspberry Pi: https://www.raspberrypi.org/products/

Hardware: https://www.raspberrypi.org/documentation/hardware/

Hardware Guide: https://www.raspberrypi.org/learning/hardware-guide/

Más información:

Modelos:

  • Raspberry Pi (1) Model A
  • Raspberry Pi (1) Model A+
  • Raspberry Pi (1) Model B
  • Raspberry Pi (1) Model B+
  • Raspberry Pi 2 Model B
  • Raspberry Pi 3 Model B
  • Raspberry Pi 3 Model B+
  • Raspberry Pi Zero (Hay dos versiones 1.2 y 1.3)
  • Raspberry Pi Zero W
  • Raspberry Pi Compute Module
  • Raspberry Pi Compute Module 3
  • Raspberry Pi Compute Module Lite

Tablas comparativas:

GPIO

Del mismo modo que Arduino disponía de una serie de pines que podíamos conectar al mundo exterior para leer o escribir, Raspberry dispone de otra serie de pines homólogos que en la jerga habitual de la RPI se llaman GPIO (General Purpose Input Output).

GPIO: https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md

La cantidad de pines disponibles en el GPIO ha variado de unas versiones a otras, manteniendo la compatibilidad con las versiones anteriores para evitar problemas, y a grandes rasgos ha habido dos versiones de GPIO. La gran variación fue de la Raspi 1 a la Raspi 2 que aumentó el número de pines disponibles y que básicamente se pueden ver aquí:

A esta forma de numerar se le suele conocer como modo GPIO, Pero surgió otra forma de numerar no de acuerdo a la posición de los pines en la salida, sino a la posición de los pines correspondientes en el chip Broadcom que es la CPU de la Raspberry, y a esta segunda manera se la llama modo BCM.

Nos encontramos con dos formas distintas de referirse a los pines, GPIO según los números del conector externo o BCM según los pines del chip que revuelven las posiciones. No tiene por qué ser mejor una que otra pero es importante asegurarse de cuál de las dos se está usando.

Disposición de los pines en la placa:

Pinout: https://pinout.xyz/

Más información:

IMPORTANTE:Todos los IO ports son de 3.3V, así que se debe tener cuidado.

Especificaciones eléctricas del GPIO: http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications

Iconos de alerta de firmware: https://www.raspberrypi.org/documentation/configuration/warning-icons.md

Para manejar los pines de GPIO la mejor manera de usarlos es en Python mediante el uso de librerías. Veremos más adelante como usarlo en el apartado de programación y manejo.

Arduino en IoT

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

Características de Arduino 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.

No en vano cuando se busca IoT (Internet de las cosas) enseguida aparece Arduino.

Arduino sirve para recoger datos no solo del entorno sino de máquinas o elementos externos y comunicarnos con Internet, mediante su consumo eléctrico, contactos de alertas externas, su temperatura, su posición, etc…

Arduino nos permite de una forma sencilla y barata poder conectar entre sí elementos cotidianos para manejarlos y añadir sensores a cualquier elemento y en cualquier ubicación.

Qué es Arduino: https://aprendiendoarduino.wordpress.com/2018/04/02/que-es-arduino-7/

Hardware Arduino:

Hardware Arduino IoT

La familia de Arduino MKR son una serie de placas con un factor de forma diferente al de Arduino mucho más pequeño y basados todos en el microcontrolador de 32 bits de Atmel SAMD21. Estas placas están pensadas principalmente para IoT.

MKR Family: https://store.arduino.cc/arduino-genuino/arduino-genuino-mkr-family

Arduino MKRZero

Producto: https://store.arduino.cc/arduino-mkrzero

Primero modelo de la familia MKR y heredero del Arduino Zero.

Arduino MKR1000 WIFI

Producto: https://store.arduino.cc/arduino-mkr1000

Versión para IoT con procesador Atmel ARM Cortex M0+ de 32bits ATSAMW25 que es el mismo procesador que Genuino Zero pero con wifi integrado, chip de cifrado y antena integrada.

El ATSAMW25 está compuesto por tres principales bloques:

  • SAMD21 Cortex-M0+ 32bit low power ARM MCU
  • WINC1500 low power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi (mismo que el wifi 101 shield)
  • ECC508 CryptoAuthentication

Arduino MKR WiFi 1010

Producto: https://store.arduino.cc/arduino-mkr-wifi-1010

El MKR WIFI 1010 es una mejora significativa del MKR 1000 WIFI. Está equipado con un módulo ESP32 fabricado por U-BLOX. Esta placa tiene como objetivo acelerar y simplificar la creación de prototipos de aplicaciones de IO basadas en WiFi gracias a la flexibilidad del módulo ESP32 y su bajo consumo de energía.

La placa tienes estos 3 bloques principales:

  • SAMD21 Cortex-M0+ 32bit Low Power ARM MCU;
  • U-BLOX NINA-W10 Series Low Power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi; and Bluetooth
  • ECC508 Crypto Authentication.

Arduino MKR FOX 1200

Producto: https://store.arduino.cc/arduino-mkrfox1200

Arduino anunciado en abril de 2017. En una placa de desarrollo pensada para el IoT con conectividad Sigfox. Comparte muchas características con otras placas de la familia MKR como em microcontrolador SAM D21 32-bit Cortex-M0+.

Incluye un módulo ATA8520 con conectividad sigfox de amplia cobertura y bajo consumo capaz de funcionar durante 6 meses con dos pilas AA. También incluye una suscripción por dos años a la red Sigfox: http://www.sigfox.com/en

Web: https://blog.arduino.cc/2017/04/18/introducing-the-arduino-mkrfox1200/

Más información sobre el Arduino MKRFOX1200 en el artículo: https://www.aprendiendoarduino.com/2018/03/05/arduino-mkrfox1200/

Arduino MKR WAN 1300

Producto: https://store.arduino.cc/mkr-wan-1300

Presentado el 25 de septiembre de 2017 en la maker faire de NY: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/

Arduino + LoRa:

Arduino MKR GSM 1400

Producto: https://store.arduino.cc/mkr-gsm-1400

Presentado el 25 de septiembre de 2017 en la maker faire de NY: https://blog.arduino.cc/2017/09/25/introducing-the-arduino-mkr-wan-1300-and-mkr-gsm-1400/

Arduino + GSM:

Arduino MKR NB 1500

Producto: https://store.arduino.cc/arduino-mkr-nb-1500

El nuevo estándar Narrow Band IoT, con el ecosistema Arduino fácil de usar. Totalmente compatible con las clases Narrow Band IoT NB y las redes LTE CAT M1.

Arduino MKR Vidor 4000

Producto: https://store.arduino.cc/arduino-vidor-4000 :

El MKR VIDOR 4000 es altamente configurable y potente, y puede realizar procesamiento digital de audio y video de alta velocidad.

El MKR VIDOR 4000 puede configurarlo de la manera que desee; esencialmente puede crear su propia tarjeta controladora.

Viene cargado de hardware y potencial:

  • un SRAM de 8 MB
  • un chip Flash QSPI de 2 MB – 1 MB asignado para aplicaciones de usuario
  • un conector Micro HDMI
  • un conector para cámara MIPI
  • Wifi & BLE alimentado por U-BLOX NINA Serie W10.

También incluye la clásica interfaz MKR en la que todos los pines son accionados tanto por SAMD21 como por FPGA.

Además, tiene un conector Mini PCI Express con hasta 25 pines programables por el usuario.

La FPGA contiene 16K Logic Elements, 504 KB de RAM embebida y 56 multiplicadores de 18×18 bit HW para DSP de alta velocidad. Cada pin puede conmutar a más de 150 MHz y puede ser configurado para funciones tales como UARTs, (Q)SPI, PWM de alta resolución/alta frecuencia, codificador de cuadratura, I2C, I2S, Sigma Delta DAC, etc.

La FPGA integrada también se puede utilizar para operaciones DSP de alta velocidad para el procesamiento de audio y vídeo. Esta tarjeta también incluye un Microchip SAMD21. La comunicación entre la FPGA y el SAMD21 es directa.

Accesorios para Arduinos MKR

Y los IoT Bundles:

Configuración Arduino

Puesta en marcha y comprobación del entorno de programación de Arduino para utilizar en el curso.

Instalación del IDE y blink para comprobar que funciona:

Programación Arduino

Librerías

Mandar Datos a un Servidor con Arduino

Vamos a conectar Arduino a un servidor y mandar datos para que los muestre en una gráfica. Mandar datos a https://www.aprendiendoarduino.com/servicios/datos/graficas.html

Conexión:

Poner este código en Arduino: https://github.com/jecrespo/aprendiendoarduino-servicios/blob/master/arduino_code/data_logger_temperatura_DHCP/data_logger_temperatura_DHCP.ino

Ver los datos en:

Arquitecturas IoT

La arquitectura tiene que cumplir ciertos requerimientos para que esta tecnología sea viable. Debe permitir que la tecnología sea distribuida, donde los objetos puedan interactuar entre ellos, escalable, flexible, robusta, eficiente y segura.

Requerimiento Arquitectura IoT

Requerimientos:

  • Conectividad y comunicación
  • Gestión y control de dispositivos
    • La posibilidad de desconectar un dispositivo robado
    • La habilidad de actualizar el software de un dispositivo
    • La actualización de credenciales de seguridad
    • Autorizar o denegar algunas capacidades del hardware remotamente
    • Localizar dispositivos perdidos
    • Limpiar información confidencial de un dispositivo robado
    • Reconfigurar parámetros de Wi-Fi, GPRS u otras redes remotamente.
  • Recolección, análisis y actuación de los datos
  • Escalabilidad
  • Flexibilidad
  • Alta disponibilidad
  • Integración
  • Seguridad
    • Riesgos inherentes de cualquier sistema de internet pero que los diseñadores IoT o de producto no tengan consciencia de ellos.
    • Riesgos específicos de los dispositivos IoT
    • Seguridad para cerciorarnos de que no se causan daños por, por ejemplo, por el mal uso de los actuadores.

Captación, análisis y actuación de la información: La arquitectura de referencia se ha diseñado para poder gestionar un gran número de dispositivos. Si estos dispositivos están constantemente enviando datos, esto genera un volumen significativo de información. Este requerimiento se refiere a los sistemas de almacenaje de información con una gran capacidad de escalabilidad, que soporta diversos tipos y grandes volúmenes de datos. Las acciones deberían ser en “casi tiempo real”, por lo que se requiere una gran capacidad de análisis de la información en tiempo real, además de la habilidad de los dispositivos de analizar y actuar en referencia a la información.

Escalabilidad. Cualquier arquitectura server-side es escalable y puede soportar millones de dispositivos enviando, recibiendo y actuando constantemente con los datos. Pero por otro lado, muchas de estas arquitecturas vienen con un precio muy elevado, tanto en hardware como en software y complejidad. Uno de los requerimientos más importantes es la capacidad de soportar la escalabilidad desde pequeños despliegues hasta volúmenes masivos de dispositivos, por eso la flexibilidad de la escalabilidad y la habilidad de desplegarla en una infraestructura Cloud son esenciales.

Más información:

Modelo de Capas de Arquitectura IoT

Un modelo de IoT puede verse en este imagen.

En IoT se sigue una arquitectura por capas. Modelo de 7 capas de la arquitectura IoT:

La arquitectura describe la estructura de su solución de IoT, lo que incluye los aspectos físicos (esto es, las cosas) y los aspectos virtuales (como los servicios y los protocolos de comunicación). Adoptar una arquitectura con múltiples niveles le permite concentrarse en mejorar su comprensión acerca de cómo todos los aspectos más importantes de la arquitectura funcionan antes de que los integre dentro de su aplicación de IoT. Este enfoque modular le ayuda a gestionar la complejidad de las soluciones IoT.

Más información sobre arquitecturas IoT: https://www.ibm.com/developerworks/ssa/library/iot-lp201-iot-architectures/index.html

Este modelo de capas puede simplificarse para un modelo más sencillo. Arquitectura simple de tres capas:

O un modelo de 4 capas:

Capas de Dispositivos

La capa inferior de la arquitectura es la de dispositivos. Hay varios tipos de dispositivos, pero para que se consideren dispositivos IoT deben tener algún tipo de comunicación, directa o indirecta, que lo enlaza con Internet.

Cada dispositivo necesita una identidad, la cual puede ser una de las siguientes:

  • Un identificador único (Unique identifier, UUID) grabado en el dispositivo (típicamente parte del System-on-Chip, o proporcionado por un segundo chip)
  • Un UUID proporcionado por un subsistema radio (por ejemplo: identificador Bluetooth, dirección MAC del WiFi)
  • Un token refresh/bearer OAuth2 (puede ser un complemento a los dos anteriores)
  • Un identificador guardado en memoria no volátil como una EEPROM

Capa de Comunicaciones

La capa de comunicaciones soporta la conectividad de los dispositivos. Hay múltiples protocolos para la comunicación entre los dispositivos y el Cloud. Los tres protocolos más conocidos y usados son:

  • HTTP/HTTP (y RESTful sobre ellos)
  • MQTT 3.1/3.1.1
  • Constrained application protocol (CoAP)

HTTP es muy conocido y hay muchas librerías que lo soportan. Dado que es un protocolo simple basado en texto, muchos dispositivos pequeños como los controladores de 8 bits lo pueden soportar parcialmente (por ejemplo, sólo recursos como POST o GET). Por otro lado, dispositivos con más capacidad como los de 32 bits, pueden utilizar librerías con un cliente completo de HTTP, el cual puede implementar todo el protocolo.

Hay algunos protocolos optimizados para el uso en IoT, como MQTT y CoAP. MQTT fue inventado en 1999 para resolver los problemas en los sistemas embedded y SCADA. Ha habido varias iteraciones pero la versión actual (v3.1.1) está bajo estandarización en el OASIS MQTT Technical Committee.

MQTT es un sistema de mensajería publish-subscription basado en un modelo bróker. El protocolo tiene una pequeña cabecera (2 bytes por mensaje), y fue diseñado para trabajar en conexiones pobres y con cortes intermitentes. MQTT fue diseñado para correr sobre TCP. Además, existe MQTT-SN (Sensor networks) una especificación diseñada para redes basadas en ZigBee.

CoAP es un protocolo del IETF (Internet Engineering Task Force) que se ha diseñado para proporcionar aplicaciones RESTful modeladas en la semántica de HTTP, pero más pequeño y binario a diferencia del basado en texto. CoAP es un enfoque tradicional de cliente-servidor en comparación al de brokers, diseñado para correr sobre UDP.

Capa de Agregación (Edge Computing)

Una capa importante de la arquitectura es la que agrega y hace de bróker de comunicaciones. Hay tres principales razones por las cuales es importante:

  • El soporte de un servidor HTTP y/o un broker MQTT para hablar con los dispositivos.
  • La agregación y combinación de comunicaciones de diferentes dispositivos y de enrutar las comunicaciones hacia un dispositivo especifico (posiblemente via un Gateway)
  • La habilidad de hacer un puente y transformar diferentes protocolos. Por ejemplo: ofrecer APIs basadas en HTTP que interceden un mensaje MQTT que va a un dispositivo

Finalmente, la capa de agregación/bus necesita desarrollar dos roles de seguridad claves. Debe ser capaz de actuar como un recurso de servidor OAuth2 (validando el portador de tokens y asociando los recursos de acceso). También debería ser capaz de actuar como policy enforcement point (PEP) para las políticas de acceso.

Capa de procesamiento de eventos y analítica

Esta capa coge los eventos del bus y proporciona la posibilidad de procesarlos y actuar sobre estos. Una capacidad esencial es la de guardar los datos en BBDD.

Componentes de la Arquitectura IoT

En términos sencillos, nuestra arquitectura de IoT contiene los siguientes componentes:

  • Cosas equipadas con sensores para recoger datos y actuadores para realizar comandos recibidos desde la nube.
  • Gateways para filtrar, preprocesar y mover datos a la nube y viceversa, – recibir comandos desde la nube.
  • Pasarelas en nube (Cloud Gateways) para garantizar la transición de datos entre las pasarelas sobre el terreno y los servidores centrales de IoT.
  • Procesadores de datos en tiempo real para distribuir los datos procedentes de los sensores entre los componentes de las soluciones de IoT pertinentes.
  • Bases de Datos para almacenar todos los datos de valor definido e indefinido.
  • Big Data Warehouse para la recogida de datos valiosos.
  • Aplicaciones de control para enviar comandos a los actuadores.
  • Machine Learning para generar los modelos que luego son utilizados por las aplicaciones de control.
  • Aplicaciones de usuario que permiten a los usuarios monitorizar el control de sus cosas conectadas.
  • Análisis de datos para el procesamiento manual de datos.

Más información sobre el modelo de capas de arquitectura IoT:

Fases en la integración IoT

Fase 1: Conexión. En primer lugar, los objetos conectados en red con sensores inteligentes empiezan a enviar información sobre sí mismos y su entorno a su centro de comunicaciones central en la nube. Conectar cosas (darles sentido y abrirles una conexión a Internet para que puedan enviarles sus datos) representa el comienzo de la evolución del IoT. La mayoría de las plataformas de IoT se ganan la vida asegurándose de que sus cosas puedan hacerlo con seguridad.

Fase 2: Análisis y Visualización. A continuación, a medida que los datos de tus cosas se acumulan y tienes tantos que empiezas a llamarlos «grandes», agregas, exploras y empiezas a ejecutar análisis inteligentes en tus pilas de datos y visualizas los resultados en los dashboards. Esta es la segunda etapa en la evolución de IoT, cuando aprendes cosas nuevas importantes sobre tus sistemas de cosas conectadas.

Fase 3: Automatización. Ahora que has aprendido algo, empiezas a pensar en aplicar lo que has aprendido a tus procesos existentes, para que finalmente puedas cosechar los beneficios de IoT en su tercera gran etapa evolutiva: la automatización.

Más información:

Ejemplo de Fases en la Industria (IIoT)

Fase Inicial: Máquina sin acceso a la máquina (no hay comunicaciones)

Fase 1: Acceso remoto a la máquina. Conexión

Fase 2: Adquisición de datos, monitorización y notificaciones de alarmas

Fase 3: Advanced analytics, diagnóstico y reporting

Fase 4: Integración con SW corporativo

Fase 5: Automatización

Inicialmente se conecta la máquina a Internet o intranet. Mediante un gateway entre los buses de campo e internet mediante 3G, WiFi, ethernet, etc… De esta forma se visualiza remotamente lo que está pasando en la fábrica.

Luego se puede conectar a la nube con una solución como talk2M que se conecta mediante openVPN. Más información https://ewon.biz/es/cloud-services/talk2m

Talk2M tiene funcionalidades de HTTP e incluso aplicaciones externas podría acceder al Talk2M para coger dato mediante una API. Talk2M se podría implementar con una Raspberry Pi.

El gateway se conecta al PLC y captura datos de él mediante diversos protocolos para luego mandarlos a la nube y de una forma transparente sin tener que modificar parámetros al PLC. Simplemente leyendo del bus. Por ejemplo https://ewon.biz/products/ewon-flexy y con las tarjetas de conexión https://ewon.biz/ewon-product/flexy-extensions

En lugar de estos elementos puedo usar Arduino ¡CON ARDUINO TENGO TODO TIPO DE CONEXIONES!, además en Arduino se puede hacer un preprocesamiento de los datos.

Tecnologías IoT

Pensando en los actores que participan en el ecosistema IoT se pueden identificar las siguientes tecnologías

Dispositivos Hardware, son los dispositivos que van a medir y los que van a interactuar con el exterior.

  • Arduino
  • ESP8266, HW low cost con wifi
  • Otras plataformas HW para IoT: https://www.postscapes.com/internet-of-things-hardware/
  • HW y conectividades de http://www.libelium.com/ son de Zaragoza y tienen buenas formaciones.
  • Diseño de HW como Eagle o KiCad, es el siguiente paso de Arduino a una personalización del HW
  • Android Things es una adaptación del Sistema Operativo Android para dispositivos que los desarrolladores quieran convertir en Inteligentes. Android Things, sistema operativo y development kit para HW de IoT https://developer.android.com/things/
  • RTOS sistemas operativos en Tiempo real para sistemas embebidos, generalmente basados en linux.
  • Autómatas o PLCs para la parte industrial y SoftPLCs

Conectividad, tecnologías para conectar el HW con Internet o una red

  • Zigbee
  • Sigfox
  • LoWaRan, LPWA
  • Bluetooth/wifi/NFC/ANT+ y beacons
  • Seguridad en la comunicaciones, es un de los retos de IoT
  • nRF24L01 is a highly integrated, ultra low power (ULP) 2Mbps RF transceiver IC for the 2.4GHz ISM (Industrial, Scientific and Medical) band.

Protocolos de comunicación, con los que comunicar el HW con el SW

  • Fiware
  • MQTT
  • API REST/HTTP
  • SNMP
  • Buses de campo industriales, modbus, etc…

Plataformas IoT,  para tratar los datos recogidos por nuestros sensores y almacenarlos. Estas plataformas tienen un HW y el SW que usan:

Encuesta: https://blogs.eclipse.org/post/benjamin-cab%C3%A9/key-trends-iot-developer-survey-2018

Servicios IoT, son los servicios que ofrecen las plataformas

  • Machine learning, inteligencia artificial en los dispositivos
  • Smart Metering
  • Open Data
  • Dashboards/Cuadros de mando
  • Almacenamiento de datos
  • Análisis de Datos
  • Visualización de Datos

Ejemplos de empresas en el ecosistema IoT:

Áreas involucradas en IoT

  • Electrónica
  • Desarrollo de HW embebido
  • Desarrollo de SW
  • Redes informáticas y de telecomunicaciones
  • Administración de sistemas
  • Sistemas de información, BDDs
  • Desarrollo web, cloud computing
  • Seguridad informática
  • Big data: dashboards, análisis de datos, procesamiento de datos, etc.
  • Dominio del campo aplicado: electricidad, electrónica de control, mecánica, física, mecatrónica, medicina, agronomía, etc.
  • Desarrollo de producto
  • etc…

Recursos open source IoT:

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.