Comenzando con MQTT y Arduino Uno

Ari Mahpour
|  Creado: Octobre 19, 2021  |  Actualizado: Julio 1, 2024
Iniciándose con MQTT

En el mundo actual, donde los dispositivos conectados se han vuelto ubicuos, el término Internet de las Cosas (IoT, por sus siglas en inglés) se ha convertido en la descripción por defecto para "dispositivo que está conectado a internet". Aunque este acrónimo, glorificado y en camel case, es hermoso por derecho propio, hay mucho más en los "dispositivos conectados a internet" de lo que la gente se da cuenta. En este artículo, me gustaría profundizar en uno de los protocolos más prevalentes utilizados en dispositivos IoT: el protocolo de Transporte de Telemetría MQ (MQTT). Cubriremos brevemente qué es, cómo funciona y qué tiene de novedoso en comparación con otras tecnologías utilizadas. También repasaremos un ejemplo comprensivo utilizando un dispositivo Arduino.

El Qué y el Porqué del MQTT

En una configuración típica de cliente-servidor tenemos un proveedor (es decir, los propios dispositivos) que publica datos de sensores en el servidor y un consumidor que solicita ver esos datos de sensores desde el servidor. MQTT no es diferente. Es un protocolo ligero utilizado para comunicarse entre dispositivos. Los dispositivos típicamente "publican" (es decir, envían) datos a un "broker" (o servidor) MQTT, que luego se guarda para ser servido a otros dispositivos o aplicaciones web. Otro dispositivo o aplicación web "se suscribe" a ese conjunto de datos (es decir, solicita los datos) desde el broker MQTT y luego el broker MQTT entrega esos datos a ellos. Piensa en esto realmente como un servidor web glorificado con dos excepciones principales:

  1. Los paquetes de datos son muy ligeros (lo que mejora la velocidad, eficiencia y costo)
  2. MQTT puede utilizar otros modos de comunicación además de solo internet (por ejemplo, Bluetooth)
Figure 1: MQTT Broker with Devices
Figura 1: Broker MQTT con Dispositivos

Por las dos razones mencionadas anteriormente, MQTT se ha convertido en un protocolo muy popular con dispositivos IoT. Históricamente, las personas utilizarían solicitudes HTTP POST/GET para lograr esta forma de comunicación dispositivo-servidor, pero esto inhibía su capacidad para usar otros dispositivos de comunicación como Bluetooth o ZigBee. Dado que MQTT es agnóstico en ese aspecto, ahora podemos tener capacidades de paso de mensajes dentro de una red basada en malla usando MQTT sin nunca conectarnos a internet

Comenzando con MQTT

Hay muchas maneras de comenzar con MQTT, incluyendo diseñar una solución completa de principio a fin. Para simplificar las cosas, utilizaremos un servicio gratuito de broker MQTT proporcionado por Adafruit en este ejemplo. Esto nos permitirá centrarnos solo en el lado del cliente del proceso de desarrollo. Para comenzar, necesitarás lo siguiente:

  1. Dispositivo Arduino (Este ejemplo utiliza el Arduino Uno)
  2. Escudo Arduino compatible con conectividad a internet (por ejemplo, Arduino Ethernet shield) o un dispositivo compatible con Arduino basado en Wifi como el ESP8266.
  3. Software Arduino IDE
  4. Cuenta con Adafruit IO.

Hay algunas cosas que necesitamos hacer primero para configurar nuestro entorno. Primero, configuraremos nuestro hardware. Voy a usar un Arduino Uno y un Arduino Ethernet Shield conectados a mi red local.

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Figura 2: Arduino Uno y Arduino Ethernet Shield uno al lado del otro

Necesitaremos apilar el Ethernet Shield sobre el Arduino y conectarlo a la red de esta manera:

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Figura 3: Arduino Uno y Arduino Ethernet Shield conectados juntos y enchufados

Una vez que tengamos nuestro hardware configurado, abramos el Arduino IDE e instalemos las bibliotecas necesarias. Abre el Arduino IDE y navega a Herramientas > Administrar bibliotecas…

Figure 4: Manage Libraries menu option
Figura 4: Opción de menú Administrar Bibliotecas

Busca la Biblioteca MQTT de Adafruit y haz clic en instalar:

Figure 5: Library Manager
Figura 5: Gestor de Bibliotecas

Se te pedirá que instales las dependencias de la biblioteca también. Adelante y haz clic en “Instalar todo”.

Figure 6: Library Dependencies Dialog
Figura 6: Diálogo de Dependencias de la Biblioteca

Una vez que hayas instalado las bibliotecas de soporte, puedes abrir un ejemplo navegando a Archivo > Ejemplos > Adafruit MQTT Library > mqtt_ethernet.

Figure 7: Menu navigation for the mqtt_ethernet example
Figura 7: Navegación del menú para el ejemplo mqtt_ethernet

En este punto, necesitamos hacer una pausa y obtener nuestras credenciales de nuestra cuenta de Adafruit IO. Inicia sesión en Adafruit IO y haz clic en "Mi clave" en la parte superior:

Figure 8: My Key Menu Option
Figura 8: Opción de Menú Mi Clave

Ahora regresa a tu ejemplo de sketch de Arduino mqtt_ethernet y rellena los campos AIO_USERNAME y AIO_KEY con los campos "Nombre de usuario" y "Clave activa" ubicados en tu cuenta de Adafruit IO. Asegúrate de que tu dispositivo esté conectado y luego haz clic en Subir:

Figure 9: Arduino Sketch ready for the upload
Figura 9: Sketch de Arduino listo para la carga

Para ver el estado del dispositivo (y asegurarte de que esté conectado al broker MQTT) navega a Herramientas > Monitor Serie. Deberías ver una salida que se ve así:

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Figura 10: Salida del Monitor Serie del ejemplo mqtt_ethernet de Arduino

En este punto, hemos confirmado que los datos se están enviando con éxito al broker MQTT. Para echar un vistazo a los datos reales en el servidor, volvamos a nuestra cuenta de Adafruit IO y hagamos clic en "Feeds" luego clic en "fotocélula"

Figure 11: Adafruit IO Feeds
Figura 11: Feeds de Adafruit IO

Ahora obtenemos una captura en vivo de los datos que nuestro Arduino está enviando al broker MQTT. También podemos descargar datos históricos.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Figura 12: Datos en vivo e históricos enviados al broker MQTT desde el Arduino

¡Felicidades! Ahora has configurado un dispositivo habilitado para MQTT y has publicado tus datos en un broker MQTT. Ahora da el siguiente paso construyendo tus propios sensores personalizados y publicando los datos en tu broker MQTT.

Conclusión

En este artículo aprendimos qué es MQTT, por qué se utiliza y cómo implementarlo en un microcontrolador. También demostramos cómo comenzar con un servicio de broker MQTT gratuito y ver los datos en su servidor. Ahora deberías sentirte cómodo para iniciar tu propio sketch de Arduino basado en el ejemplo que usamos para publicar tus propios datos de sensores en el broker MQTT y verlos en la nube.

Sobre el autor / Sobre la autora

Sobre el autor / Sobre la autora

Ari es un ingeniero con una amplia experiencia en diseño, fabricación, pruebas e integración de sistemas eléctricos, mecánicos y de software. Le apasiona integrar a los ingenieros de diseño, de verificación y de pruebas para que trabajen juntos como una unidad cohesiva.

Recursos Relacionados

Volver a la Pàgina de Inicio
Thank you, you are now subscribed to updates.