Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar un ESP32-DevKitC a Ubidots a través de MQTT
Conectar un ESP32-DevKitC a Ubidots a través de MQTT

Aprende a conectar el ESP32, usando MQTT, a Ubidots, la plataforma de creación de aplicaciones de monitoreo.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

El ESP32, sucesor del ESP8266, es un microcontrolador de sistema en chip de bajo costo (menos de $15), de bajo consumo, con Wi-Fi integrado y Bluetooth de doble modo. La serie ESP32 emplea un microprocesador Tensilica Xtensa LX6 en variantes de doble núcleo y de un solo núcleo. El ESP32 fue creado y desarrollado por Espressif Systems, una empresa china con sede en Shanghái y con un historial comprobado de producción y distribución de microcontroladores de calidad.

Para aprender más sobre el ESP32, consulta la documentación del dispositivo aquí.

¡Siguiendo esta guía podrás PUBLICAR y SUSCRIBIR datos a/desde Ubidots usando el ESP32 en solo un par de minutos!

Requisitos

Tabla de Contenidos

  1. Configura tu ESP32 con el Arduino IDE

  2. Publicar valores en una variable

  3. Suscribirse a una variable

  4. Resumen

1. Configura tu ESP32 con el Arduino IDE

Para comenzar este tutorial, empezaremos conectando tu ESP32 al puerto USB de tu computadora para programar el dispositivo.

1. Comienza descargando el Arduino IDE, si no lo has hecho ya.

2. Luego, instala la plataforma ESP32 en tu Arduino IDE. Consulta los siguientes enlaces según tu sistema operativo. Los siguientes enlaces de Espressif te guiarán para instalar el ESP32 en tu computadora.

Nota: Si estás usando sistemas operativos Linux o Mac, se requiere un paso adicional ya que necesitas instalar la plataforma ESP32 en el Arduino IDE desde la terminal de tu computadora primero. Utiliza los enlaces a continuación para ejecutar las funciones necesarias en la Terminal y luego regresa a esta guía para continuar con la integración del ESP32.

Imagen de referencia usando una terminal de MacOS:

3. Después de instalar la plataforma ESP32 usando los enlaces anteriores de Espressif Systems, se te pedirá que reinicies el Arduino IDE. Asegúrate de hacerlo.

4. Después del reinicio, selecciona tu Módulo ESP32 Dev desde el menú Herramientas > Placa.

5. Además, necesitamos poder comunicarnos con el ESP32. Asegúrate de seleccionar la ubicación del puerto de comunicación. Ve a Herramientas > Puerto > Selecciona el PUERTO apropiado para tu dispositivo.

NOTA: Si estás usando Windows, necesitas establecer una conexión serial entre el ESP32 y tu computadora. Consulta este enlace para instalar los controladores necesarios y verificar la conexión. Además, como usuario de MAC o Linux, el enlace describe cómo verificar la comunicación serial si lo deseas.

6. A continuación, descarga e instala la PubSubClient Library. Para una explicación detallada sobre cómo instalar bibliotecas usando el Arduino IDE, consulta esta guía.

7. A continuación, descarga e instala la Ubidots ESP MQTT Library. Para una explicación detallada sobre cómo instalar bibliotecas usando el Arduino IDE, consulta esta guía.

2. Publicar valores en una variable

Con el siguiente código de ejemplo podrás publicar lecturas ANALÓGICAS tomadas del pin GPIO34 del ESP32.

1. Para publicar tu primer valor en Ubidots, abre el Arduino IDE y pega el código de ejemplo a continuación. Una vez que hayas pegado el código, debes asignar tu único TOKEN de Ubidots, SSID (Nombre de Wi-Fi) y Contraseña de la red disponible.

/****************************************** * * Este ejemplo funciona para usuarios tanto Industrial como STEM. * * Desarrollado por Jose Garcia, https://github.com/jotathebest/ * * ****************************************//**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsEsp32Mqtt.h"/**************************************** * Definir Constantes ****************************************/const char *UBIDOTS_TOKEN = "";  // Coloca aquí tu TOKEN de Ubidotsconst char *WIFI_SSID = "";      // Coloca aquí tu SSID de Wi-Ficonst char *WIFI_PASS = "";      // Coloca aquí tu contraseña de Wi-Ficonst char *DEVICE_LABEL = "";   // Coloca aquí la etiqueta de tu Dispositivo al que se publicarán los datosconst char *VARIABLE_LABEL = ""; // Coloca aquí la etiqueta de tu Variable a la que se publicarán los datosconst int PUBLISH_FREQUENCY = 5000; // Frecuencia de actualización en milisegundosunsigned long timer;uint8_t analogPin = 34; // Pin utilizado para leer datos de GPIO34 ADC_CH6.Ubidots ubidots(UBIDOTS_TOKEN);/**************************************** * Funciones Auxiliares ****************************************/void callback(char *topic, byte *payload, unsigned int length){  Serial.print("Mensaje recibido [");  Serial.print(topic);  Serial.print("] ");  for (int i = 0; i < length; i++)  {    Serial.print((char)payload[i]);  }  Serial.println();}/**************************************** * Funciones Principales ****************************************/void setup(){  // coloca tu código de configuración aquí, para ejecutar una vez:  Serial.begin(115200);  // ubidots.setDebug(true);  // descomenta esto para habilitar los mensajes de depuración  ubidots.connectToWifi(WIFI_SSID, WIFI_PASS);  ubidots.setCallback(callback);  ubidots.setup();  ubidots.reconnect();  timer = millis();}void loop(){  // coloca tu código principal aquí, para ejecutar repetidamente:  if (!ubidots.connected())  {    ubidots.reconnect();  }  if (abs(millis() - timer) > PUBLISH_FREQUENCY) // activa la rutina cada 5 segundos  {    float value = analogRead(analogPin);    ubidots.add(VARIABLE_LABEL, value); // Inserta tus etiquetas de variable y el valor a enviar    ubidots.publish(DEVICE_LABEL);    timer = millis();  }  ubidots.loop();}

