Algunas partes de este sitio web aún no están disponibles en su idioma. Estamos trabajando para solucionar esto y nos disculpamos por cualquier inconveniente.
Tutorial ESP32 46/55 - Monitoreo de Temperatura Remota usando HiveMQ MQTT | Kit ESP32 de SunFounder
En este tutorial, crearemos un sistema de monitoreo de temperatura remoto utilizando el ESP32 y el protocolo MQTT. Este proyecto nos permite publicar datos de temperatura en un broker MQTT y controlar un LED de forma remota utilizando una interfaz web. Al presionar un botón, podemos enviar lecturas de temperatura a la nube, y también podemos recibir comandos para encender o apagar el LED.
esp32-47-mqt-1
El ESP32 es un microcontrolador potente que cuenta con Wi-Fi y Bluetooth integrados, lo que lo hace ideal para aplicaciones de Internet de las Cosas (IoT). En esta configuración, utilizaremos un termistor NTC para medir la temperatura, un botón pulsador para activar las lecturas y un LED para indicar el estado. Los datos se enviarán a HiveMQ, un popular corredor MQTT, donde se pueden acceder de forma remota (en el video a las 00:45).
esp32-47-mqt-2
Hardware explicado
Para este proyecto, utilizaremos los siguientes componentes:
Microcontrolador ESP32:Esta placa sirve como la unidad central de procesamiento, manejando conexiones Wi-Fi y comunicaciones MQTT.
Termistor NTC:Este sensor de temperatura cambia su resistencia según la temperatura. Proporciona una señal analógica que el ESP32 puede leer para determinar la temperatura actual.
LED:Este diodo emisor de luz se utilizará para indicar el estado basado en los comandos recibidos a través de MQTT.
Botón de Presión:Este botón activará el ESP32 para leer la temperatura y publicarla en el broker MQTT.
Detalles de la hoja técnica
Fabricante
SunFounder
Número de parte
ESP32
Voltaje de lógica/entrada/salida
3.3 V
Tensión de suministro
5 V (a través de USB)
Corriente de salida (por canal)
12 mA máx
Orientación sobre la frecuencia PWM
Hasta 40 kHz
Umbrales de lógica de entrada
0.3 V (bajo), 2.4 V (alto)
Límites térmicos
-40 a 85 °C
Paquete
ESP32-WROOM-32
Asegúrese de mantener niveles de voltaje adecuados para evitar daños.
Utiliza resistencias pull-up para el botón pulsador para garantizar lecturas estables.
Los capacitores de desacoplo pueden ayudar a estabilizar la fuente de alimentación.
Ten cuidado con el cableado del termistor para evitar lecturas incorrectas.
Verifica los detalles de tu broker MQTT para una conexión exitosa.
Instrucciones de cableado
esp32-47-mqtt-wiring
Para cablear los componentes, comienza conectando el termistor NTC. Conecta un pin del termistor al suministro de 3.3 V en el ESP32. El otro pin se conecta al pin 36 en el ESP32, y también debe conectarse a una resistencia de 10 kΩ, que luego se conecta a tierra. Esto crea un divisor de voltaje que permite al ESP32 leer la resistencia del termistor.
A continuación, conecta el LED. El pin más largo (ánodo) del LED se conecta al pin 4 del ESP32 a través de un resistor de 220 Ω, mientras que el pin más corto (cátodo) se conecta a tierra. Para el pulsador, conecta un lado a 3.3 V y el otro lado al pin 14 del ESP32. Además, conecta un resistor de 10 kΩ desde el pin del botón a tierra para asegurar un estado LOW estable cuando el botón no está presionado.
Instalar la biblioteca requerida
ElPubSubClientse utiliza aquí, puedes instalarlo desde elGerente de Biblioteca.
esp32-47-biblioteca-mqtt
Ejemplos de código y guía paso a paso
En la configuración, inicializamos la comunicación serial, configuramos la conexión Wi-Fi y configuramos el servidor MQTT. Aquí hay un fragmento del código de configuración:
Esta parte del código establece la conexión a la red Wi-Fi y configura el servidor MQTT. Los modos de pin para el botón y el LED también se configuran aquí.
La función de bucle verifica continuamente el estado del botón y publica los datos de temperatura cuando se presiona. Aquí hay un extracto enfocado del bucle:
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
if (digitalRead(buttonPin)) {
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
char tempString[8];
dtostrf(thermistor(), 1, 2, tempString);
client.publish("SF/TEMP", tempString);
}
}
}
En este bucle, comprobamos si el ESP32 está conectado al broker MQTT. Si se presiona el botón, lee la temperatura del termistor y la publica en el tema "SF/TEMP" cada 5 segundos.
Demostración / Qué Esperar
Cuando el proyecto esté configurado y en funcionamiento, presionar el botón publicará la temperatura actual en el broker MQTT. Puedes monitorear estos datos desde cualquier cliente MQTT. Además, puedes enviar mensajes para controlar el LED; enviar "on" lo encenderá, mientras que "off" lo apagará. Observa el comportamiento esperado en el video a las 15:30, donde se muestran las lecturas de temperatura después de cada pulsación del botón.
Sellos de tiempo del video
00:00 Inicio
2:05 Introducción al proyecto
7:06 Servicio gratuito de HiveMQ
7:56 Explicación del cableado
11:11 Código de Arduino explicado
18:46 Seleccionando la placa ESP32 y el puerto COM en el IDE de Arduino
20:30 Demostración del broker gratuito de HiveMQ
Imágenes
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT