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.
Definición de wikipedia: https://es.wikipedia.org/wiki/Internet_de_las_cosas
Arduino es un elemento que nos permite 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.
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
Temboo es una plataforma de IoT que nos permite conectar fácilmente mediante una API un Arduino con Internet, mostrar los datos recogidos e interactuar con ellos desde un navegador web.
- Tembo + Arduino: https://temboo.com/arduino/others/
- Tembo + Arduino Yun: https://blog.arduino.cc/2013/09/11/the-power-of-temboo-connect-the-yun-to-100-apis/
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/
Telefónica y IoT: http://www.thinkingthings.telefonica.com/
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.
Elementos que intervienen en el IoT
Explicación gráfica de los elementos necesarios en IoT: http://www.libelium.com/products/meshlium/wsn/
- Qué quieres medir?
- Cómo lo quieres conectar?
- Qué quieres hacer con los datos?
Elementos en IoT:
- Dispositivos Hardware (por ejemplo Arduino), es el dispositivo con el que vamos a medir (sensor) o interactuar (actuador, p.e. bombilla).
Sensores: https://www.artik.io/blog/2015/iot-101-sensors
HW IoT low cost con ESP8266: https://en.wikipedia.org/wiki/ESP8266 - Conectividad. Medio de comunicación, como vamos a comunicar el HW, ya sea por red o de forma inalámbrica. Ethernet, Wifi, GPRS, LPWAN, zigbee, bluetooth, ANT+, etc…
Conectividad: https://www.artik.io/blog/2015/iot-101-connectivity
- Protocolos de comunicación, lenguaje para comunicar el HW y el SW. HTTP, fiware, MQTT, API REST,…
Redes: https://www.artik.io/blog/2015/iot-101-networks
- 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
A modo de resumen, estos son los elementos en el IoT
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 (baterías) y todo esto mediante una comunicación segura.
IoT con Arduino
Ahora vamos a conectar Arduino a Internet o a cualquier otro tipo de red, es este caso usaremos ethernet y WiFi.
Webserver con Ajax
Mediante Ajax podemos actualizar los datos de la web embebida en Arduino sin necesidad de cargar toda la web, sino solo mandando los datos actualizados, economizando los datos mandados a través de la red.
Ajax:
Ejemplo del webserver anterior que muestra los datos de las entradas analógicas pero con Ajax.
Ejemplo avanzado de regulador de encendido con ajax, ejercicio 42: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio42-Ajax
Grabar datos de Arduino en un Ordenador (datalogger)
Con Arduino conectado a una red, se pueden recoger los datos (datalogger) y mandarlos a un servidor (p.e. una Raspberry Pi) y guardarlos en una Base de Datos. Con estos datos almacenados podemos mostrarlos, analizarlos, etc…
Grabar Datos leídos por Arduino en la entrada analógica A0 y grabarlos en una BBDD dentro de una Raspberry Pi o de un servidor público.
Arduino llama a un servicio (p.e. en PHP) pasándole las variables que quiero almacenar y ese servicio se encarga de grabar en la BBDD que puede estar en el mismo servidor.
Métodos POST y GET de HTTP: http://www.w3schools.com/tags/ref_httpmethods.asp
Código: https://github.com/jecrespo/Aprendiendo-Arduino-Proyectos/tree/master/Proyecto_10-Grabar_Raspberry
BBDD: https://qvm602.aprendiendoarduino.com o IP Raspberry Pi
Mandar mensajes de Arduino y visualizarlos en tiempo real
Arduino solicita un nombre y un mensaje que escribimos en el puerto serie y lo manda a un servidor. Desde el servidor vemos los mensajes en tiempo real. Por ejemplo serviría para enviar alarmas a un sistema de monitorización cuando Arduino detecta un evento (pulsar un botón, abrir una puerta, etc…).
Visualizar los mensajes: http://www.aprendiendoarduino.com/servicios/ o IP Raspberry Pi
Código: https://github.com/jecrespo/Aprendiendo-Arduino-Proyectos/tree/master/Proyecto_10-Grabar_Mensajes
Uso de plataformas de IoT con Arduino
Podemos usar de forma gratuita diversas plataformas para conectar nuestro Arduino con ellas y usarlas para mostrar datos, responder a ciertos eventos, realizar acciones, etc…
Algunas plataformas existentes son:
- Temboo: https://temboo.com/
- Librería: https://temboo.com/library/
- Usar con Arduino: https://temboo.com/arduino
- Aplicaciones IoT: https://temboo.com/iot-applications
- carriots: https://www.carriots.com/
- Mandar datos a Carriots: https://www.carriots.com/tutorials/arduino_carriots/arduino_library
- Ejemplo de uso: https://www.carriots.com/tutorials/arduino_carriots/alert_system
- API carriots: https://www.carriots.com/documentation/api
- ThingSpeak: https://thingspeak.com/
- nimbits: http://bsautner.github.io/com.nimbits/ (Para instalar una plataforma en una Raspberry Pi)
- Plot.ly: https://plot.ly/
- API plot.ly: https://github.com/plotly/arduino-api
- Ejemplo: https://plot.ly/arduino/dht22-temperature-tutorial/
- Ejemplo de uso de plot.ly https://github.com/jecrespo/Aprendiendo-Arduino-Proyectos/tree/master/Proyecto_5-Grafic_Plotly
Ejercicios IoT
Plataforma Aprendiendoarduino
Disponemos de una plataforma sencilla de IoT en http://www.aprendiendoarduino.com/servicios/
Desde ella podemos:
- Mandar datos desde Arduino o ESP8266 y verlos en tiempo real: http://www.aprendiendoarduino.com/servicios/datos/index.html
- Visualizar en tiempo real los datos enviados: http://www.aprendiendoarduino.com/servicios/datos/graficas.html
- Envío de mensajes y visualización: http://www.aprendiendoarduino.com/servicios/mensajes/index.html
- Envío de SMSs y visualización de los enviados y estado del envío: http://www.aprendiendoarduino.com/servicios/SMS/index.html
El código de arduino para usar cada uno de ellos es:
- Datalogger temperatura: https://github.com/jecrespo/aprendiendoarduino-servicios/tree/master/arduino_code/data_logger_temperatura_DHCP
- Grabar mensajes: https://github.com/jecrespo/aprendiendoarduino-servicios/tree/master/arduino_code/graba_mensaje_DHCP
- Envía SMS: https://github.com/jecrespo/aprendiendoarduino-servicios/tree/master/arduino_code/envia_SMS_DHCP
Todo el código de la plataforma y Arduino en: https://github.com/jecrespo/aprendiendoarduino-servicios
Conexión para enviar datos de temperatura:
Datasheet sonda temperatura: https://www.arduino.cc/en/uploads/Main/TemperatureSensor.pdf
Thingspeak
Mandar datos de temperatura a una plataforma pública como https://thingspeak.com/
Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio65-Thingspeak_DHCP
ESP8266
Hacer un sketch para ESP8266 que mande un mensaje de alarma o un SMS cuando se ponga a masa el GPIO2 a masa y mande la recuperación al volver a leer HIGH.
Todo muy bien redactado y también interesante saludos desde Chile
Me gustaLe gusta a 1 persona
Muchas gracias, para este 2018 habrá más contenido.
Me gustaMe gusta