BeagleBone Black连DHT11报错AttributeError: board无D18属性求解决
修复BeagleBone Black与DHT11连接的AttributeError问题及可行方案
错误原因
你参考的是树莓派的Adafruit指南,但BeagleBone Black的board模块引脚命名规则和树莓派完全不同:
D18是树莓派的引脚标识,BeagleBone的board模块中不存在该属性;- 代码中未定义的
bbb.exec_command语句属于冗余代码,会引发额外错误。
可行解决方案
方法一:使用adafruit_dht库搭配正确的BeagleBone引脚
确认可用引脚
先运行以下代码,查看board模块支持的所有BeagleBone引脚名称:import board print(dir(board))从输出中找到你实际连接的引脚对应的属性(比如P8_11对应的是
board.P8_11)。修正后的代码
移除冗余语句,替换为正确的引脚,并添加错误捕获逻辑(DHT传感器易出现读取超时):import board import adafruit_dht import time # 替换为你实际连接的引脚属性,例如P8_11 dht_device = adafruit_dht.DHT11(board.P8_11) try: temperature = dht_device.temperature humidity = dht_device.humidity print(f"Temp: {temperature:.1f}°C Humidity: {humidity}%") if humidity is not None and temperature is not None: print(f'Temp={temperature:0.1f}°C Humidity={humidity:0.1f}%') else: print('Failed to get reading. Try again!') except RuntimeError as e: # 捕获传感器读取超时等常见错误 print(f"读取错误: {e}. 重试中...") finally: # 释放传感器资源 dht_device.exit()
方法二:使用传统Adafruit_DHT库(无需board模块)
如果方法一仍有问题,可以改用更适配BeagleBone的旧版库:
- 安装库
pip install Adafruit_DHT - 代码实现
直接使用GPIO编号(例如P8_11对应的GPIO编号是45):import Adafruit_DHT import time # 指定传感器类型和GPIO编号 sensor = Adafruit_DHT.DHT11 gpio_pin = 45 # P8_11对应的系统GPIO编号 while True: # read_retry会自动重试读取,提高成功率 humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio_pin) if humidity is not None and temperature is not None: print(f'Temp={temperature:0.1f}°C Humidity={humidity:0.1f}%') else: print('Failed to get reading. Try again!') time.sleep(2)
硬件连接确认
确保DHT11与BeagleBone的接线正确:
- VCC引脚接BeagleBone的3.3V(请勿接5V,避免损坏传感器)
- GND引脚接BeagleBone的GND
- DATA引脚接你代码中指定的引脚(例如P8_11)
内容的提问来源于stack exchange,提问作者AlexCav
相关产品推荐
相关产品推荐

