DHT22 温湿度传感器接入指南
📅 2026-05-16 · 📂 硬件编程 · ⏱ 阅读约 5 分钟
概述
DHT22(也称 AM2302)是性价比最高的数字温湿度传感器,精度 ±0.5°C / ±2%RH。相比 DHT11,DHT22 量程更宽、精度更高。本篇带你快速上手,配合 OLED 做一个桌面气象站。
学习目标:掌握 DHT 传感器库,理解单总线通信协议,学会数据记录和阈值报警。
DHT11 vs DHT22 对比
| 参数 | DHT11 | DHT22 |
|---|
| 温度量程 | 0~50°C | -40~80°C |
| 温度精度 | ±2°C | ±0.5°C |
| 湿度量程 | 20~90% | 0~100% |
| 采样频率 | 1Hz | 0.5Hz(每2秒) |
| 价格 | ~3元 | ~8元 |
接线图
🔌 接线
ESP32 DHT22
3.3V ──────── VCC (引脚1)
GPIO4 ─────── DATA (引脚2)
GND ──────── GND (引脚4)
⚠️ DATA 和 VCC 之间接 10kΩ 上拉电阻
(部分模块已内置,检查你的模块)
基础代码:读取和串口打印
// DHT22_Basic.ino — 读取温湿度
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("❌ 读取失败,检查接线!");
} else {
Serial.printf("🌡 温度:%.1f°C | 💧 湿度:%.1f%%
", t, h);
}
delay(2000); // DHT22 最小采样间隔 2 秒
}
进阶:温度阈值报警
// 高温/高湿自动报警
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
if (t > 35.0) {
Serial.println("🔥 高温警报!开启风扇");
digitalWrite(FAN_PIN, HIGH);
}
if (h > 80.0) {
Serial.println("💦 高湿警报!开启除湿");
}
if (t < 18.0) {
Serial.println("❄ 低温警报!开启加热");
}
delay(2000);
}
常见问题
⚠️ 读取返回 NaN:最常见原因:1) 接线错误/接触不良;2) 没接上拉电阻(10kΩ);3) 采样太快(<2秒间隔);4) 用了 DHT11 但声明 DHT22。
💡 先测试后封装:用面包板验证代码和接线没问题后,再焊接到 PCB 或放进外壳。DHT22 的 4 个引脚间距 2.54mm,可以用杜邦线直插。