Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conecta tu ESP32 a Ubidots a través de MQTT usando MicroPython
Conecta tu ESP32 a Ubidots a través de MQTT usando MicroPython

Programa tu módulo Espressif ESP32 para comunicarse con Ubidots utilizando MQTT y código MicroPython.

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

El módulo ESP32, sucesor del ESP8266, es un microcontrolador 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 variaciones de doble núcleo y de núcleo único. El ESP32 fue creado y desarrollado por Espressif Systems, una empresa con sede en Shanghái con un historial comprobado en la producción y distribución de microcontroladores de calidad.

Al leer y seguir de cerca esta guía de inicio rápido, podrás enviar datos desde el módulo ESP32 a Ubidots utilizando el método Publish a través de MQTT.

Requisitos

Configuración:

A. Configuración de la placa ESP32-DevkitC
B. Configuración del plugin Pymakr del proyecto
C. Configuración de la biblioteca
D. Tiempo de codificación

A. Configuración de la placa ESP32-DevkitC

1. Para comenzar, es necesario instalar una herramienta de cadena de herramientas preconstruida, consulta las siguientes guías completas paso a paso según tu sistema operativo para hacerlo correctamente. Windows, Linux o MacOS.

2. Con la instalación de la cadena de herramientas preconstruida completa, conecta, con el cable USB, la placa ESP32-DevKitC a tu PC y verifica el puerto serie donde está conectado el dispositivo. Usaremos el Identificador de Puerto repetidamente a continuación para comunicarnos con tu dispositivo.

Para Linux o MAC, ejecuta la(s) función(es) a continuación en la terminal de tu computadora para determinar el puerto con el que te estás comunicando.

Sistema operativo Linux

ls /dev/tty*

Sistema operativo Mac

