本页实物是 DHT11 温湿度传感器,一只模块同时测温度和湿度。
4.7kΩ~10kΩ 上拉到 3V33.3V 即可(DHT11 支持 3.3V–5V,用 3V3 让 GPIO 最安全)dht 是 Pico 固件内置模块,不用上传库文件[接线图占位,后续添加]
文字说明(具体接法见下方代码注释):
VCC → Pico 3V3GND → Pico GNDDATA → Pico GP15DATA 与 3V3 之间接 4.7kΩ(或 10kΩ)上拉电阻(模块自带上拉的版本可省略)# ============ 接线 ============
# 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 秒,太频繁会读到错值
# ============ 接线 ============
# 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)
measure() 之间至少隔 1~2 秒,循环里一定要 time.sleep(2),否则读到 0 或错值4.7kΩ~10kΩ 上拉到 3V3;买的是「DHT11 模块」通常已带,裸传感器要自己接Q: DHT11 一直「读取失败」或读到 0?
A: 依次查:DATA 线有没有接对脚、有没有上拉电阻、time.sleep(2) 间隔够不够、VCC/GND 接好没。
Q: 湿度/温度数值明显不对? A: DHT11 精度本就不高;另外传感器别贴在发热源(如 Pico 芯片、电机)旁边,也别哈气太近。
Q: 想测更准的温湿度换什么? A: 换 DHT22(精度更高)或 SHT 系列(I2C);但本套实物是 DHT11,按本页接法即可。