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

树莓派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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:21:51