树莓派3B上Adafruit_DHT在Python3中无法正常工作的问题
解决Python3下DHT11传感器返回None的问题
你遇到的情况很典型——老版本的Adafruit_Python_DHT库本身对Python3的支持不完善,而且这个库已经被Adafruit官方弃用了,所以会出现Python2能正常读取,但Python3跑起来没报错却返回None的情况。下面是具体的解决步骤:
第一步:卸载旧的不兼容库
先把原来安装的旧库彻底卸载,避免版本冲突:
sudo pip uninstall Adafruit_Python_DHT -y sudo pip3 uninstall Adafruit_Python_DHT -y
第二步:安装Python3兼容的新库
Adafruit现在推荐使用CircuitPython系列的DHT库,这个库对Python3和树莓派新系统支持更好,安装前需要先装依赖:
sudo apt-get update && sudo apt-get install libgpiod2 -y sudo pip3 install adafruit-circuitpython-dht
第三步:修改代码适配新库
新库的API和旧库不一样,需要调整你的代码,下面是适配后的版本(注意GPIO4对应board.D4):
import adafruit_dht import time import board # 初始化DHT11传感器,指定连接的GPIO引脚 dht_sensor = adafruit_dht.DHT11(board.D4) while True: try: # 读取温湿度 temp = dht_sensor.temperature humi = dht_sensor.humidity print(f"温度: {temp} °C") print(f"湿度: {humi} %") except RuntimeError as e: # 传感器偶尔会出现读取失败的情况,直接重试即可 print(f"读取失败: {e.args[0]}") time.sleep(2) continue except Exception as e: # 遇到其他异常时关闭传感器并终止程序 dht_sensor.exit() raise e time.sleep(2)
第四步:运行代码
和之前一样,运行时需要用sudo获取GPIO权限:
sudo python3 temper.py
额外检查
因为你在Python2下能正常运行,硬件本身应该没问题,但还是可以再确认一下:
- DHT11的VCC接的是树莓派的3.3V(不要接5V,可能会损坏传感器)
- DATA引脚确实接在GPIO4上
- 传感器的接线没有松动
内容的提问来源于stack exchange,提问作者Krishnakumar M
相关产品推荐
相关产品推荐

