1
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
Protocolo MQTT con ESP32
Yurley Acevedo Pérez, Eddy Sebastián Benítez Zabala
Escuela de Ingeniería Electrónica, Universidad Pedagógica y Tecnológica de Colombia,
Sogamoso, Colombia, (e-mail: [Link]@[Link] [Link]@[Link])
Resumen- El presente informe de laboratorio dará a conocer el proceso durante el desarrollo de esta guía de laboratorio de la
implementación de una red IoT local para publicar variables de temperatura y humedad en un Dashboard, haciendo uso del
dispositivo ESP32 mediante la tecnología WIFI y el protocolo MQTT.
Abstract-This laboratory report will present the process during the development of this laboratory guide for the
implementation of a local IoT network to publish temperature and humidity variables on a Dashboard, using the
ESP32 device using WIFI technology and the MQTT protocol.
Palabras clave: ESP32, MQTT.
I. INTRODUCCIÓN Las lecturas de temperatura se publican en el tópico
esp32/dht/temperatura y las lecturas de humedad se
Internet de las Cosas es un concepto basado en la publican en el tópico esp32/dht/humedad.
conexión de dispositivos electrónicos entre sí o mediante La aplicación de dashboard App móvil estará suscrita a
Internet, que lleva años generando expectación ya que se esos tópicos como se observa en la figura 2
prevé que sea un gran impulsor de la transformación
digital en hogares y ciudades, así como también en
empresas.
El ESP32 es un microcontrolador de bajo coste que
destaca debido a que posee tecnologías WiFi y Bluetooth Figura [Link] MQTT Dash
integradas, dos núcleos de procesamiento y tecnología
de bajo consumo, que, en relación con su precio, lo
hacen un dispositivo muy recomendable para desarrollar
aplicaciones enfocadas a Internet de las Cosas.[1]
II. DESARROLLO DE LA PRACTICA.
Para este caso el grupo es el N° 5 por lo que se trabajó
con Mosquitto y con la aplicación móvil MQTT Dash.
Es necesario tener un editor de código para poder poder
programar la placa ESP32.
En este caso se empleará uPyCraft que es
un IDE orientado específicamente para MicroPython.
Permite subir el firmware de MicroPython al
microcontrolador y dispone de una amplia biblioteca de
ejemplos de programación y buena documentación.
Para conectar el editor de código con el
microcontrolador se debe conectar la placa al
computador a través de un puerto USB, se abre uPyCraft
y en Tools>Serial se da click y se selecciona el puerto de
conexión de la placa al ordenador.
En Tools>board se selecciona el modelo de
microcontrolador (ESP32).
Una vez completado este proceso se podrá acceder al Figura 2. Proceso creación del widget Temperatura en MQTT dash
intérprete del microcontrolador desde uPyCraft.
2
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
Figura 5. Valores mostrados en MQTT dash de temperatura y
humedad
Figura 3. Proceso creación del widget de humedad en MQTT dash
Figura 6. Valores mostrados en MQTT dash de temperatura y
humedad, y estado de led apagado
Figura 7. Estado Off (apagado) del led
Figura 4. Proceso creación del widget de humedad en MQTT dash
3
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
Teniendo en cuenta la información plasmada en el literal
anterior, y los resultados obtenidos durante el desarrollo
de esta guía de laboratorio se puede analizar que:
Como se observa en la figura 5 y la figura 6 se puede
comprobar correcto funcionamiento del programa, se
puede observar los widgets mostrando diferentes tomas
o valores tanto para la temperatura como para la
humedad en un rango de (1-100)
En la figura 6 y la figura 8 se puede observar el botón
que actúa como un switch (ON/OFF) verificando así el
resultado del correcto funcionamiento del código en la
figura 7 y figura 9, cuando el usuario ingresa por teclado
la palabra On, el led se enciende, cuando se ingresa Off
el led se apaga, confirmando y verificando el correcto
funcionamiento.
IV. ANEXOS .
Esta sección se encuentra al finalizar el archivo, En
Figura 8. Valores mostrados en MQTT dash de temperatura y el ANEXO 1 se puede observar el código
humedad, y estado de led encendido
implementado para la programación de los
requerimientos de esta guía de laboratorio.
V. CONCLUSIONES
En base a la información anterior, el análisis de los
datos, y los resultados obtenidos en la realización de esta
guía de laboratorio, se puede concluir que:
El lenguaje
ensamblador
Figura 9 Estado On (encendido) del led 10 puede resultar
muy
La aplicación de dashboard recibe las lecturas de los
sensores y las muestra en indicadores o widgets
Desde la aplicación se debe implementar un control
interesante si
(widget de botón o switch) para publicar en el tópico
esp32/salidas/pin2, con el objetivo que el ESP32 se
suscriba ese tópico y poder controlar el encendido y
apagado del LED conectado en el pin 2.
III. ANALISIS DE RESULTADOS
4
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
lo practicamos grafico y
seguidamente modo video el
realizando cual me
ejercicios tales pareció el más
como los que entretenido de
se realizó en la hacerlo,
práctica, no además ayuda
solo imprimir a mejorar el
un mensaje en pensamiento
pantalla con analítico
macro y para poder
sonido, sino graficar letras,
también figuras y entre
realizar trazos otras cosas,
en el modo solo con
5
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
plantearnos en que si no
la cabeza los sabemos
movimientos manejar bien
necesarios que las posiciones
debemos nos
realizar e llevaremos
imprimirlos, demasiado
realizaremos tiempo
diversas cosas graficando,
en puedo decir
menor tiempo, que
ya que el graficar en
modo video emu8086 me
tiene una ayudo a
demora en comprender
dibujar por lo mas como
6
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
funciona el lo practicamos
lenguaje seguidamente
ensamblador y realizando
como ejercicios tales
funcionan los como los que
movimientos se realizó en la
en memoria práctica, no
como hemos solo imprimir
ido viendo un mensaje en
durante el pantalla con
semestre. macro y
El lenguaje sonido, sino
ensamblador también
puede resultar realizar trazos
muy en el modo
interesante si
7
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
grafico y plantearnos en
modo video el la cabeza los
cual me movimientos
pareció el más necesarios que
entretenido de debemos
hacerlo, realizar e
además ayuda imprimirlos,
a mejorar el realizaremos
pensamiento diversas cosas
analítico en
para poder menor tiempo,
graficar letras, ya que el
figuras y entre modo video
otras cosas, tiene una
solo con demora en
dibujar por lo
8
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
que si no funciona el
sabemos lenguaje
manejar bien ensamblador y
las posiciones como
nos funcionan los
llevaremos movimientos
demasiado en memoria
tiempo como hemos
graficando, ido viendo
puedo decir durante el
que semestre.
graficar en
REFERENCIAS
[1] [Link]. (2020). Retrieved 4 August 2020, from
[Link]
emu8086 me 20/TFG_Benito_Herranz_2019.pdf?
sequence=1&isAllowed=y.
ayudo a
[2]«Datasheet ESP32,» [En línea]. Available:
[Link]
ion/esp32_datasheet_en.pdf.
q
comprender [3]M. Wisintainer et al., "MicroPython - Getting Started
with MQTT on ESP32/ESP8266 | Random Nerd
Tutorials", Random Nerd Tutorials, 2020. [Online].
mas como
Available: [Link]
mqtt-esp32-esp8266/. [Accessed: 05- Aug- 2020].
9
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
10
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
ANEXOS
ANEXO I
Código implementado en el editor Upycraft para el desarrollo del laboratorio propuesto en la guía de
laboratorio.
11
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
# Complete project details at [Link]
import random
import time
from umqttsimple import MQTTClient
import ubinascii
import machine
import micropython
import network
import esp
from machine import Pin
import dht
[Link](None)
import gc
[Link]()
ssid = 'EAP42964090'
password = '10Y33M74E95E'
mqtt_server = '[Link]'
PORT= 1883
led = Pin(2,[Link])
#EXAMPLE IP ADDRESS or DOMAIN NAME
#mqtt_server = '[Link]'
client_id = [Link](machine.unique_id())
topic_pub_temp = b'esp/dht/temperature'
topic_pub_hum = b'esp/dht/humidity'
last_message = 0
message_interval = 5
station = [Link](network.STA_IF)
[Link](True)
[Link](ssid, password)
while [Link]() == False:
pass
print('Connection successful')
sensor = dht.DHT22(Pin(14))
#sensor = dht.DHT11(Pin(14))
def connect_mqtt():
global client_id, mqtt_server
client = MQTTClient(client_id, mqtt_server)
#client = MQTTClient(client_id, mqtt_server, user=your_username, password=your_password)
client.set_callback(form_sub)
[Link]()
[Link](b'esp32/salidas/pin2')
print('Connected to %s MQTT broker' % (mqtt_server))
12
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
return client
def restart_and_reconnect():
print('Failed to connect to MQTT broker. Reconnecting...')
[Link](10)
[Link]()
def read_sensor():
try:
[Link]()
temp = [Link]()
hum = [Link]()
if (isinstance(temp, float) and isinstance(hum, float)) or (isinstance(temp, int) and isinstance(hum, int)):
temp = (b'{0:3.1f},'.format(temp))
hum = (b'{0:3.1f},'.format(hum))
return temp, hum
else:
return('Invalid sensor readings.')
except OSError as e:
return('Failed to read sensor.')
def form_sub(topic, msg):
print((topic, msg))
if [Link]() == "esp32/salidas/pin2":
if ([Link]() == "On"):
[Link]()
elif ([Link]() == "Off"):
[Link]()
#elif [Link]() == 'esp32/salidas/pin2': #Si el topic prueba recibe algo lo muestra
# print ('Recibi el mensaje: ' , [Link]())
try:
client = connect_mqtt()
except OSError as e:
restart_and_reconnect()
while True:
try:
client.check_msg()
if ([Link]() - last_message) > message_interval:
#temp, hum = read_sensor()
temp = [Link] (1,100)
hum = [Link] (1,100)
print(temp)
print(hum)
[Link](topic_pub_temp, str(temp))
[Link](topic_pub_hum, str(hum))
last_message = [Link]()
except OSError as e:
13
Universidad Pedagógica y Tecnológica de Colombia, Acevedo, Benítez. Protocolo MQTT con [Link] de las cosas
restart_and_reconnect()