#117Intermedio

ESP32 DHT22 Temperatura y humedad (con pantalla LCD)

Se trata de un proyecto que mide la temperatura y la humedad ambientales mediante el sensor DHT22 y las muestra en tiempo real en una pantalla LCD I2C 16x2. Los datos del sensor se leen mediante el protocolo de un solo cable (one-wire) utilizando la biblioteca DHT de Adafruit. Este proyecto constituye la base para estaciones meteorológicas IoT, sistemas de automatización doméstica inteligente o sistemas de monitorización ambiental en invernaderos.

4.8(38)
54 completado
ESP32 DHT22 Temperatura y humedad (con pantalla LCD)
Si alguna vez te has preguntado qué temperatura y humedad hay en tu habitación, este pequeño medidor es para ti. El sensor DHT22 mide el aire y cada dos segundos el ESP32 escribe la temperatura y la humedad, con un decimal, en la pantalla LCD. Si no consigue leer el sensor, la pantalla también te lo dice; es la base de proyectos como un rincón de plantas o una estación meteorológica casera.

Video

Diagrama del circuito

ESP32 DHT22 Temperatura y humedad (con pantalla LCD) - Circuit

Código fuente

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 DHT22 Temperatura y humedad (con pantalla LCD)
4// ─────────────────────────────────────────
5// Lee la temperatura y la humedad del DHT22 cada 2 s y las muestra en un
6// LCD I2C de 16x2. Si una lectura falla, la pantalla muestra un aviso de
7// cableado y pull-up.
8//
9// Pines:
10//   GPIO 4  -> DATA del DHT22
11//   Pull-up de 10k entre DATA y VCC
12//   GPIO 21 -> SDA del LCD, GPIO 22 -> SCL del LCD
13//   DHT22 VCC -> 3V3, VCC del LCD -> 5V (VIN)
14//   Todos los GND en común
15
16#include <Wire.h>
17#include <LiquidCrystal_I2C.h>
18#include <DHT.h>
19
20// Definición de pines
21const int DHT_PIN = 4;
22#define DHT_TYPE DHT22
23
24DHT dht(DHT_PIN, DHT_TYPE);
25
26// Dirección del LCD: 0x27 o 0x3F
27LiquidCrystal_I2C lcd(0x27, 16, 2);
28
29// El DHT22 necesita al menos 2 s entre lecturas
30const unsigned long READ_INTERVAL = 2000;
31unsigned long lastRead = 0;
32
33void setup() {
34  // Pines I2C por defecto de la DevKit V1
35  Wire.begin(21, 22);
36  lcd.init();
37  lcd.backlight();
38
39  // Pantalla de bienvenida de 3 s
40  lcd.setCursor(3, 0);
41  lcd.print("BlueGrays");
42  lcd.setCursor(3, 1);
43  lcd.print("DHT22 v1.0");
44  delay(3000);
45  lcd.clear();
46
47  dht.begin();
48}
49
50void loop() {
51  // Leer cada 2 s sin delay()
52  if (millis() - lastRead >= READ_INTERVAL) {
53    lastRead = millis();
54
55    float h = dht.readHumidity();
56    float t = dht.readTemperature();
57
58    lcd.clear();
59
60    // NaN = problema de cableado/pull-up
61    if (isnan(h) || isnan(t)) {
62      lcd.setCursor(0, 0);
63      lcd.print("Sensor okunamadi");
64      lcd.setCursor(0, 1);
65      lcd.print("Kablo+10k pullup");
66    } else {
67      // Temperatura
68      lcd.setCursor(0, 0);
69      lcd.print("Sicaklik:");
70      lcd.print(t, 1);
71      lcd.print("C");
72      // Humedad, el DHT22 da decimales
73      lcd.setCursor(0, 1);
74      lcd.print("Nem     :");
75      lcd.print(h, 1);
76      lcd.print("%");
77    }
78  }
79}
80

Preguntas frecuentes

¿Cuál es la diferencia entre el DHT22 y el DHT11?▾

El DHT22 es más preciso (±0,5 °C, ±2–5 % de humedad), mide en un rango más amplio (entre −40 y 80 °C) y ofrece una resolución de 0,1. El DHT11 es más barato, pero tiene una precisión limitada de ±2 °C y una resolución en números enteros.

¿Es necesaria una resistencia pull-up de 10 kΩ?▾

El sensor DHT22 sin carcasa requiere una resistencia pull-up de 10 kΩ para la línea de datos. En los módulos de tres pines montados en la placa, esta resistencia suele estar ya incorporada.

LCD de 5 V, ESP32 de 3,3 V; ¿funcionan juntos?▾

Los módulos LCD I2C ofrecen una imagen más nítida con 5 V. Si las resistencias pull-up de las líneas SDA/SCL del módulo alimentado a 5 V están conectadas a 5 V, lo más seguro es utilizar un convertidor de nivel; aunque mucha gente las conecta directamente, esto pone a prueba los límites del ESP32.

¿Puedo enviar los datos a Internet?▾

Sí, gracias al Wi-Fi del ESP32, puedes enviar las mediciones a ThingSpeak, Blynk o a tu propio servidor y ver los gráficos desde el móvil.

ESP32 DHT22 Temperatura y humedad (con pantalla LCD) | BlueGrays