Sensor de temperatura y humedad DHT11: guía con Arduino, ESP32 y Pico
Qué es el sensor de temperatura y humedad DHT11 y cómo funciona. Conexión con Arduino, librería DHT, código de ejemplo, diferencias DHT11 vs DHT22, uso con ESP32 y Pico y errores comunes.
El DHT11 es un sensor digital barato, con carcasa de plástico azul, que lee la temperatura y la humedad relativa por un solo cable de datos. Aparece en casi todas las estaciones meteorológicas con Arduino, en los sistemas para invernaderos y macetas, en los termómetros de habitaciones infantiles y en los proyectos de domótica que encienden un ventilador cuando sube la humedad. A diferencia de un sensor analógico, no mides una tensión ni te peleas con fórmulas: el sensor envía la lectura como un número listo para usar.

¿Qué es el DHT11 y para qué se usa?
La humedad que mide es humedad relativa: el porcentaje del vapor de agua máximo que el aire puede contener a esa temperatura. Entre el 40 y el 60 % se considera confortable; por encima del 70 % hay humedad y moho, por debajo del 30 % el aire es seco. El DHT11 mide este valor y la temperatura ambiente aproximadamente una vez por segundo.
- Estación meteorológica casera: mostrar la temperatura y la humedad en una pantalla LCD u OLED.
- Invernadero y plantas: avisar cuando baja la humedad y regar junto con un sensor de humedad del suelo.
- Alerta de humedad y moho: hacer sonar una alarma cuando el baño, el sótano o un armario superan el 70 % de humedad.
- Ventilador o deshumidificador automático: encender el aparato con un relé al superar un umbral de humedad.
- Registrador de datos: guardar las lecturas en una tarjeta SD y sacar un gráfico diario.
- Monitorización a distancia: con un ESP32, publicar los valores en una página web que puedes abrir en el móvil.
¿Cómo funciona el DHT11?
Dentro de la carcasa hay dos elementos de medida. El de humedad es un material que absorbe la humedad colocado entre dos electrodos; cuanta más humedad hay en el aire, menor es su resistencia. Para la temperatura se usa un termistor NTC: una pequeña resistencia cuyo valor baja al aumentar la temperatura. Un diminuto microcontrolador dentro del sensor mide las dos resistencias, las corrige con valores de calibración grabados en fábrica y envía el resultado en digital.
La comunicación se hace por un solo cable. Arduino despierta al sensor manteniendo la línea de datos en LOW al menos 18 milisegundos y el sensor responde con un paquete de 40 bits: 16 bits de humedad, 16 bits de temperatura y una suma de comprobación de 8 bits para detectar lecturas erróneas. No tienes que programar esa temporización; la librería que instalaremos a continuación lo hace todo.
Características técnicas: diferencias entre DHT11 y DHT22
| Característica | DHT11 | DHT22 (AM2302) |
|---|---|---|
| Tensión de alimentación | 3–5,5 V | 3,3–6 V |
| Corriente durante la medida | 0,5–2,5 mA | 1–1,5 mA |
| Rango de temperatura | 0–50 °C | −40–80 °C |
| Precisión de temperatura | ±2 °C | ±0,5 °C |
| Rango de humedad | 20–90 % | 0–100 % |
| Precisión de humedad | ±5 % | ±2 % (máx. ±5 %) |
| Resolución | 1 °C / 1 % | 0,1 °C / 0,1 % |
| Frecuencia de lectura | Una por segundo | Una cada 2 segundos |
| Color de la carcasa | Azul | Blanco |

