DHT22 温湿度传感器接入指南

📅 2026-05-16 · 📂 硬件编程 · ⏱ 阅读约 5 分钟

📺 B站推荐视频:ESP32 入门教程

概述

DHT22(也称 AM2302)是性价比最高的数字温湿度传感器,精度 ±0.5°C / ±2%RH。相比 DHT11,DHT22 量程更宽、精度更高。本篇带你快速上手,配合 OLED 做一个桌面气象站。

学习目标:掌握 DHT 传感器库,理解单总线通信协议,学会数据记录和阈值报警。

DHT11 vs DHT22 对比

参数DHT11DHT22
温度量程0~50°C-40~80°C
温度精度±2°C±0.5°C
湿度量程20~90%0~100%
采样频率1Hz0.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,可以用杜邦线直插。