Tutorial ESP32 46/55 - Monitoreo de Temperatura Remota usando HiveMQ MQTT | Kit ESP32 de SunFounder

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:

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

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-1
esp32-47-mqt-2
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-library
esp32-47-mqtt-wiring
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT
Idioma: C++
¡Copiado!

Archivos📁

No hay archivos disponibles.