En resumen: si quieres controlar de forma aproximada la temperatura y la humedad dentro de casa, el DHT11 es suficiente y más barato. En exteriores, con temperaturas bajo cero o cuando importa medio grado, elige el DHT22. Los dos se conectan y se programan igual; en el código solo cambias el tipo de sensor.
Pines y conexión del DHT11
El DHT11 se vende de dos formas: como módulo de 3 pines con resistencia y LED en la placa o como sensor suelto de 4 patas. En el sensor suelto, cuenta las patas de izquierda a derecha con la cara de la rejilla hacia ti.
| Señal | Módulo de 3 pines | Sensor de 4 patas | Dónde se conecta |
|---|---|---|---|
| Alimentación | VCC (+) | Pata 1 | 5V (3V3 en ESP32 y Pico) |
| Datos | DATA / OUT / S | Pata 2 | Un pin digital (D2 en el Uno) |
| Libre | — | Pata 3 | Sin conectar |
| Tierra | GND (−) | Pata 4 | GND |
Instalar la librería DHT
- Abre el Gestor de librerías en el Arduino IDE (en Arduino IDE 2 es el icono del libro en la barra lateral izquierda).
- Escribe DHT sensor library en el buscador e instala la librería de Adafruit.
- Cuando pregunte por las dependencias, elige Install all para instalar también Adafruit Unified Sensor.
- Si quieres, prueba el ejemplo incluido en Archivo > Ejemplos > DHT sensor library > DHTtester.
Código de ejemplo para Arduino: temperatura, humedad e índice de calor
El siguiente código toma una lectura cada dos segundos, avisa si una lectura falla y combina temperatura y humedad para calcular el índice de calor (la sensación térmica). Abre el Monitor Serie a 9600 baudios para ver los resultados.
1#include <DHT.h>
2
3#define DHT_PIN 2 // veri pini / data pin
4#define DHT_TYPE DHT11 // DHT22 kullanıyorsan DHT22 yaz / write DHT22 for a DHT22
5
6DHT dht(DHT_PIN, DHT_TYPE);
7
8void setup() {
9 Serial.begin(9600);
10 dht.begin();
11}
12
13void loop() {
14 delay(2000); // ölçümler arası bekleme / wait between readings
15
16 float humidity = dht.readHumidity(); // % bağıl nem / % relative humidity
17 float temperature = dht.readTemperature(); // °C
18
19 if (isnan(humidity) || isnan(temperature)) {
20 Serial.println("Okuma hatası / read error");
21 return;
22 }
23
24 // hissedilen sıcaklık / heat index (°C)
25 float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
26
27 Serial.print("Sicaklik / Temp: ");
28 Serial.print(temperature);
29 Serial.print(" C Nem / Humidity: %");
30 Serial.print(humidity);
31 Serial.print(" Hissedilen / Feels like: ");
32 Serial.print(heatIndex);
33 Serial.println(" C");
34}Usar el DHT11 con el ESP32
En el ESP32 funciona el mismo código; solo cambia DHT_PIN a, por ejemplo, 4. Alimenta el sensor desde el pin 3V3 del ESP32 para que la línea de datos también quede a 3,3 V; el DHT11 funciona sin problemas a esa tensión. Los GPIO 34–39 son solo de entrada, así que no sirven para un DHT, porque la línea de datos es bidireccional. Para elegir pin, consulta en la herramienta Pinout qué pines del ESP32 son seguros. Puedes mostrar las lecturas en una página web por Wi-Fi y seguirlas desde el móvil.
DHT11 con la Raspberry Pi Pico (MicroPython)
MicroPython incluye un módulo dht para los sensores DHT, así que no hay que instalar ninguna librería. Conecta el sensor al pin 3V3 de la Pico, a GND y al pin GP15:
1import dht
2from machine import Pin
3import time
4
5sensor = dht.DHT11(Pin(15)) # GP15 veri pini / data pin (DHT22 için dht.DHT22)
6
7while True:
8 try:
9 sensor.measure()
10 t = sensor.temperature() # °C
11 h = sensor.humidity() # %
12 print("Sicaklik:", t, "C Nem: %", h)
13 except OSError:
14 print("Okuma hatası / read error")
15 time.sleep(2)Ideas de proyectos con el DHT11
- Termómetro digital con LCD: escribe los valores en una pantalla de 16x2; cómo hacerlo lo explica Cómo usar una pantalla LCD I2C.
- Ventilador controlado por humedad: enciende un ventilador con un relé cuando la humedad pase del 65 %; para la conexión, mira ¿Qué es un módulo relé?
- Alarma de humedad: haz sonar un zumbador al superar el umbral; ¿Qué es un zumbador? te ayuda con los avisos sonoros.
- Registrador de temperatura: guarda una lectura cada 10 minutos con un módulo de reloj y una tarjeta SD.
- Estación meteorológica Wi-Fi: publica las lecturas con un ESP32 en una página que cualquier dispositivo de tu red puede abrir.
Errores comunes y cómo solucionarlos
- NaN constante o "Failed to read": el cable de datos puede estar en un pin distinto del que pone el código, puede faltar la resistencia pull-up o el código usa un tipo de sensor equivocado (DHT22 en lugar de DHT11).
- Leer demasiado a menudo: si lees el sensor con menos de 2 segundos de separación, devuelve el valor anterior o un error.
- Temperatura más alta de lo normal: el sensor puede estar demasiado cerca del regulador de tensión del Arduino o al sol; colócalo a unos centímetros de la placa.
- Lecturas perdidas con cables largos: la señal se debilita a partir de unos metros; baja la pull-up a 4,7 kΩ, alimenta el sensor a 5 V y usa un cable de buena calidad.
- Funcionamiento inestable en el ESP32: si el sensor se alimenta a 5 V, la línea de datos queda a 5 V; aliméntalo desde 3V3 y usa un GPIO que pueda ser entrada y salida (por ejemplo, el 4).
- Esperar una respuesta instantánea: un cambio de humedad tarda unos segundos en notarse; el DHT11 está pensado para vigilar un ambiente, no para medidas rápidas.
Si quieres saber qué otros sensores puedes usar, echa un vistazo a la Guía de sensores para Arduino, y para medir distancias, lee Sensor de distancia HC-SR04. En la app BlueGrays encontrarás proyectos paso a paso con DHT11 y DHT22, con esquemas y código.
Preguntas frecuentes
¿Compro un DHT11 o un DHT22?
Para controlar de forma aproximada la temperatura y la humedad en interiores, basta con el DHT11, que además es más barato. Para exteriores, temperaturas bajo cero o una precisión de ±0,5 °C, elige el DHT22. En el código solo cambias el tipo de sensor a DHT22.
¿Por qué mi DHT11 devuelve NaN o "Failed to read from DHT sensor"?
Las causas más habituales son un pin de datos equivocado, la falta de la resistencia pull-up, un tipo de sensor incorrecto en el código y leer demasiado a menudo. Revisa el cableado, añade 10 kΩ en el sensor suelto y espera 2 segundos entre lecturas.
Mi DHT11 marca una temperatura incorrecta, ¿cómo lo calibro?
Un error de ±2 °C es normal en el DHT11. Coloca el sensor junto a un termómetro de confianza, anota la diferencia y suma o resta ese valor fijo a la lectura en el código. Asegúrate de que el sensor esté lejos de las piezas que se calientan.
¿El DHT11 funciona a 3,3 V?
Sí, el DHT11 funciona entre 3 y 5,5 V. En placas de 3,3 V como el ESP32 y la Raspberry Pi Pico, lo mejor es alimentarlo desde el pin 3V3, para que nunca lleguen 5 V a la línea de datos.
¿Se puede usar el DHT11 en exteriores o cerca del agua?
El DHT11 no es resistente al agua; la lluvia, la condensación y el sol directo lo estropean o hacen que mida mal. En exteriores, colócalo en una caja ventilada a la sombra; para medir la temperatura del agua es mejor un DS18B20 sumergible.
¿Puedo conectar varios DHT11 a un Arduino?
Sí, pero cada sensor necesita su propio pin de datos; no pueden compartir línea. En el código defines un objeto DHT para cada uno, por ejemplo DHT dht1(2, DHT11) y DHT dht2(3, DHT11).
Proyectos para hacer después de leer esto
Ver todos los proyectos
Temperatura y humedad con DHT11
Proyecto que mide la temperatura ambiente y el valor de humedad con el sensor DHT11 y lo muestra en la pantalla LCD I2C. Enseña el uso del sensor digital de temperatura / humedad.

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.