2. Verifica tu código dentro del Arduino IDE. Para hacer esto, en la esquina superior izquierda de nuestro Arduino IDE verás el icono de "marca de verificación"; presiona para verificar tu código.

3. Sube el código a tu Módulo ESP32 Dev. Para hacer esto, elige el icono de "flecha derecha" junto al icono de "marca de verificación".

4. Para verificar la conectividad del dispositivo y los datos enviados, abre el monitor serial seleccionando el icono de "lupa" en la esquina superior derecha del Arduino IDE para ver los registros de conectividad.

NOTA: Si no se ve ninguna respuesta, intenta desconectar y volver a conectar tu ESP32. Asegúrate de que la tasa de baudios del monitor serial esté configurada en la misma especificada en tu código 115200

Ahora deberías ver los datos publicados en tu cuenta de Ubidots, dentro del dispositivo llamado "ESP32".

3. Suscribirse a una variable

Con el siguiente código de ejemplo podrás suscribir un valor desde Ubidots para comenzar a controlar cualquier activo desde la nube.

1. Para comenzar a obtener valores desde Ubidots, abre el Arduino IDE y pega el código de ejemplo a continuación. Una vez que hayas pegado el código, asegúrate de asignar los siguientes parámetros:

aaa/****************************************** * * Este ejemplo funciona para usuarios tanto Industrial como STEM. * * Desarrollado por Jose Garcia, https://github.com/jotathebest/ * * ****************************************//**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsEsp32Mqtt.h"/**************************************** * Definir Constantes ****************************************/const char *UBIDOTS_TOKEN = "";  // Coloca aquí tu TOKEN de Ubidotsconst char *WIFI_SSID = "";      // Coloca aquí tu SSID de Wi-Ficonst char *WIFI_PASS = "";      // Coloca aquí tu contraseña de Wi-Ficonst char *DEVICE_LABEL = "";   // Reemplaza con la etiqueta del dispositivo al que suscribirteconst char *VARIABLE_LABEL = ""; // Reemplaza con la etiqueta de tu variable a la que suscribirteUbidots ubidots(UBIDOTS_TOKEN);/**************************************** * Funciones Auxiliares ****************************************/void callback(char *topic, byte *payload, unsigned int length){  Serial.print("Mensaje recibido [");  Serial.print(topic);  Serial.print("] ");  for (int i = 0; i < length; i++)  {    Serial.print((char)payload[i]);  }  Serial.println();}/**************************************** * Funciones Principales ****************************************/void setup(){  // coloca tu código de configuración aquí, para ejecutar una vez:  Serial.begin(115200);  ubidots.setDebug(true);  // descomenta esto para habilitar los mensajes de depuración  ubidots.connectToWifi(WIFI_SSID, WIFI_PASS);  ubidots.setCallback(callback);  ubidots.setup();  ubidots.reconnect();  ubidots.subscribeLastValue(DEVICE_LABEL, VARIABLE_LABEL); // Inserta las etiquetas del dispositivo y de la variable}void loop(){  // coloca tu código principal aquí, para ejecutar repetidamente:  if (!ubidots.connected())  {    ubidots.reconnect();    ubidots.subscribeLastValue(DEVICE_LABEL, VARIABLE_LABEL); // Inserta las etiquetas del dispositivo y de la variable  }  ubidots.loop();}

2. Verifica y Sube el código en la placa siguiendo los mismos pasos proporcionados en el paso de PUBLICAR anterior.

3. Para verificar la conectividad del dispositivo y los datos que se están recibiendo, abre el monitor serial seleccionando el icono de "lupa" en la esquina superior derecha del Arduino IDE para ver los registros de conectividad.

NOTA: Si no se ve ninguna respuesta, intenta desconectar y volver a conectar tu ESP32. Asegúrate de que la tasa de baudios del monitor serial esté configurada en la misma especificada en tu código 115200.

4. En el monitor serial, podrás ver el último valor recibido en Ubidots de la variable especificada en el firmware. Además, podrás controlar cualquier actuador conectado al pin 16.

5. Resumen

Con este sencillo tutorial puedes PUBLICAR y SUSCRIBIR datos a/desde Ubidots con la facilidad del Arduino IDE y un ESP32.

Para obtener ejemplos adicionales utilizando la biblioteca ESP32 MQTT, visita su repositorio en Github.

¡Ahora es momento de crear Dashboards de Ubidots para visualizar tus datos y desplegar tu solución IoT! ¡Feliz Hackeo! :)

Otros lectores también encontraron útil...

¿Ha quedado contestada tu pregunta?