# 树莓派3上怎么用DHT11读取温湿度 ## 前言 DHT11是一款低成本、低功耗的数字温湿度传感器,广泛应用于物联网和嵌入式项目中。树莓派3作为一款功能强大的单板计算机,与DHT11结合可以轻松实现环境监测功能。本文将详细介绍如何在树莓派3上使用Python读取DHT11传感器的温湿度数据。 ## 所需材料 - 树莓派3(已安装Raspbian系统) - DHT11温湿度传感器 - 10kΩ电阻(上拉电阻) - 面包板 - 杜邦线若干 ## 硬件连接 DHT11传感器有3个引脚(部分型号为4引脚,其中1个为空脚): 1. **VCC**(3.3V电源) 2. **DATA**(数据线) 3. **GND**(接地) 接线方式如下: | DHT11引脚 | 树莓派GPIO引脚 | |-----------|----------------| | VCC | 3.3V (Pin 1) | | DATA | GPIO4 (Pin 7) | | GND | GND (Pin 6) | > **注意**:DATA引脚需要连接10kΩ上拉电阻到VCC,确保信号稳定。  *(示意图仅供参考,实际引脚请以树莓派3的GPIO布局为准)* --- ## 软件配置 ### 1. 启用树莓派GPIO接口 在终端执行以下命令: ```bash sudo raspi-config
选择 Interfacing Options
> GPIO
,启用GPIO控制。
sudo apt-get update sudo apt-get install python3-dev python3-pip sudo pip3 install Adafruit_DHT
替代方案:如果使用
libgpiod
(Raspberry Pi OS Bullseye及以上版本推荐):> sudo apt-get install python3-libgpiod > ``` --- ## Python代码实现 ### 方法一:使用Adafruit库(简单) ```python import Adafruit_DHT import time # 设置传感器类型和GPIO引脚 DHT_SENSOR = Adafruit_DHT.DHT11 DHT_PIN = 4 # GPIO4 (Pin 7) while True: humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN) if humidity is not None and temperature is not None: print(f"温度: {temperature:.1f}°C, 湿度: {humidity:.1f}%") else: print("传感器读取失败!") time.sleep(2) # 每2秒读取一次
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) # DATA引脚 def read_dht11(): # 发送开始信号 GPIO.output(4, GPIO.LOW) time.sleep(0.018) GPIO.setup(4, GPIO.IN) # 等待传感器响应(具体时序需参考DHT11手册) # ...(完整代码需包含数据解析逻辑) try: while True: humidity, temperature = read_dht11() print(f"温度: {temperature}°C, 湿度: {humidity}%") time.sleep(2) finally: GPIO.cleanup()
注意:方法二需要精确的时序控制,建议初学者优先使用方法一。
None
值RuntimeError: No access to /dev/mem
sudo
运行脚本gpio
组: sudo usermod -aG gpio $USER
import matplotlib.pyplot as plt from collections import deque # 创建滚动数据存储 temp_history = deque(maxlen=20) hum_history = deque(maxlen=20) while True: # ...(读取传感器数据) temp_history.append(temperature) hum_history.append(humidity) plt.clf() plt.plot(temp_history, label="温度 (°C)") plt.plot(hum_history, label="湿度 (%)") plt.legend() plt.pause(0.1)
import paho.mqtt.client as mqtt client = mqtt.Client() client.connect("mqtt.broker.address", 1883) while True: # ...(读取传感器数据) client.publish("sensors/dht11/temp", temperature) client.publish("sensors/dht11/hum", humidity)
通过本文的指导,您已经成功在树莓派3上实现了DHT11温湿度数据的采集。下一步可以尝试: - 将数据存储到数据库(如SQLite) - 设置阈值报警功能 - 结合其他传感器构建环境监测系统
欢迎在评论区分享您的项目创意! “`
注:实际图片链接需替换为有效资源,代码中的时序控制部分需根据DHT11数据手册完善。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。