Archivo de la categoría: MQTT

Sensores y Actuadores

Los sensores son el primer eslabón de la cadena de IoT

Si se le ocurre una propiedad física, probablemente pueda comprar un sensor para medirla.

En su forma más abstracta, un sensor no es más que una caja negra que transduce un estado físico que queremos monitorear en una propiedad eléctrica que podemos medir. Puede ser tan simple como un conjunto de contactos que cambian entre abierto y cortocircuito cuando pulsamos un botón o abrimos una ventana. Puede ser un potenciómetro que cambia la resistencia cuando un humano gira un dial o un robot extiende un brazo.

También puede ser tan complicado como un circuito integrado que detecta la aceleración y el magnetismo a lo largo de tres ejes para determinar la orientación, la aceleración y el rumbo de la brújula hacia su dispositivo IoT.

La mayoría de los sensores se conectan a los nodos de IoT a través de una interfaz digital, serie o analógica. Las interfaces en serie se utilizan normalmente para sensores complejos como los acelerómetros que tienen un interfaz I2C.

Sensores Arduino: https://aprendiendoarduino.wordpress.com/2018/04/14/sensores-arduino-3/

Un actuador es un dispositivo capaz de transformar energía hidráulica, neumática o eléctrica en la activación de un proceso con la finalidad de generar un efecto sobre elemento externo. Este recibe la orden de un regulador, controlador o en nuestro caso un Arduino y en función a ella genera la orden para activar un elemento final de control como, por ejemplo, una válvula.

Existen varios tipos de actuadores como son:

  • Electrónicos
  • Hidráulicos
  • Neumáticos
  • Eléctricos
  • Motores
  • Bombas

Actuadores y periféricos Arduino: https://aprendiendoarduino.wordpress.com/2015/03/31/actuadores-y-perifericos-de-salida/

Sensores no son solo los sensores que conectamos a un microcontrolador como Arduino, podemos tener una red de sensores externos que podemos integrar en nuestra red como:

  • Autómatas de los que recojo datos mediante modbus TCP con http://openopc.sourceforge.net/ e integro en las bases de datos o red MQTT.
  • Cámaras vigilando eventos con https://opencv.org/ y que integro con mis datos e interacciona.
  • Dispositivos con interfaces SNMP y adquiere los datos cada minuto guardando en la BBDD combinándolos con los datos recogidos por Arduino.
  • Datos públicos como los de aemet y que uso para activar elementos gestionados por la red MQTT.

Aplicando estos sencillos pasos, somos capaces de conectar el nivel más bajo de la pirámide del Internet de las Cosas (la sensorización) con las capas intermedias que se encargan de procesar y consumir dicha información, tanto de forma discrecional como empleando técnicas más complejas de análisis de datos.

Todo ello, sin comprometer la estabilidad y escalabilidad del sistema global, pudiendo añadir tantos sensores como necesitemos de una forma sencilla y sin preocuparnos de configuraciones extra. A partir de este momento, somos capaces de construir soluciones de mayor complejidad en el mundo de Internet de las Cosas.

Más información:

HW fabricado para IoT https://learn.controleverything.com/

Más información: https://www.artik.io/blog/2015/10/iot-101-sensors/

Ejemplo Sensor DHT11

Conectar una sonda DHT11 a Arduino UNO con Ethernet Shield y publicar datos en el topic “Temperatura” cada 5 segundos con la temperatura detectada. Ver esos datos desde el cliente MQTT.fx

Conexión:

Usar la librería DHT de adafruit https://github.com/adafruit/DHT-sensor-library, recordad que tiene una dependencia de la librería Adafruit Unified Sensor: https://github.com/adafruit/Adafruit_Sensor

Código: https://github.com/jecrespo/Curso-IoT-Open-Source/blob/master/mqtt_temperatura_DHT/mqtt_temperatura_DHT.ino

Si queremos que otro Arduino reciba datos por MQTT al suscribirse al topic “temperatura” usamos la función de callback que imprime el mensaje recibido:

 
void callback(char* topic, byte* payload, unsigned int length) {
 Serial.print("Message arrived [");
 Serial.print(topic);
 Serial.print("] ");
 int i=0;
 for (i=0;i<length;i++) {
   Serial.print((char)payload[i]);
 }
 Serial.println();
}

Si quisiéramos guardar el mensaje recibido en una variable entonces la función de callback es:

 
String data;

void callback(char* topic, byte* payload, unsigned int length) {
 char dataArray[length];
 for (int i=0;i<length;i++) {
   dataArray[i] = (char)payload[i];
 }
 data = str(dataArray)
}

Código: https://github.com/jecrespo/Curso-IoT-Open-Source/blob/master/mqtt_temperatura_suscriptor/mqtt_temperatura_suscriptor.ino

Más información: https://ricveal.com/blog/arduino-mqtt/

Anuncios

Dispositivos Hardware IoT

En este curso vamos a usar Arduino u otras placas compatible como HW de sensorización y actuación en IoT, pero existen otros microcontroladores o PLCs que haría la misma funcionalidad.

Dispositivos Hardware, son los dispositivos que van a medir y los que van a interactuar con el exterior. El elemento HW programable capaz de interactuar con estos dispositivos es el microcontrolador o el microprocesador.