Registrador de Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
¡Construye un registrador de temperatura con marca de tiempo con ESP32! Lee temperatura/humedad del DHT22 cada 10 segundos, obtén la hora real del DS1307 RTC y registra en tarjeta microSD como CSV. El OLED muestra en vivo la temperatura (fuente grande), porcentaje de humedad, marca de tiempo y contador de registros. El archivo `/temp_log.csv` en la tarjeta SD se abre en Excel, Google Sheets o Python pandas para análisis — perfecto para monitoreo de invernadero, seguimiento de temperatura del hog

Reloj matricial, calendario y estación meteorológica (MAX7219, DS1307)
DS1307 módulo RTC y DHT22 sensor de temperatura-humedad es un proyecto que muestra datos en tiempo real en MAX7219 8x32 pantalla LED de matriz de puntos. La pantalla muestra la temperatura en grados C

Medición de temperatura con NTC y pantalla LCD 2x16
El proyecto mide la temperatura ambiente con un termistor NTC y la muestra en grados Celsius en la pantalla LCD I2C. Enseña a calcular la temperatura a partir del valor analógico con la ecuación de St

ESP32 HTTPClient + API del tiempo (con pantalla LCD)
En este proyecto, utilizamos el ESP32 para realizar una llamada a la API REST de la página web de información meteorológica (wttr.in) a través de Internet, utilizando `HTTPClient.h`. Analizamos la respuesta JSON devuelta con ArduinoJson v7 y mostramos la información sobre la ciudad, la temperatura, la humedad, el tiempo y el viento en una pantalla LCD I2C, tanto en turco como en inglés. wttr.in es gratuito y no requiere clave API: basta con escribir el nombre de cualquier ciudad para obtener su

Estación de riego inteligente
Sistema autónomo de riego de plantas que funciona 24/7 sin cansar Arduino con dos baterías 18650 y regulador LM2596. Gestiona automáticamente el motor de agua midiendo continuamente la humedad del sue

Sistema inteligente de riego de plantas ESP 32
En este proyecto se ha desarrollado un sistema de riego automático para plantas utilizando un ESP32 y un sensor de humedad del suelo. El sensor mide continuamente el nivel de humedad del suelo. Cuando la humedad cae por debajo del nivel establecido, el ESP32 activa el relé para poner en marcha la bomba de agua y regar la planta. Cuando el suelo está lo suficientemente húmedo, la bomba se detiene automáticamente. Gracias a este proyecto, las plantas se pueden regar de forma regular y se ahorra ag
Más artículos
Aprende a conectar el DHT11 a Arduino, leer temperatura, humedad e índice de calor con la librería DHT, usarlo con ESP32 y Pico y saber cuándo conviene más el DHT22.

