Código de búsqueda

Tutorial ESP32 28/55 - Sensor de Temperatura DHT11 con LCD | Kit de Aprendizaje IoT ESP32 de SunFounder

Tutorial ESP32 28/55 - Sensor de Temperatura DHT11 con LCD | Kit de Aprendizaje IoT ESP32 de SunFounder

En este tutorial, exploraremos cómo interfacar el sensor de temperatura y humedad DHT11 con el microcontrolador ESP32. Usando esta configuración, mediremos la temperatura y la humedad ambiente, mostrando los resultados tanto en el monitor serial como en una pantalla LCD. Además, implementaremos un zumbador que se activa cuando la temperatura supera un cierto umbral.

ESP32-28_sensor de temperatura DHT-principal

Este proyecto no solo demuestra el uso del sensor DHT11, sino que también muestra la versatilidad del ESP32, que incluye capacidades de Wi-Fi y Bluetooth integradas. Al final de este tutorial, tendrás una configuración funcional que monitorea continuamente las condiciones ambientales y proporciona retroalimentación en tiempo real.

Para una guía visual, mira el video que acompaña este tutorial (en el video a las 00:00). ¡Iniciemos!

Hardware Explicado

Los componentes principales utilizados en este proyecto son el microcontrolador ESP32, el sensor DHT11 y una pantalla LCD. El ESP32 servirá como el cerebro de la operación, procesando datos del sensor DHT11 y controlando la salida de la LCD.

El sensor DHT11 mide la humedad y la temperatura, proporcionando lecturas a través de una única línea de datos. Requiere una fuente de alimentación de 3.3V a 5.5V y tiene un bajo consumo de corriente, lo que lo hace adecuado para aplicaciones alimentadas por batería. El LCD mostrará los valores de temperatura y humedad en tiempo real.

Detalles de la hoja de datos

Fabricante GROVE
Número de parte DHT11
Voltaje de lógica/E/S 3.3 - 5.5 V
Tensión de suministro 3.3 V
Corriente de salida (por canal) 0.5 mA típico.
Corriente de pico (por canal) 2,5 mA máx.
Orientación sobre la frecuencia de PWM N/A
Umbrales de lógica de entrada 0.3 VCC (bajo), 0.7 VCC (alto)
Caída de voltaje / RDS(on)/ saturación No aplicable
Límites térmicos 0°C a 60°C
Paquete DIP-4
Notas / variantes Resolución: 1°C / 1% HR

  • Utiliza una resistencia de tirón (5 kΩ recomendada) en la línea de datos.
  • Mantenga los cables del sensor cortos (menos de 20 m) para asegurar lecturas precisas.
  • Alimenta el DHT11 con 3.3V para un rendimiento óptimo.
  • El período de muestreo no debe ser inferior a 1 segundo.
  • Verifique las conexiones del cableado si las lecturas fallan (por ejemplo, no conectado, pin incorrecto).

Instrucciones de cableado

ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer

Para conectar el sensor DHT11 al ESP32, comienza conectando el pin VCC del DHT11 (el pin más a la izquierda) a la salida de 3.3V del ESP32. A continuación, conecta el pin de tierra (el cuarto pin) a un pin de tierra (GND) en el ESP32. El pin de datos (el segundo pin) debe conectarse al pin GPIO 14 en el ESP32.

Para el LCD, conecta el pin VCC a la salida de 5V del ESP32. El pin de tierra debe estar conectado a un pin de tierra en el ESP32. Los pines SDA y SCL del LCD deben estar conectados a los pines GPIO 21 y 22, respectivamente. Asegúrate de que todas las conexiones estén seguras para evitar problemas al leer datos.

Ejemplos de Código y Tutorial

En la primera parte del código, inicializamos el sensor DHT y configuramos el número de pin con#define DHTPIN 14Este identificador nos permite hacer referencia fácilmente al pin conectado a la línea de datos DHT11 a lo largo del código.

#include "DHT.h"

#define DHTPIN 14  // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11 
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

En elsetup()función, inicializamos la comunicación en serie para la depuración y comenzamos el sensor DHT. El bucle principal incluye una demora de 2 segundos para asegurarnos de no abrumar al sensor con solicitudes.

A continuación, leemos los valores de humedad y temperatura utilizandofloat humidity = dht.readHumidity();yfloat temperature = dht.readTemperature();Estos identificadores almacenan los valores medidos para su uso posterior.

void loop() {
  delay(2000);
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
}

Finalmente, comprobamos si hay errores de lectura y mostramos los valores en el monitor serial utilizandoSerial.print(). Esto nos permite observar las lecturas en tiempo real.

if (isnan(humidity) || isnan(temperature)) {
  Serial.println("Failed to read from DHT sensor!");
  return;
}
Serial.print("Humidity: "); 
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: "); 
Serial.print(temperature);
Serial.println(" *C");

