Arduino UNO + DHT22 + I²C 1602 LCD:温湿度监测实战
物料清单
| 组件 | 数量 |
|---|---|
| Arduino UNO R3 | 1 |
| DHT22 温湿度传感器 (AM2302) | 1 |
| 1602 LCD + I²C 背包模块 (5 V) | 1 |
| 全尺寸无焊面包板 | 1 |
| 9 V 电池 + 5.5/2.1 mm 电池夹 | 1 |
| 公对公/公对母/母对母跳线 | 若干 |
所需库文件
Adafruit_Sensor— 统一传感器接口DHT— DHT 系列驱动NewliquidCrystal— I²C LCD 驱动(支持 0x3F/0x27 等地址)
硬件接线
电源总线
UNO 5 V → 面包板红线(+),GND → 蓝线(-)。
DHT22(4 脚,面向自己时最右为 VCC)
| DHT22 引脚 | 连接 |
|---|---|
| 1 VCC | 面包板 + |
| 2 DATA | UNO D4(黄线) |
| 3 NC | 悬空 |
| 4 GND | 面包板 - |
I²C LCD(4 脚,从左到右)
| LCD 引脚 | 连接 |
|---|---|
| GND | 面包板 - |
| VCC | 面包板 + |
| SDA | UNO A4 |
| SCL | UNO A5 |

I²C 地址确认
常见地址为 0x3F 或 0x27。上传 I2C Scanner 例程可自动检测。本教程默认 0x3F,若不同请修改代码 #define I2C_ADDR 0x3F。
完整固件代码
/* DHT22 + I2C 1602 LCD 温湿度显示
库: Adafruit_Sensor, DHT, NewliquidCrystal
*/
#include <DHT.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define I2C_ADDR 0x3F
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
float hum, temp;
void setup() {
Serial.begin(9600);
dht.begin();
lcd.begin(16, 2);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
}
void loop() {
delay(2000);
hum = dht.readHumidity();
temp = dht.readTemperature();
// 串口调试
Serial.print("Humidity: "); Serial.print(hum);
Serial.print(" %, Temp: "); Serial.print(temp);
Serial.println(" Celsius");
// LCD 显示
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: "); lcd.print(temp); lcd.print(" "); lcd.print((char)223); lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum: "); lcd.print(hum); lcd.print(" %");
}
常见问题排查
- LCD 无显示/乱码:检查 I²C 地址、对比度电位器、SDA/SCL 是否接反
- 读数 NaN:DHT22 供电不足或数据线过长,缩短导线或加 4.7 kΩ 上拉
- 刷新太快:DHT22 最低采样间隔 2 s,代码已内置
delay(2000)
原理图与 Fritzing 源文件

可下载 schema_UcHE1qRu2t.fzz 在 Fritzing 中二次编辑。
制造工艺
- Arduino 与树莓派 2 I2C 通信集成:打造物联网传感器项目的最佳搭档
- Arduino Nano飞行模拟2020控制面板——LCD与CDI显示
- Arduino Nano高速摄影控制器 – 定格水滴碰撞瞬间
- Arduino + DHT11 + 以太网盾板温湿度数据记录仪
- 基于 Arduino Mega 与 Nextion 显示屏的交互式气象站
- Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
- BME280 环境数据实时显示于 Nextion 触摸屏——Visuino 图形化开发
- DIY Arduino Nano 示波器:10 Hz–50 kHz / 128×64 LCD
- u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
- Blynk + Arduino 读取 DHT11 温湿度数据教程
- 基于 Arduino Nano 和 MAX30102 的心率监测仪(16x2 LCD 显示)
- 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