Podcast: Descargar (74.7MB)
Cuando creamos proyectos IoT con Arduino, tenemos varias maneras de monitorizar los datos que captamos a través de los sensores. La más básica y que requiere tener el dispositivo conectado a un ordenador es a través del monitor serie. Si tenemos algún display como un LCD o una pantalla TFT, ya podremos desconectar el Arduino del ordenador y llevarlo a cualquier sito. Pero existe una tercera opción, quizás la más idónea, para poder ver los datos y la información, utilizar una plataforma para proyectos del IoT.
En este artículo te voy a convencer para que empieces a gestionar tus datos en la nube. Descubrirás un montón de plataformas de todo tipo, con licencia gratuita, de pago y de código abierto. Pondré más énfasis en aquellas que están destinadas a los Makers (curiosos) y startups. Estas plataformas IoT ofrecen características interesantes de forma gratuita.
Además de poder ver la información, algunas de estas plataformas permiten tener un histórico de los datos. Esto entra dentro de lo que se conoce el Big Data (manejo de grandes cantidades de datos e información). Una vez almacenada la información, se pueden aplicar varias técnicas de predicción y de gestión.
Indice de contenidos
- 1 ¿Proyectos IoT con Arduino, por qué deberias utilizar una plataforma?
- 2 Esquema general para proyectos IoT con Arduino
- 3 Proyectos IoT con Arduino, tipos de plataformas
- 4 Las mejores Plataformas del IoT con versiones gratuitas
- 5 Plataformas de integración de sistemas completos del IoT
- 6 Plataformas del IoT de las grandes corporaciones
- 7 Plataformas de código abierto instalación en local
- 8 Conclusiones
¿Proyectos IoT con Arduino, por qué deberias utilizar una plataforma?
En los tiempos que corren, cada vez tenemos más fácil el acceso a Internet. Desde cualquier parte del mundo y en cualquier situación. Algunos procesos de nuestros proyectos, necesitan de una supervisión en tiempo real, sobre todo cuando estamos probando y prototipando proyectos del IoT.
Una manera sencilla y económica de poder ver qué sucede, es a través de una plataforma del IoT. El mayor inconveniente que existe, a priori, son los conocimientos técnicos requeridos. Luego veremos que esto dependerá de la plataforma que utilicemos.
Para entendernos, vamos a ver un ejemplo muy sencillo. Seguramente conozcas las típicas estaciones meteorológicas de uso doméstico. Este tipo de dispositivos suelen tener un sensor y un display donde se muestran los datos. El sensor lo situamos en aquella estancia o zona donde queremos tomar las medidas. El display lo colocamos en algún lugar visible, donde podamos ver con facilidad la información.
Aunque existen diferentes modelos y marcas, resulta difícil y caro encontrar alguno que nos permita tener un histórico de datos meteorológicos e incluso consultar la información cuando no estemos en nuestra casa.
Como veremos a lo largo de este artículo, podemos crear nuestra propia estación meteorológica de una manera muy simple y barata. Pero sobre todo, seremos libres de almacenar la información donde nosotros queramos y, con unos mínimos conocimientos de desarrollo web, poder mostrar la información en un dispositivo móvil, tablet o PC.
Pero no solo una estación meteorológica, también podemos monitorizar un congelador o controlar un sistema de riego automático desde un móvil.
Todo esto gracias a las plataformas parar proyectos IoT con Arduino, veamos cómo hay que hacerlo.
Guía para crear proyectos IoT con Arduino, esquema general
Voy a describir los pasos generales que debemos hacer, para crear proyectos IoT con Arduino. Podemos sustituir esta placa por cualquier otra de las mismas características como un ESP8266.
Esquema general para proyectos IoT con Arduino
Antes de meternos a ver las diferentes plataformas, es interesante hacerse una idea general de lo que sería un sistema basado en plataformas en la nube. En este sistema intervienen tres elementos principales:
- El dispositivo conectado o del IoT
- La plataforma en la nube
- Los dispositivos que consumen la información en la plataforma del IoT
Cada uno de estos sistemas se trata por separado y se comunican entre ellos a través de protocolos de comunicación. Estos protocolos deberían ser un estándar para que, independientemente de la plataforma, se puedan comunicar.
Dispositivos del IoT
En este sentido, tenemos una amplia gama de productos. El que yo utilizo es el Arduino MKR1000. Es el primer Arduino que viene con WiFi integrado dentro de la propia placa. Para hacer las diferentes pruebas de este artículo voy a hacer una configuración muy sencilla.
Pero también se pueden utilizar Raspberry Pi o el ESP8266.
Plataformas del IoT
Más adelante veremos las diferentes plataformas que hay en el mercado. Me centraré sobre todo en aquellas que nos den un acceso gratuito, aunque sea limitado.
Dentro de esta categoría encontramos plataformas orientadas exclusivamente a proyectos del IoT y otras plataformas que ofrecen múltiples servicios para todo un sistema del IoT.
Los protocolos de comunicación más utilizados son HTTP, MQTT y CoAP. Además, para comunicarnos, existen diferentes redes como LoRa o SigFox. Son redes WAN para el IoT y una alternativa a los sistemas tradicionales de comunicación.
API de acceso a los datos
Esto es algo muy importante que hay que valorar a la hora de crear proyectos IoT con Arduino. Tener una API (Application Programming Interface) nos permitirá consultar, modificar y borrar la información desde otros dispositivos.
Al final tenemos que entender que es una capa de comunicación estándar para conectarnos a los datos. Existen diferentes protocolos y estándares. El más utilizado sería a través de servicios web RESTful.
El acceso a dicha API dependerá del software desde donde nos conectemos. Si se trata de una aplicación web, frameworks como jQuery, AngularJS o React, nos facilitan esta tarea enormemente.
Proyectos IoT con Arduino, tipos de plataformas
Estamos viviendo una nueva era de Internet. Cada día surgen nuevas plataformas para nuestros proyectos IoT y es complicado hacer un análisis de todos ellos dado el volumen tan grande de este tipo de plataformas. Pero podemos hacer una clasificación dependiendo del coste y el sector al que va orientado.
El primer grupo, quizás el más interesante, son las plataformas que están orientadas a startups y empresas pequeñas. En este tipo he incluido todas aquellas que nos permiten su uso de una manera gratuita pero con limitaciones en cuanto al número de mensajes enviados y de dispositivos conectados.
Están enfocadas exclusivamente a dispositivos u objetos conectados. Esta característica las hacen ideales para utilizarlas en nuestros proyectos del IoT con Arduino.
El segundo grupo engloba a plataformas que también ofrecen servicios gratuitos o versiones de prueba. Están más centradas en ofrecer servicios globales a sistemas basados en el IoT. Ya no es solo recibir datos, en estas plataformas nos permiten almacenar webs, API para móviles, bases de datos, etc…
Podemos decir que son el paso intermedio entre las enfocadas claramente al IoT y las plataformas de las grandes corporaciones.
El siguiente grupo serían las plataformas que ofrecen las grandes empresas y corporaciones como Google, Amazon, Microsoft, IBM, etc… Están orientadas sobre todo al sector industrial y a grandes proyectos del IoT, donde se ven involucrados cientos o miles de dispositivos.
El último grupo englobaría las plataformas de código abierto. Son todas aquellas que nos dan acceso al código sin restricciones. Podemos descargarlas e instalarlas en nuestras máquinas de forma local.
Las mejores Plataformas del IoT con versiones gratuitas
Este grupo es el más interesante y por lo tanto, a la que dedicaré más tiempo. Son plataformas que tienen un claro enfoque a la conectividad de objetos y dispositivos de nuestros proyectos IoT con Arduino. En muchos casos son totalmente configurables y permiten su uso con licencias gratuitas bajo ciertas restricciones.
Si realmente quieres introducirte en la gestión y almacenamiento de datos de tus proyectos IoT con Arduino, utiliza una de las siguientes plataformas.
Samsung Artik Cloud
Artik Cloud es la apuesta de Samsung por el sector del IoT. No solo se trata de una plataforma en la nube, también podemos adquirir hardware, el dispositivo Artik 1020. Este dispositivo pretende ser el competidor de Raspberry Pi en proyectos del IoT. Son módulos que se pueden incluir en hardware de terceros.
Proviene de la antigua plataforma que se llamaba SAMlio y posteriormente SamrtThings. El concepto original era dar soporte a dispositivos médicos y de salud. Pero rápidamente se dieron cuenta que también podrían dar soporte a proyectos del IoT. De aquí surgió Artik Cloud, donde han unificado tanto hardware y software.
Esto no quiere decir que debamos tener un módulo Artik para comunicar con la nube, podemos hacerlo con cualquier dispositivo compatible. Por ejemplo, es sencillo configurar un sistema donde utilicemos un sensor y un Arduino MKR1000.
Es compatible con Amazón Echo (interfaz de voz), Fitbit (monitor de actividad), Nest (termostato de Google) y, por supuesto, con Samsung. Si quieres saber todas las plataformas que son compatibles puedes acceder a su web oficial.
Una de las mayores ventajas es que soporta IFTTT, lo que nos permite comunicación con cualquier cosa que te puedas imaginar.
No dispone de una librería para poder gestionar las comunicaciones desde Arduino. Se hace a través de una llamada a la API RESTful de manera manual. Hay que dominar JSON y la librería nativa para Arduino.
aREST Framework
aRest Framework está centrado en dar soporte a placas como Arduino, ESP8266 y Raspberry Pi. Es una solución completa para crear aplicaciones con servicios RESTful. Soporta comunicaciones WiFi, Ethernet, Bluetooth y Serial. Incluye librerías para Arduino y también del lado del servidor, para controlar las comunicaciones.
Este framework es de código abierto y de uso gratuito. Lo podemos encontrar en GitHub y, por lo tanto, lo podemos montar en un servidor local. Lo que realmente se paga es el uso de los servidores. La documentación es bastante escasa y solo admite el protocolo REST, por lo tanto estamos restringidos a utilizar la API REST que nos ofrece.
Si quieres profundizar en el funcionamiento de GitHub entra aquí.
La gran ventaja es que es una plataforma muy sencilla de utilizar. Dentro del propio entorno oficial de Arduino, podemos descargar la librería de su repositorio y empezar a trabajar.
Una de las características menos atractiva es que la documentación es bastante escasa.
Thinger.io
Lo primero que hay que decir de esta plataforma es que es española. Esto no la hace mejor ni peor, pero demuestra que en España y en el mundo Hispano, también se está apostando por este sector.
Es una plataforma de código abierto. La encontramos en su propio servidor como en GitHub para instalarla en una máquina propia. Una de las cosas que más me atrae (aparte de ser una empresa de habla hispana) es que ofrecen una cuenta gratuita para Makers utilizando su infraestructura en la nube.
La programación es muy sencilla. Disponemos de una librería en el repositorio oficial de Arduino. Además de poder utilizar esta plataforma para nuestros proyectos IoT con Arduino, es compatible con ESP8266, Raspberry Pi o Intel Edison.
Dispone de una consola de administración bastante potente donde podemos gestionar y geolocalizar nuestros objetos conectados. Además, la documentación es muy extensa y libre.
Arduino Cloud
Quizás sea la más sencilla para utilizar en proyectos IoT con Arduino. No hace falta decir que es totalmente compatible con cualquier placa de Arduino que tenga conectividad.
Para configurar un dispositivo es muy sencillo, solo tienes que seguir 4 simples pasos. Dentro del repositorio oficial, encontramos la librería ArduinoCloud.h que nos permite mandar la información a la infraestructura que tiene Arduino en la nube.
El propio configurador te da hasta el código que tienes que cargar en tu placa, dependiendo de la que hayas elegido. Utiliza el protocolo MQTT para transmitir los datos. Por debajo trabaja con la infraestructura en la nube de Amazon.
Aunque es muy sencillo conectar un dispositivo, echo en falta la documentación necesaria para entender cómo funciona por debajo esta plataforma.
Las limitaciones son evidentes, no tiene una API para consultar los datos desde otras aplicaciones, no tiene histórico y no representa la información en tiempo real. Según Arduino, muy pronto irán incorporando estas funcionalidades.
De momento se puede usar de forma gratuita esta plataforma. Las limitaciones las impondrán las tasas de lecturas de los sensores y los propios dispositivos.
ThingSpeak
ThingSpeak es la apuesta de de MathWorks, los creadores de MathLabs, para el Internet de las Cosas. Es una plataforma IoT muy reconocida en el mundo Maker. Está enfocado exclusivamente a la construcción de aplicaciones del IoT. Permite almacenar datos, visualizarlos y exponerlos a otras APIs.
Esta aplicación y API es de código abierto, podemos descargarla de GitHub y utilizarla en nuestro proyectos locales.
La base de esta plataforma son los canales. En ellos se almacenan los datos que le enviamos y se compone de 3 elementos:
- 8 campos para almacenar datos de cualquier tipo.
- 3 campos para almacenar la ubicación, latitud, longitud y elevación. Por supuesto que necesitaríamos un componente que nos diera esta información.
- 1 campo para almacenar el estado.
Cada uno de estos campos puede ser actualizado cada 15 segundos.
Dentro del código hay librerías para muchos lenguajes de programación y por supuesto, para Arduino. Podemos encontrar esta librería para utilizarla en proyectos del IoT con Arduino, dentro del entorno de desarrollo oficial.
Tiene una documentación muy extensa con ejemplos y es totalmente gratuita.
Cayenne
Una de las plataformas más sencillas de usar junto con Arduino Cloud. A base de un gestor visual, es muy sencillo configurar un dispositivo para que se conecte con Cayenne.
Si nos centramos en Arduino, dispone de una librería que la encontramos en el repositorio oficial. Solo hay que descargarla y listo. Una vez tengamos esta librería instalada, ya podemos generar el programa o sketch.
La plataforma nos facilita el código que necesitamos instalar. Hay que tener mucho cuidado. Si estás utilizando un Arduino MKR1000, debes seleccionar un Arduino UNO y el shield WiFi 101.
Dentro de las plataforma vienen diferentes dispositivos (sensores y actuadores) pre-configurados. Es muy sencillo trabajar con ellos. Vienen los más típicos, sensor de temperatura, sensor de presencia volumétrico, sensor de presión atmosférica, etc…
Pero también nos permite crear nuestros sensores personalizados. En las pruebas que he hecho con un sensor de temperatura y humedad, no he conseguido comunicar debido a un error interno de la aplicación. Creo que todavía está algo verde para poder opinar sobre esta plataforma.
Una de las limitaciones es que sólo podemos enviar 10 valores por segundo. Es más que suficiente para monitorizar nuestros sensores.
De momento solo ofrecen una versión gratuita así que puedes empezar a probarla.
Plataformas de integración de sistemas completos del IoT
Este sería el siguiente paso que deberíamos dar con nuestros proyectos IoT con Arduino. Las plataformas anteriores nos ofrecen un servicio enfocado a la obtención de datos, están se enfocan a no solo eso. Nos permiten crear un sistema completo.
Algunas de ellas no tienen versión gratuita pero si una versión de prueba durante un periodo de tiempo.
TheThingsIO
Es una plataforma para proyectos del IoT que nos ofrece un abanico de servicios muy extenso. Especializado en aplicaciones de agricultura, logística, industria 4.0, casas y ciudades inteligentes.
Ofrece un periodo de prueba de 15 días y luego el paquete más básico son 25€ por mes.
IFTTT Maker
IFTTT es una plataforma que permite interconectar servicios en la nube. IFTTT son las siglas en inglés de “Si Esto Entonces Aquello” (“IF This Then That”). Soporta muchos de estos servicios, casi todos los más conocidos y muchos más.
Uno de estos servicios es IFTTT Maker, con el que se pueden integrar nuestros proyectos para enviar datos o para recibir eventos.
IFTTT no tiene un API sino que utiliza llamadas HTTP para comunicarse.
Para enviar datos se utiliza la URL https://maker.ifttt.com/trigger/{evento}/with/key/{clave privada}?value1={valor1}&value2={valor2}&value3={valor3}, así que podemos enviar hasta 3 valores en formato de cadena de texto. También se pueden enviar estos datos en formato JSON.
Para la recepción de eventos necesitamos implementar un servidor Web sencillo en nuestro dispositivo. Configuraremos IFTTT para hacer la llamada que corresponda, adjuntando los datos del evento de origen.
Para recibir los eventos IFTTT nuestro dispositivo necesita estar conectado a Internet, por lo que tendremos que abrir el puerto correspondiente en nuestro enrutador. Hay que tener en cuenta la privacidad de nuestros datos y la seguridad en el caso de no usar un servidor seguro.
Con IFTTT y el servicio IFTTT Maker se podría, por ejemplo, encender un LED en nuestro Arduino cuando nos mencionen en Twitter, enviar una notificación a nuestro celular si la temperatura de nuestro congelador sube demasiado o registrar los valores de nuestra estación meteorológica a una hoja de cálculo en nuestra cuenta de Google Drive.
Tanto IFTTT como IFTTT Maker son servicios gratuitos.
Particle
Particle es una plataforma orientada claramente a proyectos IoT. Ofrece pasarelas seguras y fiables, gestión de dispositivos en tiempo real, integración con otros servicios web y su propio hardware. Tiene una tienda donde poder comprar dispositivos totalmente compatibles.
Solo permite su uso con dispositivos que ellos mismos fabrican. No hay compatibilidad con Arduino. No te pierdas los kit de desarrollo que ofrecen. Económicos y muy fáciles de integrar con la plataforma.
Puedes encontrar el Photon Kit desde 29 $.
Firebase Google
Firebase es una solución muy completa que nos ofrece una plataforma en la nube no solo para el IoT. Se complementa con base de datos, hosting y diferentes servicios orientados a dar una solución completa a nuestros proyectos.
Es una solución muy recomendable para proyectos profesionales que están empezando a andar. Ofrece una cuenta gratuita muy interesante para probar el servicio.
Plataformas del IoT de las grandes corporaciones
En esta categoría encontramos a grandes del sector de la tecnología y algunas no tan conocidas, pero que se han abierto un hueco en este mercado. Casi todas las plataformas ofrecen un periodo de prueba y luego se pasa al pago por uso. Este tipo de plataformas son para uso profesional, gestión de maquinaria, sector industrial y cualquier área donde se requiera un control de máquinas, dispositivos u objetos a gran escala.
Ayla Networks
Esta plataforma nos presenta una solución completa a los sistemas del IoT. Hardware necesario para crear los dispositivos, plataforma en la nube con acceso a través de una API y una plataforma para crear aplicaciones móviles. Está enfocada sobre todo al sector comercial y no dispone de una versión de prueba gratuita.
Autodesk Fusion Connect
Seguramente ya conozcas Autodesk, compañía dedicada al software de diseño en 2D y 3D para las industrias de manufacturas, infraestructuras y construcción. Entre sus productos más famosos se encuentran programas como el AutoCAD, 3DS Max, Maya o del que que me habrás oído hablar más de una vez, circuits.io (antiguo 123dCircuits).
Está apostando muy fuerte por dar servicios a los dispositivos del IoT a nivel industrial y se enfoca, principalmente, al análisis de datos y la predicción con sistemas de inteligencia artificial como el Nutonian.
No dispone de una cuenta gratuita y lo más económico es un pago de 1.000 $ al mes por utilizar estos servicios. Sin duda alguna, es una buena apuesta para el sector industrial.
AWS (Amazon Web Services) IoT
Sin duda alguna, una de las grandes plataformas en la nube. Ofrece muchos servicios relacionados con la comunicación entre servicios y el análisis de datos. No es una plataforma gratuita, el precio depende de los servicios que utilices pero la media son 5$ por millón de mensajes.
Google Cloud Platform IoT
Dentro del amplio abanico que ofrece esta plataforma de servicios en la nube, se encuentra el servicio de soluciones para el Internet de las Cosas (IoT). Este servicio se centra en los objetos conectados y permite escalar nuestros sistemas desde las primeras fases, donde apenas hay tráfico de datos, hasta las fases donde el volumen de información es bastante grande. Ofrece un kit donde tenemos una placa BeagleBone Green Wireless adaptada específicamente para Google Cloud.
Permite periodo gratuito y te regalan 300$ para gastar durante 60 días en sus servicios. Hay que introducir una tarjeta de crédito válida, pero garantizan que no cobrarán nada una vez hayas acabado el periodo de prueba. La facturación depende de los servicios utilizados.
IBM Watson IoT
IBM, el magnate de los ordenadores, no solo ofrece servicios para el IoT. En su plataforma encontramos una amplia gama. Dentro del IoT, tienen catalogados los servicios por áreas específicas automóviles, electrónica y seguridad.
Permite un periodo de prueba de 30 días y luego se paga por los servicios consumidos.
Azure IoT Suite
Al igual que la plataforma de Amazon AWS y de Google Cloud, Microsoft también se mete en el mercado del IoT gracias a Azure, su plataforma en la nube. Ya no solo es cuestión de poder gestionar dispositivos, datos y todo lo que conlleva un sistema del IoT. Además te ofrecen sus otros servicios como complemento a tus sistemas.
Permite crear una cuenta gratuita donde te regalan hasta 200$ para utilizar con sus servicios. Una vez se finaliza el periodo de prueba, debes pagar por los servicios consumidos.
Thingworx
Centrada en el sector industrial ofrece servicios para gestionar dispositivos y objetos, análisis de datos e incluso realidad aumentada. Ofrece un periodo de prueba de 120 días y luego pago por uso.
Xively
Es un referente dentro de las plataformas del IoT. Está enfocada a esta disciplina y ofrece un amplio abanico de servicios. Es una plataforma muy completa. Ofrece un periodo de prueba de 30 días y de momento no hay precio disponible.
Zatar
Esta plataforma está enfocada a dispositivos de marcas compatibles con sus servicios. No soporta conexiones con Arduino pero si con Raspberry Pi. Ofrecen una cuenta gratuita de 60 días con límites y luego pagas por uso.
Plataformas de código abierto instalación en local
Este tipo de plataformas son de código abierto. Esto significa que está a nuestra entera disposición pudiendo descargar el código fuente e instalarla en cualquier dispositivo compatible.
No es recomendable para usuarios que no sean expertos en tecnología del lado del servidor. Muchos de ellos están basados en servidores web como Apacho o NodeJS.
A continuación te dejo una lista de alguna de ellas, pero seguramente haya muchas más.
Zetta
Plataforma de código abierto basada en NodeJS para proyectos del IoT.
OpenHAB
Software de automatización de código abierto para el hogar basado en Java.
Node-RED
Plataforma de código abierto basada en NodeJS. Permite crear proyectos del IoT de una forma visual.
Kaa
Solución completa basada en código abierto que te permite crear aplicaciones del IoT tanto en el servidor como en el cliente. Se trata de aplicación multiplataforma ya que está disponible para todos los sistemas operativos y dispositivos.
OpenIoT
Es una plataforma muy fácil de usar que nos permite conectar multitud de sensores a nuestros proyectos del IoT. Tiene un apartado muy interesante centrado en ciudades inteligentes.
Kura
Esta plataforma es la apuesta de Eclipse (el entorno de desarrollo) para los proyectos IoT. Es muy completa y compatible con casi todas las placas del mercado.
Domoticz
Plataforma diseñada para funcionar en varios sistemas operativos. Está centrada en los sistemas de automatización del hogar.
MajorDoMo
Es una plataforma de código abierto para la automatización del hogar. Basado en tecnologías web y compatibles con todas las plataformas y sistemas operativos del mercado.
AllJoyn
Esta plataforma está respaldada por la Allseen Alliance y es una de las más utilizadas en todo el mundo. Nos ofrece un framework fácil de usar y que nos permite que los dispositivos se comuniquen entre ellos.
Bug Labs
Es una plataforma que engloba dos partes. Por un lado el sistema de mensajería Dweet y por otro lado un software de diseño, Fancobordo.
DeviceHive
Es una plataforma para proyectos del IoT que nos permite el análisis de datos en tiempo real. Preparada para ser ejecutada en grandes plataformas en la nube como Azure, AWS o Google Cloud.
Conclusiones
En la época actual, ya encontramos multitud de proyectos desarrollados bajo el paraguas del IoT. Todos tienen algo en común, se dedican a compartir la información a través de plataformas enfocadas en recibir y transmitir datos.
Hoy te he enseñado unas cuantas plataformas que encontramos en el mercado. Seguramente si, dentro de unos meses vuelvo a hacer otra investigación, habrán surgido multitud más de ellas. No lo dudes y empieza a utilizar dichas plataformas para tus proyectos IoT con Arduino. El futuro ya está aquí y merece la pena conocer lo que nos espera en, tal vez, unos meses.
Si te ha gustado comparte por favor. Cualquier duda o sugerencia en los comentarios, gracias.
Puedes escuchar este programa en, iVoox, iTunes y en Spreaker. Si lo haces, por favor valora y comenta, así podremos llegar a más gente.
Gracias a Shutterstock por ceder los derechos de la imagen