Sensor de Humedad y Temperatura DHT22 (AM2302): Guía Completa con Arduino
El DHT22 (AM2302) es un sensor digital de temperatura y humedad relativa de bajo coste y gran popularidad. Mejora al DHT11: rango más amplio, mayor precisión y resolución. Mide temperatura: -40 °C a +80 °C (±0,5 °C) y humedad: 0–100 % HR (±2 % HR). Resolución: 0,1 °C / 0,1 % HR. Protocolo: 1-Wire propietario (no Dallas 1-Wire). Alimentación: 3,3–5,5 V. Corriente: ~2,5 mA (midiendo), ~50 µA (standby). Tiempo de muestreo mínimo: 2 s (0,5 Hz máx.). Encapsulado: 4 pines (1: VDD, 2: DATA, 3: NC, 4: GND). Versión módulo PCB (3 pines) incluye resistencia pull-up y capacitor de filtrado. Ideal para estaciones meteorológicas, invernaderos, HVAC, terrarios, IoT, dataloggers.
Pinout
| Pin Sensor (4 pines) | Pin Módulo PCB (3 pines) | Función |
|---|---|---|
| 1 | VCC / + | Alimentación 3,3–5,5 V |
| 2 | DATA / OUT | Datos (bidireccional, open-drain) |
| 3 | — (NC) | No conectado (dejar flotante) |
| 4 | GND / - | Tierra |
Resistencia pull-up: 4,7 kΩ – 10 kΩ entre DATA y VCC (obligatoria en sensor suelto; módulos PCB ya la traen).
Conexión con Arduino
DHT22 (sensor suelto) Arduino Uno
VDD (pin 1) ──────── 5V (o 3,3V)
DATA (pin 2) ──────── D2 (cualquier pin digital)
│
4,7 kΩ
│
5V (pull-up)
GND (pin 4) ──────── GND
Pin 3 (NC) ──────── No conectar
Módulo PCB 3 pines: VCC→5V, GND→GND, DATA→D2 (pull-up ya en placa).
Librería Recomendada
DHT sensor library de Adafruit (instala desde Gestor de Librerías). Requiere Adafruit Unified Sensor (dependencia). Alternativa ligera: DHTnew (más rápida, no bloqueante).
Código Básico
#include
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println("DHT22 - Iniciado");
}
void loop() {
delay(2500); // Mínimo 2 s entre lecturas
float h = dht.readHumidity();
float t = dht.readTemperature(); // °C
float f = dht.readTemperature(true); // °F
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Fallo lectura DHT22");
return;
}
float hic = dht.computeHeatIndex(t, h, false); // Índice calor °C
float hif = dht.computeHeatIndex(f, h); // Índice calor °F
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temp: ");
Serial.print(t);
Serial.print(" °C ");
Serial.print(f);
Serial.print(" °F\t");
Serial.print("Heat Index: ");
Serial.print(hic);
Serial.print(" °C ");
Serial.println(hif);
Serial.println(" °F");
}
Consideraciones Importantes
- No uses delay() < 2000 ms: El sensor necesita tiempo para medir. Lecturas muy seguidas dan NaN o valores viejos.
- Longitud de cable: ≤ 20 m con pull-up 4,7 kΩ y cable blindado. > 20 m: usa buffer/driver (ej. 74HC125) o reduce pull-up a 1 kΩ (consumo mayor).
- Alimentación estable: Evita ruidos; añade 0,1 µF cerámico cerca del sensor VDD-GND.
- Condensación: Si hay rocío en el sensor, lecturas de humedad = 100 % erróneas. Protege de salpicaduras directas.
- Calibración: Precisión de fábrica ±2 % HR. Para precisión crítica, calibra contra higrómetro de referencia y aplica offset en código.
Versión Módulo PCB vs Sensor Suelto
| Aspecto | Sensor Suelto (4 pines) | Módulo PCB (3 pines) |
|---|---|---|
| Pull-up | Externa obligatoria (4,7–10 kΩ) | Integrada en placa |
| Filtrado | Ninguno | Condensador 0,1 µF típico |
| Facilidad uso | Requiere protoboard/soldadura | Listo para enchufar (jumper) |
| Pin 3 (NC) | Dejar flotante | Eliminado |
Proyecto: Monitor IoT con ESP8266/ESP32 y Blynk
/* Ejemplo conceptual para ESP32 + Blynk */
#define BLYNK_TEMPLATE_ID "TU_TEMPLATE_ID"
#define BLYNK_DEVICE_NAME "DHT22 Monitor"
#include
#include
#include
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
char auth[] = "TU_AUTH_TOKEN";
char ssid[] = "TU_WIFI_SSID";
char pass[] = "TU_WIFI_PASS";
BlynkTimer timer;
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) return;
Blynk.virtualWrite(V0, t); // Virtual Pin 0 = Temperatura
Blynk.virtualWrite(V1, h); // Virtual Pin 1 = Humedad
}
void setup() {
Serial.begin(115200);
dht.begin();
Blynk.begin(auth, ssid, pass);
timer.setInterval(5000L, sendSensor); // Cada 5 s
}
void loop() {
Blynk.run();
timer.run();
}
Conclusión
El DHT22/AM2302 es sensor temp/humedad de referencia para makers: preciso, barato, fácil con librería Adafruit. Claves: pull-up 4,7 kΩ, mínimo 2 s entre lecturas, cable ≤ 20 m, alimentación estable. Para proyectos serios, considera SHT3x (I²C, mayor precisión) o sensores industriales. ¡Mide y registra tu entorno!
Tecnología Industrial
- Transistor de Unión Única (UJT) y UJT Programable (PUT): Diseño, Operación y Aplicaciones en Osciladores
- Desbloquee el futuro: Por qué esta tecnología es esencial para todos
- Por qué es crucial capturar las competencias técnicas de su empresa
- Guía definitiva para eliminar las trampas de ácido en PCB: Estrategias probadas y consejos de expertos
- Guía completa del montaje de placas de circuito impreso (PCBA)
- Guía definitiva del recubrimiento conformal PCB: Protegiendo sus placas de circuito
- Guía Definitiva de Controladores de Motor: Función, Protección y Uso
- Guía Definitiva de Anillos Anulares PCB: Consejos de Diseño y Soluciones
- Latch de Transistor Explicado: Guía Completa para Construir y Usar Circuitos Latch
- Sensor de Humedad y Temperatura DHT22 (AM2302): Guía Completa con Arduino
- Guía Completa del Pinout LM317 y Regulación de Voltaje