You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Pico使用DHT20温湿度传感器出现EIO错误求助

DHT20温湿度传感器OSError: [Errno 5] EIO 解决指南

问题分析

OSError: [Errno 5] EIO是I2C通信失败的典型报错,核心原因是硬件接线错误或I2C初始化参数不匹配实际硬件连接。

解决步骤

1. 核对硬件接线

DHT20为I2C设备,必须与树莓派Pico正确接线:

  • DHT20的VCC接Pico的3.3V引脚(禁止接5V,防止烧毁设备)
  • DHT20的GND接Pico的GND引脚
  • DHT20的SDA接Pico对应I2C端口的SDA引脚:I2C0对应GP0,I2C1对应GP2
  • DHT20的SCL接Pico对应I2C端口的SCL引脚:I2C0对应GP1,I2C1对应GP3

2. 修正I2C初始化代码

官方示例未指定引脚和频率,Pico默认I2C引脚可能与实际接线不符,需明确初始化参数:

  • 若使用I2C0(GP0=SDA,GP1=SCL):
i2c = I2C(0, scl=machine.Pin(1), sda=machine.Pin(0), freq=400000)
  • 若使用I2C1(GP2=SDA,GP3=SCL):
i2c = I2C(1, scl=machine.Pin(3), sda=machine.Pin(2), freq=400000)

3. 检测I2C设备连通性

运行以下代码扫描I2C总线,确认设备是否被识别:

from machine import I2C, Pin
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000) # 替换为你的实际I2C端口配置
print(i2c.scan())

正常输出应为[64](DHT20默认I2C地址为0x40,十进制64),若输出空列表,需重新检查接线。

4. 确认库文件完整性

确保dht20.py已正确上传至Pico文件系统,若文件损坏可重新从官方包中提取后上传。

5. 完整测试代码(以I2C0为例)

from machine import I2C, Pin
from dht20 import DHT20
import time

# 初始化I2C并扫描设备
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000)
print("已识别的I2C设备:", i2c.scan())

dht20 = DHT20(i2c)

while True:
    temper = dht20.dht20_temperature()
    humidity = dht20.dht20_humidity()
    print(f"温度: {temper}℃")
    print(f"湿度: {humidity}%")
    time.sleep(2) # 增加延迟,避免频繁读取

内容的提问来源于stack exchange,提问作者Daan Bos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:42:22