温湿度传感器

原理简介

本页实物是 DHT11 温湿度传感器,一只模块同时测温度和湿度。

  • 工作原理:单总线协议,DATA 脚一次性传回温、湿两项数据
  • 接口:一根 GPIO 数字线,DATA 需 4.7kΩ~10kΩ 上拉到 3V3
  • 供电:3.3V 即可(DHT11 支持 3.3V–5V,用 3V3 让 GPIO 最安全)
  • dht 是 Pico 固件内置模块,不用上传库文件

典型应用

  • 温湿度监测系统
  • 智能家居
  • 农业大棚
  • 仓库环境监控
  • 气象站小制作

接线图

[接线图占位,后续添加]

文字说明(具体接法见下方代码注释):

  • DHT11 VCC → Pico 3V3
  • DHT11 GND → Pico GND
  • DHT11 DATA → Pico GP15
  • 在 DATA 与 3V3 之间接 4.7kΩ(或 10kΩ)上拉电阻(模块自带上拉的版本可省略)

示例代码

基础示例:读取 DHT11 温湿度

# ============ 接线 ============
# DHT11 VCC  → Pico 3V3
# DHT11 GND  → Pico GND
# DHT11 DATA → Pico GP15
# DATA 与 3V3 之间接 4.7kΩ 上拉电阻(模块自带上拉可省略)
# dht 是固件内置模块,无需上传库文件
# =============================
import dht
from machine import Pin
import time

dht_sensor = dht.DHT11(Pin(15))

print('读取 DHT11 温湿度')

while True:
    try:
        dht_sensor.measure()                  # 触发一次测量
        temperature = dht_sensor.temperature() # 摄氏度
        humidity = dht_sensor.humidity()       # 百分比
        print(f'温度: {temperature}°C, 湿度: {humidity}%')
    except OSError as e:
        print('读取失败:', e)

    time.sleep(2)   # DHT11 两次读取至少间隔 1~2 秒,太频繁会读到错值

应用示例:温湿度超限报警(板载 LED)

# ============ 接线 ============
# DHT11 VCC → 3V3,GND → GND,DATA → GP15(+4.7kΩ 上拉到 3V3)
# 板载 LED 在 GP25,超阈值时点亮(不用外接)
# =============================
import dht
from machine import Pin
import time

dht_sensor = dht.DHT11(Pin(15))
led = Pin(25, Pin.OUT)

TEMP_MAX = 30      # 温度上限(°C)
HUM_MAX = 70       # 湿度上限(%)

print('温湿度超限报警')

while True:
    try:
        dht_sensor.measure()
        t = dht_sensor.temperature()
        h = dht_sensor.humidity()
        print(f'温度: {t}°C, 湿度: {h}%')

        if t > TEMP_MAX or h > HUM_MAX:
            led.on()
            print('超限报警!')
        else:
            led.off()
    except OSError as e:
        print('读取失败:', e)

    time.sleep(2)

注意事项

  • 读取间隔:DHT11 两次 measure() 之间至少隔 1~2 秒,循环里一定要 time.sleep(2),否则读到 0 或错值
  • 必须上拉:DATA 线要 4.7kΩ~10kΩ 上拉到 3V3;买的是「DHT11 模块」通常已带,裸传感器要自己接
  • 精度有限:DHT11 约 ±2°C、±5%RH,适合教学演示,不适合精密测量
  • 供电用 3V3:接 3V3 最稳且 GPIO 安全;接 5V 模块也能工作,但 DATA 仍是 3.3V 电平
  • 别太频繁:DHT11 响应慢(约 1 秒),轮询太快只会读到上一次结果

常见问题

Q: DHT11 一直「读取失败」或读到 0? A: 依次查:DATA 线有没有接对脚、有没有上拉电阻、time.sleep(2) 间隔够不够、VCC/GND 接好没。

Q: 湿度/温度数值明显不对? A: DHT11 精度本就不高;另外传感器别贴在发热源(如 Pico 芯片、电机)旁边,也别哈气太近。

Q: 想测更准的温湿度换什么? A: 换 DHT22(精度更高)或 SHT 系列(I2C);但本套实物是 DHT11,按本页接法即可。