Hay tres clases de dispositivos IoT:

  • Los dispositivos más pequeños son los controladores embedded de 8 bits System-On-Chip (SOC). Un buen ejemplo de este Open Source hardware es Arduino. Por ejemplo: Arduino Uno platform, este tipo de HW no suelen llevar sistema operativo (SO).
  • El siguiente nivel son los dispositivos con una arquitectura de 32 bits como los chips de Atheros y ARM. Normalmente estos dispositivos se basan en plataformas de Linux embedded, cómo OpenWRT u otros sistemas operativos embedded (Muchas veces incluyen pequeños routers domésticos y derivados de estos). En algunos casos, no corren ningún SO. Por ejemplo: Arduino Zero o Arduino Yun.
  • Las plataformas IoT con más capacidad son los sistemas completos de 32 y 64 bits, también se les denomina Single-Board-Computer (SBC). Estos sistemas, como Raspberry Pi o BeagleBone, pueden correr varios SO como Linux o Android. En muchos casos, estos son Smartphone o algún tipo de dispositivo basado en tecnologías móviles. Estos dispositivos pueden comportarse como Gateways o puentes para dispositivos más pequeños. Por ejemplo: un wearable que se conecta vía Bluetooth a un Smartphone o a una Raspberry Pi, es típicamente un puente para conectarse a Internet.

Además a esta lista de dispositivos podemos añadir los Microcontroladores Industriales o PLCs, softPLCs o cualquier dispositivo que pueda conectar a internet y del que pueda obtener datos como un power meter como http://circutor.com/en/products/metering o un dispositivo con interfaz SNMP.

Otro tipo de HW IoT son los Gateway. Un Gateway IoT es un dispositivo físico o un programa de software que sirve como punto de conexión entre la nube y los controladores, sensores y dispositivos inteligentes. Todos los datos que se mueven a la nube, o viceversa, pasan por el gateway, que puede ser un dispositivo de hardware dedicado o un programa de software. Un gateway IoT también puede denominarse pasarela inteligente o nivel de control.

A estos dispositivos o nos nodos sensores se les lama también motes (short for remote) https://en.wikipedia.org/wiki/Sensor_node

Este es el primer elemento, es que está más cerca de las “cosas” es el HW que se encarga de medir e interactuar con las “cosas” y procesar esos datos. Este dispositivo puede tener conectado otros hardware como:

Programación de los dispositivos IoT

Un sistema operativo IoT es un sistema operativo diseñado para funcionar dentro de las restricciones propias de los dispositivos de Internet of Things, incluidas las restricciones de memoria, tamaño, potencia y capacidad de procesamiento. Los sistemas operativos de IO son un tipo de sistema operativo integrado, pero por definición están diseñados para permitir la transferencia de datos a través de Internet.

ARM Mbed es una plataforma y un sistema operativo para dispositivos conectados a Internet basado en microcontroladores ARM Cortex-M de 32 bits. Estos dispositivos también se conocen como dispositivos de Internet of Things. El proyecto es desarrollado en colaboración por Arm y sus socios tecnológicos.

RTOS sistemas operativos en Tiempo real para sistemas embebidos, generalmente basados en linux.

Buen resumen de lo necesario para saber sobre sistemas embebidos para IoT a nivel de HW http://so-unlam.com.ar/wiki/index.php/PUBLICO:Sistemas_embebidos_e_Internet_de_las_Cosas

Guia para elegir el mejor HW IoT: https://www.ibm.com/developerworks/library/iot-lp101-best-hardware-devices-iot-project/index.html

Hardware IoT

El HW libre por excelencia es Arduino como microcontrolador y Raspberry Pi como microprocesador, con menor potencia física pero mayor potencia de cálculo.

Dentro del HW libre no solo debemos quedarnos con Arduino, sino que existen otros dispositivos, incluso algunos son compatibles y se programan igual que Arduino:

Más HW IoT:

¿Conoces alguna más?

En el caso de HW libre, el siguiente paso es una personalización del HW mediante el diseño de HW como Eagle o Kicad

HW IoT Industrial

En el mundo industrial se está incorporando el IoT con la denominación IIoT (Industrial Internet of Things) ya sea con dispositivos basados en HW libre o los fabricantes de Autómatas están incorporando comunicaciones más abiertas a sus dispositivos.

PLC basado en Arduino: https://www.industrialshields.com/

Artículo de Industrial Shields sobre Arduino como aplicación de PLC: http://blog.industrialshields.com/es/iot-in-industry-improves-reliability-equipment/

PLCs basados en Arduino: https://industruino.com/

PLC basado en Arduino: http://www.winkhel.com/

Carcasa para Arduino y Raspberry Pi en la industria: Arduibox: http://www.hwhardsoft.de/english/webshop/raspibox/#cc-m-product-10145780397

SIMATIC IOT2020: gateway de Siemens basado en Arduino para futuras aplicaciones industriales: http://es.rs-online.com/web/p/kit-de-desarrollo-de-iot/1244037/ y aplicaciones https://www.rs-online.com/designspark/simatic-iot2020.

Simatic IoT 2040: https://w3.siemens.com/mcms/pc-based-automation/en/industrial-iot/Documents/simatic-ioc2040-flyer-en.pdf

Los otros PLCs SBC (Single Board Computer): http://www.infoplc.net/blogs-automatizacion/item/102505-plc-single-board-computer

OpenPLC Project: http://www.openplcproject.com/

Autómatas con MQTT: http://www.unitronics.com/ y modelo nistream https://unitronicsplc.com/unistream-series-unistream5/

ABB PM556, automata de ABB abierto: http://new.abb.com/drives/es/noticias-y-casos-de-exito/impulsa-el-internet-de-las-cosas-los-servicios-y-las-personas