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

使用Adafruit_DHT读取DHT11时遇Unknown platform错误求助

解决Adafruit_DHT读取DHT11时的Unknown platform错误

问题描述

将DHT11传感器连接至GPIO-12(物理引脚32),使用Adafruit_DHT库编写Python脚本读取温湿度时,触发RuntimeError: Unknown platform错误。已尝试重装库、更新库、将脚本移至Adafruit_DHT目录运行等操作,问题仍未解决。

报错栈

Traceback (most recent call last):
  File "/home/amir-pi/Wetter_Projekt/Adafruit_Python_DHT-1.4.1/test1.py", line 8, in <module>
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/amir-pi/Wetter_Projekt/Adafruit_Python_DHT-1.4.1/Adafruit_DHT/common.py", line 94, in read_retry
    humidity, temperature = read(sensor, pin, platform)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/amir-pi/Wetter_Projekt/Adafruit_Python_DHT-1.4.1/Adafruit_DHT/common.py", line 80, in read
    platform = get_platform()
               ^^^^^^^^^^^^^^
  File "/home/amir-pi/Wetter_Projekt/Adafruit_Python_DHT-1.4.1/Adafruit_DHT/common.py", line 63, in get_platform
    raise RuntimeError('Unknown platform.')
RuntimeError: Unknown platform.

脚本代码

import Adafruit_DHT

# 配置传感器类型和引脚(DHT11,物理引脚32对应GPIO12)
sensor = Adafruit_DHT.DHT11
pin = 12

# 尝试读取温湿度数据
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

# 检查数据是否读取成功
if humidity is not None and temperature is not None:
    print('温度={0:0.1f}°C 湿度={1:0.1f}%'.format(temperature, humidity))
else:
    print('读取传感器数据失败,请重试!')

解决方法

1. 手动指定平台类型

绕过库的自动平台检测,直接传入树莓派平台参数修改脚本:

import Adafruit_DHT
from Adafruit_DHT import Raspberry_Pi

sensor = Adafruit_DHT.DHT11
pin = 12

# 手动指定平台参数
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin, platform=Raspberry_Pi)

if humidity is not None and temperature is not None:
    print('温度={0:0.1f}°C 湿度={1:0.1f}%'.format(temperature, humidity))
else:
    print('读取传感器数据失败,请重试!')

2. 切换到兼容新版系统的库

旧版Adafruit_Python_DHT(1.4.1)对新版树莓派OS(如Bookworm)支持较差,改用官方新版库:

  • 卸载旧库:
    pip uninstall Adafruit_DHT
    
  • 安装新版库及系统依赖:
    pip install adafruit-circuitpython-dht
    sudo apt-get install libgpiod2
    
  • 新版脚本示例:
    import time
    import board
    import adafruit_dht
    
    # 初始化传感器,GPIO12对应board.D12
    dht_device = adafruit_dht.DHT11(board.D12)
    
    try:
        temperature = dht_device.temperature
        humidity = dht_device.humidity
        if humidity is not None and temperature is not None:
            print(f"温度={temperature:.1f}°C 湿度={humidity:.1f}%")
        else:
            print("读取传感器数据失败,请重试!")
    finally:
        dht_device.exit()
    

3. 修改旧库的平台检测逻辑

若坚持使用旧库,手动修改common.py的平台识别代码:

  • 打开/home/amir-pi/Wetter_Projekt/Adafruit_Python_DHT-1.4.1/Adafruit_DHT/common.py
  • 找到get_platform()函数,添加树莓派硬件标识检测:
    def get_platform():
        # 保留原有代码,新增以下判断
        with open('/proc/cpuinfo', 'r') as f:
            cpuinfo = f.read()
        if 'BCM2835' in cpuinfo or 'BCM2711' in cpuinfo:
            return Raspberry_Pi
        # 原有代码继续...
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:08:37