您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 树莓派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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。