Arduino y IoT

Que es el 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.

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.

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:

  • 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.

Proyectos de IoT con Arduino

Ahora vamos a conectar Arduino a Internet o a cualquier otro tipo de red, es este caso usaremos ethernet y WiFi.

Cliente Web Arduino

Arduino puede navegar y obtener datos de Internet.

Explicación: https://www.arduino.cc/en/Tutorial/WebClient

Instrucciones usadas:

Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio25-EthernetClient

NOTA: poner cada una una MAC y una IP diferente para que funcione. Para usar DHCP simplemente usar Ethernet.begin(mac).

También puedo obtener la fecha y hora de Internet mediante NTP: http://www.arduino.cc/en/Tutorial/UdpNtpClient

También puedo leer los datos de temperatura y humedad de aemet.es y mostrarlo por pantalla: https://github.com/jecrespo/Aprendiendo-Arduino-Proyectos/tree/master/Proyecto_1-Estacion_Meteorologica_Mejorada

Web Server embebido en Arduino

Instalar un servidor web embebido en Arduino y conectarse a Arduino a través de un navegador. El servidor muestra los valores leídos en las entradas analógicas y refresca el valor cada 5 segundos.

Explicación: http://www.arduino.cc/en/Tutorial/WebServer

Instrucciones usadas:

Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio26-EthernetServer

También puedo encender el built-in led desde una web embebida: https://github.com/jecrespo/Aprendiendo-Arduino/blob/master/Ejercicio27-Boton/Ejercicio27-Boton.ino

También se puede controlar los leds de un neopixel mediante una web en un Arduino Yun: https://github.com/jecrespo/NeoPixel

En este caso la web está en un servidor web del sistema operativo openWRT basado en linux y al interactuar con él la librería bridge se encarga de comunicar internamente linux con el microcontrolador del Arduino Yun.

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.

Código: https://github.com/jecrespo/Aprendiendo-Arduino-Proyectos/tree/master/Proyecto_9-Servidor_Web_%20Embebido/EthernetServer-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

NOTA: modificar el sketch de Proyecto_10-Grabar_Raspberry.ino para que grabe solo el valor de la entrada analógica y el nº de Arduino con el de vuestro puesto. Probar a grabar tanto en la Raspberry Pi como en el servidor público www.aprendiendoarduino.com en la ruta que se indique.

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

NOTA: el código de Arduino Proyecto_10-Grabar_Mensajes.ino tiene doserrores al compilar y no error al ejecutar, detectarlos y corregirlos. Veamos quién es el primero en mandar un mensaje.

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:

Más proyectos con Arduino en: https://aprendiendoarduino.wordpress.com/2015/04/16/tema-5-taller-de-proyectos-con-arduino/

Y para finalizar…

Recordad que para aprender más sobre Arduino hay muchos cursos y documentación en Internet y los cursos de http://www.aprendiendoarduino.com/.

Y también en las redes sociales:

Y todas las novedades sobre Arduino, futuros eventos, cursos, etc… mediante correo electrónico en la lista: http://list.aprendiendoarduino.com/mailman/listinfo/aprendiendoarduino.com.noticias

Anuncios

2 pensamientos en “Arduino y IoT

  1. Erik

    Buenos días, mi nombre es Erik y soy un alumno de 2o de Bachillerato del instituto La Vall del Tenes en Santa Eulalia de Ronçana, Barcelona. Solicito ayuda a los que seais expertos en el tema Internet of things y arduino. Me ayudarian si me contestan una serie de preguntas para complementar mi Trabajo de bachillerato relacionado con el internet of things. Les dejo mi correo de contacto por si alguien está dispuesto y me hace el favor de contestarlas. eartes@iesvalltenes.cat

    Le gusta a 1 persona

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s