Normalmente si buscamos pruebas con el modulo ESP32 y el protocolo MQTT, principalmente utilizan Arduino IDE para ESP32, no hay ningún problema, pero en esta ocasión utilizaremos en entorno de desarrollo de espressif «ESP-IDF» o «Espressif IoT Development Framework» para los ESP32 el cual tiene mas ventajas y características para aplicaciones mas robustas.
Modulo ESP32
Los modulos ESP32 tienen mas prestaciones que los ESP8266 como ya sabemos, pero dichos recursos no pueden ser aprovechados totalmente con arduino IDE, en cambio ESP-IDF cuenta con todas las características para crear aplicaciones un tanto mas profesionales.
Materiales y Donde Comprarlos
Video: MQTT in ESP32 with ESP-IDF ESP-MQTT
Pruebas Realizadas
En esta oportunidad probaremos el ejemplo de MQTT utilizando TCP/IP disponible en ESP-IDF Github.
Para la prueba nuestro ESP32 utilizara el broker publico test.mosquitto.org por el puerto 1883 y utilizaremos otro cliente MQTT con ayuda de Node-RED.
ESP-IDF
Espressif IoT Development Framework
Hace un tiempo indique como instalar y configurar ESP-IDF para linux, en mi caso Lubuntu una variante de Ubuntu, si eres usuario Windows, tambien puedes montar Virtualbox y crear una Maquina virtual de Lubuntu e Instalar ESP-IDF Sin problemas, a continuación algunos tutoriales recomendados.
Recomendación: Para una explicación mas detallada paso a paso recomiendo ver el vídeo completo MQTT in ESP32 with ESP-IDF ESP-MQTT & Node-RED disponible en nuestro canal de Youtube PDAControl.
Lubuntu en Maquina virtual (Vitualbox) en Windows
Instalación completa y permanente de Lubuntu, yo lo utilizo y es excelente!!!.
ESP-MQTT sobre TCP/IP
Utilizaremos el ejemplo de ESP32 para MQTT.
Editar Compilar y Descargar
Dado que se requiere un proceso muy sencillo para descargar y compilar el código a nuestro ESP32, dicho proceso se explicara paso a paso en nuestro Video tutorial: MQTT in ESP32 with ESP-IDF ESP-MQTT : PDAControl .
por defecto estos módulos en mi caso utilizan el USB/Serial «/dev/ttyUSB0» en caso de utilizar otro cambian en «make menuconfig».
descargando código a ESP32.
En cualquiera de las 3 versiones vistas anteriormente debe ejecutarse sin problemas, pero utilizare la versión ESP32-PICO-D4, me lo obsequiaron en un concurso , llego 3 meses tarde ya había terminado el concurso, pero ELEKTOR muchas gracias por el modulo.
Recomendación: Para una explicación mas detallada paso a paso recomiendo ver el vídeo completo MQTT in ESP32 with ESP-IDF ESP-MQTT & Node-RED disponible en nuestro canal de Youtube PDAControl.
Código en ejecución.
Node-RED
Para esta prueba utilizaremos Node-RED, utilizando los Nodos de publicación y suscripción MQTT.
- Tópico de suscripción : /topic/qos1
- Tópico de publicación: /topic/qos0
Recomendación: Para una explicación mas detallada paso a paso recomiendo ver el vídeo completo MQTT in ESP32 with ESP-IDF ESP-MQTT & Node-RED disponible en nuestro canal de Youtube PDAControl.
Resultados
Al iniciar o reiniciar el ESP32, el manejador de eventos MQTT publica «data_3» desde el tópico, «/topic/qos1».
Se suscribe al tópico «/topic/qos0».
Desde Node-RED enviamos el datetime en formato Unix y el ESP32 lo recibe instantáneamente.
Conclusiones
Bueno este tutorial, no es nada novedoso pero servirá si quieren iniciar en MQTT para ESP32 con ESP-IDF.
Quizás ESP-IDF parezca muy complejo pero claramente no es para novatos, pero tienen una gran documentación y su dificultad es recompensada con su robustez.
Nuevamente si quieren hacer una aplicación robusta en ESP32, recomiendo utilizar ESP-IDF, no tengo nada en contra de Arduino IDE lo utilizo bastante, pero si en alguna oportunidad desean crear una solución basada en ESP32, el entorno de desarrollo de Espressif es su mejor apuesta y Sacaran mejor provecho a las características de los ESP32.
Personalmente no he probado a fondo ESP-IDF pero conozco su alcance al leer la documentación, quizás realice un emprendimiento para una solución industrial y utilizare ESP-IDF.
Recomendación: Para una explicación mas detallada paso a paso recomiendo ver el vídeo completo MQTT in ESP32 with ESP-IDF ESP-MQTT & Node-RED disponible en nuestro canal de Youtube PDAControl.
Ventajas de ESP-IDF
- Depuración de procesos y subprocesos.
- Estructuración de Código.
- Control de ejecución de Tareas rutinas y Funciones.
- Documentación detallada.
- Control y mejor manejo de Eventos ejemplo MQTT y Wifi.
- FreeRTOS es migrable a cualquier otra plataforma de Hardware sin grandes problemas de compatibilidad o grandes modificaciones en código.