macbook:user$ cd /devmacbook:user$ ls -ltr /dev/*usb*

Sistema operativo Windows

  • Presiona "windows" + "R"

  • Escribe “devmgmt.msc” en el campo de texto y haz clic izquierdo en “OK”

  • Selecciona y abre “Puertos (COM&LPT)” para ver todos los puertos serie disponibles

3. A continuación, flashea cualquier firmware del ESP32 con los siguientes comandos.
NOTA: Es posible que el nombre del puerto cambie para ti.

Flashear el dispositivo

esptool.py --chip esp32 --port /dev/{PORT-IDENTIFIER} erase_flash

4. Descarga el firmware más reciente para el módulo ESP32 a tu PC y sube el firmware al ESP32 utilizando el siguiente comando.

Subir el firmware más reciente

esptool.py --chip esp32 --port /dev/{PORT-IDENTIFIER} write_flash -z 0x1000 <firmware>.bin

B. Configuración del plugin Pymakr del proyecto

Pymakr es un plugin desarrollado por Pycom, que funciona bien con los dos editores de texto populares, Atom y Visual Studio. El plugin Pymakr simplifica mucho las cosas al programar con micropython.

En esta guía, trabajaremos con Atom, pero siéntete libre de elegir el que más te convenga.

1- Abre el editor Atom y activa el plugin Pymakr.

2- Conecta la placa con el editor Atom. Una vez que la placa esté conectada, verás el mensaje "conectado" en el estado:

3- Para comenzar, crea un nuevo directorio llamado "ESP32" para gestionar los códigos y bibliotecas. Una vez que el directorio esté creado en el editor Atom, selecciona Abrir un Proyecto y busca el directorio "ESP32" (recién creado) y ábrelo.

4- En la carpeta "ESP32" vamos a gestionar las bibliotecas y los códigos principales/boot. Primero, vamos a agregar los archivos principales y de arranque. Haz clic en la carpeta "ESP32" y selecciona "Nuevo Archivo", asignando "boot.py" como el nombre del archivo.

5- Repite estos pasos para crear el archivo principal llamado "main.py".

6- Ahora sincroniza el proyecto. En la barra de herramientas superior, selecciona Paquetes > Pymakr > Sincronizar proyecto.


C. Configuración de la biblioteca

Ahora que tenemos el proyecto construido y sincronizado, es hora de codificar el ESP32 para enviar datos a través del protocolo MQTT.

1- Para publicar datos a través de MQTT, instala las bibliotecas umqtt.robust y umqtt.simple.

Primero, vamos a agregar las carpetas para contener las bibliotecas. Haz clic derecho en la carpeta "ESP32" y selecciona "Nueva carpeta", y asigna "lib" como el nombre.

2- A continuación, tenemos que agregar la biblioteca “umqtt” en la carpeta "lib". Haz clic derecho en la carpeta "lib" y selecciona "Nueva Carpeta" y asígnale el nombre: "umqtt".

3- Luego, haz clic en la carpeta “umqtt” y selecciona “Nuevo Archivo”, asignando el nombre “simple.py”. Copia el código del repositorio “simple.py” de Micropython y pégalo en el archivo “simple.py”. A continuación, repite estas instrucciones pero con “robust.py” como el nombre del archivo y pega esta biblioteca “robust.py” de Micropython en el archivo.

**Guarda tus archivos de código simple.py y robust.py cuando termines.

4- Completa la configuración sincronizando el proyecto. En la barra de herramientas superior, selecciona Paquetes > Pymakr > Sincronizar proyecto.

D. Tiempo de codificación

1- Ahora que tenemos el proyecto construido y sincronizado, es hora de codificar. Para enviar datos a Ubidots, copia, pega y guarda el siguiente código en el archivo “boot.py”.

**Guarda el archivo una vez que hayas pegado el código en el archivo "boot.py".

import timeimport networkimport machine as msta_if = network.WLAN(network.STA_IF); sta_if.active(True)sta_if.scan() # Escanear puntos de acceso disponiblessta_if.connect("SSID", "PASSWORD") # Conectar a un APsta_if.isconnected()time.sleep(3)

2- A continuación, el código de muestra a continuación creará las funciones para verificar la conexión a Internet, publicar datos y cargar los datos a Ubidots. En este paso, es necesario obtener tu TOKEN privado de Ubidots y reemplazar tu token donde se indica en el código a continuación.

Copia, pega y guarda el siguiente código en el archivo "main.py". Donde se indica, reemplaza el texto con tu único TOKEN de Ubidots en el código (asegúrate de dejar las comillas).

from umqtt.robust import MQTTClientimport machine as mubidotsToken = “YOUR-UBIDOTS-TOKEN-HERE” clientID = “RANDOM-ALPHA-NUMERIC-NAME_OR_IMEI DEVICE ID” client = MQTTClient("clientID", "industrial.api.ubidots.com", 1883, user = ubidotsToken, password = ubidotsToken)def checkwifi():    while not sta_if.isconnected():        time.sleep_ms(500)        print(".")        sta_if.connect()pin13 = m.Pin(13, m.Pin.IN, m.Pin.PULL_UP)def publish():    while True:        checkwifi()        client.connect()        lat = 6.2        lng = -75.56        var = repr(pin13.value())        msg = b'{"location": {"value":%s, "context":{"lat":%s, "lng":%s}}}' % (var, lat, lng)        print(msg)        client.publish(b"/v1.6/devices/ESP32", msg)        time.sleep(20)publish()

3- Confirma que todos los códigos se han guardado correctamente; luego, sincroniza el proyecto una vez más. Repite los pasos 6 y 4 anteriores respectivamente. Una vez que el proyecto se haya sincronizado con el dispositivo, el módulo se ejecutará automáticamente.

Resultados

Ve a tu cuenta de Ubidots para visualizar el dispositivo y los datos recién creados.

En menos de 30 minutos, el módulo ESP32 ahora está disponible para publicar datos en la nube de Ubidots a través del protocolo MQTT, utilizando WiFi. Ahora es el momento de crear un panel de control y crear widgets para gestionar las variables de tu módulo ESP32.

¿Ha quedado contestada tu pregunta?