树莓派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
相关产品推荐
相关产品推荐