En el código LCD, inicializamos el LCD y mostramos la temperatura y la humedad en la pantalla utilizando ellcd.print()función. Esto proporciona una representación visual de los datos recopilados por el sensor DHT11.

Demostración / Qué esperar

Una vez que todo esté cableado correctamente y el código esté cargado en el ESP32, deberías ver las lecturas de temperatura y humedad mostradas en el monitor serial y en la pantalla LCD. Si la temperatura supera los 30°C, el zumbador se activará, proporcionando una alerta audible.

Tenga cuidado con las conexiones invertidas y asegúrese de que el sensor no esté expuesto a condiciones extremas, ya que puede afectar las lecturas. Es posible que necesite ajustar el umbral para el zumbador según sus requisitos (en el video a las 15:30).

Marcas de tiempo del video

  • 00:00 Comienzo
  • 1:57 Introducción al DHT11
  • 6:18 Cableado DHT11 con ESP32
  • 7:67 Código de Arduino explicado
  • 11:49 Seleccionando la placa ESP32 y el puerto COM en Arduino IDE
  • 13:30 Demostración del proyecto
  • 15:32 Consiguiendo Fahrenheit
  • 16:04 mostrando la temperatura en el LCD utilizando ESP32
  • 17:20 DHT11 y LCD con código ESP32
  • 19:49 Demo de DHT11 en LCD con ESP32
  • 21:33 Tomando acción sobre el valor de Temperatura

Imágenes

ESP32-28_dht_temperature-sensor-library
ESP32-28_dht_temperature-sensor-library
ESP32-28_dht_temperature-sensor-schematic
ESP32-28_dht_temperature-sensor-schematic
ESP32-28_dht_temperature-sensor-wiring
ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer
DHT11_with_buzzer
ESP32-28_dht_temperature-sensor-main
ESP32-28_dht_temperature-sensor-main
828-ESP32 Tutorial 28/55- Arduino code for DHT Temperature sensor
Idioma: C++
#include "DHT.h"

#define DHTPIN 14 // Configura el pin conectado al pin de datos del DHT11.
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println("DHT11 test!");
  dht.begin();
}

void loop() {
 // Espera unos segundos entre las mediciones.
  delay(2000);

 // ¡Leer la temperatura o la humedad tarda aproximadamente 250 milisegundos!
 // Las lecturas del sensor pueden tener hasta 2 segundos de 'antigüedad' (es un sensor muy lento).
  float humidity = dht.readHumidity();
 // Leer la temperatura en grados Celsius (el valor por defecto)
  float temperature = dht.readTemperature();

 // Verifica si alguna lectura falló y sal de inmediato (para intentar de nuevo).
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
 // Imprime la humedad y la temperatura
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");
}

829-ESP32 Tutorial 28/55- Arduino code for DHT Temperature sensor with LCD
Idioma: C++
/*
 * Este es un código de Arduino para medir la temperatura y la humedad utilizando DHT11/DHT22 y mostrarlo en una pantalla LCD, escrito por Ahmad Shamshiri para el kit de aprendizaje IoT ESP32 de SunFounder. Mira el video completo en https://youtu.be/qRUFZX4eDJg. El código completo, el diagrama de cableado y otros recursos para este tutorial están en https://robojax.com/RJT711.
 */
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


#define DHTPIN 14 // Configura el pin conectado al pin de datos DHT11.
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

 // Inicializa el objeto LCD con la dirección I2C 0x27, 16 columnas y 2 filas.
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

 // Comience la comunicación serial a 115200 baudios.
  Serial.begin(115200);

 // Inicializa el dht11
  dht.begin();

 // Inicializar la LCD
  lcd.init();
  lcd.backlight();

 // Borra la LCD
  lcd.clear();
}

void loop() {
 // Espera unos segundos entre las mediciones.
  delay(2000);

 // ¡Leer la temperatura o la humedad toma aproximadamente 250 milisegundos!
 // Las lecturas del sensor también pueden tener hasta 2 segundos de 'antigüedad' (es un sensor muy lento).
  float humidity = dht.readHumidity();
 // Leer la temperatura en Celsius (el valor predeterminado)
  float temperature = dht.readTemperature();

 // Verifica si alguna lectura falló y sale temprano (para intentar de nuevo).
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

 // Muestre la temperatura y la humedad en la pantalla LCD.
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.write(223); // Símbolo de grado
  lcd.print("C");

  lcd.setCursor(0, 1);
  lcd.print("Humi: ");
  lcd.print(humidity);
  lcd.print("%");
}

Cosas que podrías necesitar

Archivos📁

Archivo de Fritzing

Manual del Usuario