Internet de las Cosas (IoT) es la red de dispositivos electrónicos que se conectan a la nube para interactuar e intercambiar datos. De esta manera, cualquier objeto cotidiano que incorpore esta tecnología puede ser monitorizado y controlado remotamente a través de Internet. En este kit se explican 5 proyectos de ejemplo:
Detección de la calidad del aire
Detección del ruido ambiental
Estación de seguimiento de la calidad ambiental
Sistema automatizado de riego
Sistema de seguridad
Estos proyectos no están conectados a Internet, pero en el curso hemos visto como conectarlos a Internet.
MQTT no es una plataforma IoT ni un servicio, es un protocolo de comunicación al mismo nivel que HTTP.
Con el protocolo MQTT y un broker público, se puede extender a cualquier aplicación IoT, no está restringido a las plataformas vistas y me permite interconectar Micro:bits entre ellas, con un móvil, con una web o cualquier elemento.
Pero si queremos los servicios de almacenamiento, gráficas, etc… necesitamos montar un sistema que lo haga, por ejemplo Raspberry Pi + NodeRed.
MQTT son las siglas de Message Queue Telemetry Transport y tras ellas se encuentra un protocolo ideado por IBM y liberado para que cualquiera podamos usarlo enfocado a la conectividad Machine-to-Machine (M2M).
Está enfocado al envío de datos en aplicaciones donde se requiere muy poco ancho de banda. Además, sus características le permiten presumir de tener un consumo realmente bajo así como precisar de muy pocos recursos para su funcionamiento.
Cómo funciona MQTT
En el caso de que la comunicación principal se base en HTTP, la solución tradicional para enviar información al dispositivo sería HTTP Polling. Esto es ineficiente y tiene un coste elevado en aspectos de tráfico y/o energía. Una manera más novedosa de hacerlo sería con el protocolo MQTT, que permite crear una conexión HTTP completa bidireccional.
La diferencia entre una HTTP y MQTT es que MQTT mantiene una conexión hacia el servicio abierta y puede responder mucho más rápido a los cambios en el feed. La HTTP solo conecta al servicio cuando se hace una petición (request) y es más apropiada para proyecto donde el dispositivo permanece en modo sleep (para reducir el consumo) y despierta solo para mandar o recibir datos. (Push vs pull)
Los elementos de MQTT son:
Broker
Publisher
Subscriber
Es un transporte de mensajería de publicación/suscripción que es extremadamente ligero e ideal para conectar dispositivos pequeños a redes con ancho de banda mínimo. El MQTT es eficiente en términos de ancho de banda, independiente de los datos y tiene reconocimiento de sesión continua, porque usa TCP.
Para filtrar los mensajes que son enviados a cada cliente los mensajes se disponen en topics organizados jerárquicamente. Un cliente puede publicar un mensaje en un determinado topic. Otros clientes pueden suscribirse a este topic, y el broker le hará llegar los mensajes suscritos.
La base del protocolo el el Broker o servidor:
Como MQTT Puede Hacer Control Remoto
Para hacer un control remoto desde cualquier parte del mundo de un dispositivo en casa o en el aula, saltándose todas restricciones de NAT y seguridad, es posible. Solo hace falta que desde casa o el aula se de acceso a la red o a los dispositivos en ella a:
Puerto 1883 y/o 8883 de la IP del broker MQTT
Cualquier elemento conectado al broker MQTT puede ser controlado remotamente.
Y así es como funcionan todos los elemento “smart” que compramos:
Topics MQTT
La comunicación se basa en unos «topics» (temas), que el cliente que publica el mensaje crea y los nodos que deseen recibirlo deben suscribirse a él. La comunicación puede ser de uno a uno, o de uno a muchos.
Dentro de la arquitectura de MQTT, es muy importante el concepto «topic» o «tema» en español ya que a través de estos «topics» se articula la comunicación puesto que emisores y receptores deben estar suscritos a un «topic» común para poder entablar la comunicación.
Un «topic» se representa mediante una cadena y tiene una estructura jerárquica. Cada jerarquía se separa con ‘/’.
Por ejemplo, «edificio1/planta5/sala1/raspberry2/temperatura» o «/edificio3/planta0/sala3/arduino4/ruido«. De esta forma se pueden crear jerarquías de clientes que publican y reciben datos, como podemos ver en la imagen:
Existen dos comodines en MQTT para suscribirse a varios topics (no se pueden usar para publicar):
Multi-level Wildcard: # (se suscribe a todos los hijos bajo esa cola)
Single Level Wildcard: + (se suscribe solo a ese nivel)
MQTT Explorer
MQTT Explorer es un cliente MQTT integral que proporciona una descripción general estructurada de sus topics MQTT y hace que trabajar con dispositivos/servicios en su broker sea muy simple.
Ir a devices MQTT y configurar un dispositivo para que publique y se suscriba a un canal.
HiveMQTT
HiveMQ es un broker MQTT y una plataforma de mensajería basada en cliente diseñada para mover datos dentro y fuera de dispositivos IoT conectados de manera rápida, eficiente y confiable.
Poner el User y Password, luego click “Connect” para conectarse por MQTT .
Aparece un aviso de «conectado» marcado en verde si la conexión se realiza correctamente. Haga clic en «Agregar suscripción a nuevo tema»..
Elegir “Subscribe”.
Si se completa, se puede enviar mensajes desde MakeCode.
El «hola» en el bloque es el mensaje que vamos a enviar, puedes configurarlo tú mismo. Y el bloque de temas: “testtopic/1” son las configuraciones previas en la plataforma, puedes reemplazar “#” con cualquier número.
Siguiendo los pasos anteriores, presione el botón A en micro:bit para enviar «hola» a la plataforma.
Por supuesto, podemos enviar datos desde la plataforma a la parte local, configurar el tema como «testtopic/2» y añadir los mensajes en «Mensaje» y luego hacer clic en «Publicar» para enviar. Y asegurarse de mantener el mismo tema en los bloques.
Envir el número “2” desde la plataforma y muéstralo en el micro:bit.
ThingSpeak puede manejar solicitudes HTTP, guardar y procesar datos. Esta plataforma funciona como aplicación abierta, recopilación de datos en tiempo real, datos de ubicación, procesamiento de datos, visualización e información del estado del dispositivo. Puede integrar muchas plataformas de hardware y software como Arduino, Raspberry Pi, Micro:bit, aplicaciones móviles e Internet, redes sociales y procesamiento de datos MATLAB. También proporciona un servicio alojado además de la edición de código abierto.
Registro en ThingSpeak: Ir al sitio web de Thingspeak, haga clic en Comenzar gratis y en crear el paquete de cuenta MathWorks.
Completar la información de registro y hacer clic en continuar para continuar. (Como se muestra a continuación)
Confirmar la dirección de correo electrónico, haga clic en ella como cuenta de inicio de sesión para continuar.
Verificar la cuenta de MathWorks y thingspeak le enviará un correo electrónico a su correo electrónico. Debe hacer clic en el enlace del correo electrónico para verificar y continuar.
Luego configure su propia identificación de usuario y contraseña (Nota: se requieren palabras en mayúsculas y minúsculas), luego haga clic en continuar para continuar.
Entonces, ¡regístrese correctamente!
Guia de ThingSpeak
Aquí subiremos los datos tomados por Micro:bit como la intensidad luminosa para realizar pruebas. Hacer clic en «My Channels» y hacer clic en Nuevo canal para su nuevo proyecto.
Se mostrará una lista de diseño de parámetros del proyecto. Si hay más parámetros, debe elegir más campos.
Luego, hacer clic en guardar canal.
Puedes encontrar los datos de lo que hemos subido aquí:
Haga clic en API KEY, se mostrarán los parámetros que se muestran a continuación.
Programar la Micro:bit
Configurar la wifi: Arrastrar el bloque set 8266 al inicio y elija RX P8 y TX P12 y baud rate115200.
Entra en el bloque de conexión wifi, escribe el nombre de tu wifi y la clave.
Nota: El módulo ESP8266 no es compatible con wifi 5G, conéctalo a wifi 2.4G.
Configurar la conexión con Thingspeak: conectar Thingspeak, configurar datos y cargar datos a Thingspeak para siempre.
Escribir la clave de API en los datos establecidos y ajuste el bloque de números aleatorios al campo 1.
Resultado
Subiendo los datos aleatorios al thingspeak continuamente, puedes consultar todos los datos en Thingspeak.
Añadir Visualización y Widgets a Thingspeak
Haga clic en el botón de visualización para elegir las tres opciones: [gauge], [Pantalla numérica], [luz indicadora de umbral].
Elija el tipo de gauge y haga clic en SIGUIENTE, escriba el nombre, el campo, el valor máximo y mínimo del gráfico, luego haga clic en Crear para crear un nuevo gráfico.
Tanto el gráfico como el valor del campo 1 cambiaron al recibir los datos del Micro:bit.
Agregar la visualización numérica y la luz indicadora de umbral de la misma manera para el gráfico.
Mi ejemplo con dos números aleatorios y sensor de luz:
KidsIoT es una plataforma para IoT (Internet de las Cosas) producida por Elecfreaks que con sólo tres minutos de conectarse puede lograr un control remoto al micro:bit. (Actualmente solo en versión en inglés)
Regístrarse en el sitio web para obtener una nueva cuenta.
Completar con la dirección de correo electrónico y contraseña y haga clic en Registrarse.
Después de registrarse, se enviará un correo electrónico a su buzón de correo.
Activar la cuenta con los enlaces enviados a su buzón de correo; tenga en cuenta que el correo podría estar en su carpeta de correo no deseado por primera vez.
¡Regístrado exitosamente!
Guia de uso de Kids IoT
Ir a la interfaz de inicio de sesión haciendo clic en Iniciar sesión.
Hacer clic en iniciar sesión para ingresar a la interfaz de administración del dispositivo, el «Nombre de usuario» en la esquina superior izquierda es su dirección de correo electrónico, el «Token de usuario» único en la esquina superior derecha es el único código de identificación de esta plataforma que corresponde a tu cuenta.
Crar un nuevo dispositivo, «Tema/Topic» es el único código de identificación (el único dispositivo en la cuenta) y puede revisar el nombre del dispositivo (solo se pueden crear 10 dispositivos). Haga clic en «Detalles» para ver la información, haga clic en «Delete» para eliminar el dispositivo.
Los datos de carga se mostrarán a la izquierda, a la derecha un gráfico de líneas de dos dimensiones para datos y tiempo. Puede elegir los datos que desea ver o exportar los datos. Se puede utilizar el “Control remoto” para dar instrucciones al micro:bit.
Código Micro:bit
Conectarse a la plataforma Kids’IoT, el token de usuario es el único código de identificación de la cuenta que no se puede cambiar..
El tema es el único código de identificación y debes designar el dispositivo de carga al conectarte. El número de dispositivo (Tema) estará en orden secuencial.
Cargar un número entero en KidsIoT y se mostrará aquí.
Se puede comprobar si el estado de la conexión es exitoso, «True» para correcto, «False» para error. Se puede editar el sistema de reconexión para garantizar una conexión estable.
Cuando esté bien conectado, puede hacer clic en este interruptor para operar estos dos bloques y el dispositivo.
Conecte WIFI cuando esté en inicio. Comprobar continuamente si el WIFI está conectado correctamente; en caso afirmativo, se mostrará un icono grande o continuará conectándose. Comprobar continuamente si la conexión a KidsIoT está lista, en caso afirmativo, se mostrará un pequeño icono o continúa conectándose.
Integrar con KidsIoT y mandar los datos de humedad y sensor de agua los topics 1 y 2 y además forzar la apertura y cierre del servo con el control remoto.
Las siglas de IFTTT significan «IF This, Then That», lo que traducido al español significa «Si esto, entonces aquello». Con este nombre, se refiere a que es una página con la que puedes crear y programar acciones entre diferentes aplicaciones, de manera que si haces o pasa determinada cosa con una aplicación, entonces automáticamente realiza una acción con ella.
IFTTT también tiene mucho que ver con la hiperautomatización
Así pues, lo que hace esta aplicación es ser intermediario entre sus más de 500 servicios asociados para poder combinar acciones y automatismos. Con estas recetas o applets se abarcan todo tipo de servicios, desde automatismos para blogs y redes sociales hasta otros para asistentes de voz, sistemas domóticos y estrategias de correo electrónico.
El fabricante proporciona una extensión para programar la placa e interactuar con los elementos del kit.
La programación se puede realizar mediante MakeCode ya que cuenta con una extensión desarrollada por el fabricante para IoT:bit, que facilita la conexión a la red WiFi además de implementar bloques que permiten usar diferentes plataformas como: ThingSpeak, KidsIoT, MQTT y IFTTT.
ThingSpeak permite desarrollar aplicaciones IoT y también analizar y visualizar los datos en MATLAB
KidsIoT destaca por su facilidad de uso
MQTT es un protocolo que permite la comunicación máquina a máquina con un escaso uso de datos
IFTTT está pensada para programar acciones «IF This Then That / Si ocurre esto, haz eso”
Una vez añadido un nuevo proyecto, debemos añadir la extensión del kit para programarlo.
Pulsar en “Extensiones”:
Añadir la extensión para usar el kit IoT. Buscar con la palabra “IoT” y pulsa sobre el paquete como muestra la imagen.
Nota: Si recibe una advertencia que le indica que algunos paquetes se eliminarán debido a problemas de incompatibilidad, siga las instrucciones o cree un nuevo proyecto en el menú Archivo de proyecto.
Uso del RTC
Hay un chip DS1307RTC integrado en el IOT:bit como se muestra en la imagen de abajo. La sincronización RTC necesita una pila de botón CR1220 para un suministro de energía duradero. Necesitamos que la sincronización del RTC mantenga la precisión de la hora en caso de un corte de energía.
La función más importante de IOT:bit es WIKI. El módulo ESP12FWIFI integrado puede conectar WIFI y enviar información. Para utilizar el puerto de comunicación con el micro:bit y el pin RXP8, TXP12 es especial para IoT.
Al iniciar, inicializar ESP8266 a la conexión predeterminada con P8 y P12. Conectar al WiFi, poner la clave y la contraseña. En el bucle forever, conecte el thingspeak o cualquier otro servicio.
Código Para los Otros Sensores del Kit
IoT:bit también es compatible con otros sensores ELECFREAKS, se agregan los nuevos bloques Octopus al paquete.