El DHT11 y el DHT22 son los sensores de humedad y temperatura más usados con Arduino. Por fuera se distinguen fácil: el DHT11 es azul y el DHT22 es blanco. Los dos se conectan y se programan casi igual, pero no miden lo mismo. En esta guía te explicamos sus diferencias, cuál te conviene y cómo usarlos con Arduino.
en un solo sensor
3 cables en total
cambia una sola línea
Diferencias entre DHT11 y DHT22

En resumen: el DHT22 mide más rango y con más precisión, y entrega decimales. El DHT11 es más económico y lee un poco más rápido, pero solo da números enteros y su rango es más corto.
¿Cuál me conviene?
- Elige el DHT11 si estás aprendiendo o tu proyecto es dentro de casa: mostrar la humedad de tu cuarto, una mini estación del clima o una alarma de humedad. Es el más económico.
- Elige el DHT22 si necesitas medir con más exactitud o con decimales, si el ambiente puede estar muy seco o muy húmedo (fuera del 20 al 90 %), o si vas a medir temperaturas bajo cero.
Cómo conectar el DHT11 o el DHT22 al Arduino Uno
Los módulos de 3 pines se conectan igual: alimentación, tierra y un solo pin de datos. Puedes usar cables hembra-macho o una protoboard (si aún no la has usado, revisa nuestra guía de cómo usar una protoboard).

| Módulo DHT | Arduino Uno |
|---|---|
| VCC (o +) | 5V |
| DATA (o S / OUT) | Pin digital 2 |
| GND (o –) | GND |
Código para leer humedad y temperatura
1. Instala la librería
En el Arduino IDE abre el Gestor de librerías (el ícono de libros a la izquierda), busca DHT sensor library de Adafruit e instálala. Si te pregunta si quieres instalar también sus dependencias, elige Instalar todo.
2. Copia y sube este código
#include "DHT.h"
#define PIN_DHT 2 // DATA del sensor
#define TIPO_DHT DHT11 // si usas el DHT22, cámbialo por DHT22
DHT dht(PIN_DHT, TIPO_DHT);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000); // espera 2 segundos entre lecturas
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature(); // en °C
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("No se pudo leer el sensor");
return;
}
Serial.print("Humedad: ");
Serial.print(humedad);
Serial.print(" % Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
}
Abre el Monitor Serie (la lupa arriba a la derecha del IDE) y elige 9600 baudios. Cada 2 segundos verás la humedad y la temperatura. Para probarlo, sopla suavemente sobre el sensor: la humedad sube.
Si usas el DHT22, lo único que cambia es la línea #define TIPO_DHT DHT11: escribe DHT22. Esperamos 2 segundos entre lecturas porque así funciona bien con los dos sensores.
Preguntas frecuentes
Me sale "No se pudo leer el sensor", ¿qué reviso?
Revisa que el cable de datos esté en el pin 2 (o el que pusiste en PIN_DHT), que VCC y GND estén según lo impreso en tu módulo, y que en TIPO_DHT hayas puesto el sensor correcto: DHT11 o DHT22. Si el tipo no coincide, los valores salen mal o no se leen.
¿Por qué el DHT11 me da siempre números enteros?
Porque su resolución es de 1 % y 1 °C. Si necesitas decimales, usa el DHT22, que mide de 0.1 en 0.1.
Los valores tardan en cambiar, ¿es normal?
Sí. Estos sensores no reaccionan al instante: cuando cambia la humedad o la temperatura, tardan unos segundos en mostrar el valor nuevo. Además, el código lee cada 2 segundos.
¿Es lo mismo que un sensor de humedad de suelo?
No. El DHT11 y el DHT22 miden la humedad del aire. Para saber si la tierra de una planta está seca se usa un sensor de humedad de suelo, que va enterrado en la maceta.
¿Cuál va en tu proyecto?
Los dos miden humedad y temperatura del aire.
📍 Recojo en Surco y San Miguel
📘 Sigue aprendiendo: LCD 16x2 con I2C
DHT11 vs DHT22: diferencias, cuál elegir y cómo usarlos con Arduino