使用W5100S-EVB-Pico读取DHT11时出现OSError: [Errno 110] ETIMEDOUT求助
问题描述
使用Elegoo套件的3引脚DHT11传感器,已按数据手册正确接线,但在搭载MicroPython的W5100S-EVB-Pico上运行代码时,始终出现OSError: [Errno 110] ETIMEDOUT错误。尝试过更换代码、重新接线、观看教程视频,问题仍未解决。
使用的示例代码如下:
代码1
from machine import Pin import utime as time from dht import DHT11 dataPin=16 myPin= Pin(dataPin,Pin.OUT,Pin.PULL_DOWN) sensor=DHT11(myPin) while True: sensor.measure() tempC=sensor.temperature() hum=sensor.humidity() print(tempC,hum) time.sleep(1)
代码2
import machine import dht import time sensor = dht.DHT11(machine.Pin(16)) while True: try: time.sleep(2) sensor.measure() temp = sensor.temperature() # eg. 23 (°C) hum = sensor.humidity() # eg. 41 (% RH) print('Temperature: %3.1f C' %temp) print('Humidity: %3.1f %%' %hum) except OSError as e: print('Failed to read sensor.')
排查与解决建议
- 修正引脚上拉下拉设置:DHT11需要上拉支持,代码1中设置
Pin.PULL_DOWN是错误的,应改为Pin.PULL_UP;若传感器自带上拉电阻,也可直接用Pin.IN模式初始化引脚。 - 调整引脚初始化逻辑:DHT11引脚为双向传输,无需手动设置为
Pin.OUT,MicroPython的DHT库会自动切换引脚模式,建议直接用Pin(16, Pin.IN, Pin.PULL_UP)初始化后传入传感器对象。 - 提升供电稳定性:DHT11对电源波动敏感,在传感器VCC与GND间并联100nF电容,同时确保VCC接的是Pico的3.3V引脚,避免电压不足或干扰。
- 延长采样间隔:虽然代码已满足1秒以上的采样要求,可尝试将间隔延长至3秒,确保传感器完成数据准备。
- 再次核对硬件接线:确认3引脚DHT11的引脚顺序(通常为VCC、DATA、GND),检查GPIO16、3.3V、GND接线是否牢固,无虚焊或接反情况。
- 验证固件与库兼容性:重新刷入适配W5100S-EVB-Pico的最新MicroPython官方固件,若自带dht库仍有问题,可尝试使用手动实现时序的第三方DHT驱动代码。
内容的提问来源于stack exchange,提问作者Franf
相关产品推荐
相关产品推荐

