温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

树莓3上怎么用DHT11读取温湿度

发布时间:2021-12-29 17:18:19 来源:亿速云 阅读:195 作者:小新 栏目:互联网科技
# 树莓派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,确保信号稳定。 ![接线示意图](https://i.imgur.com/example.png) *(示意图仅供参考,实际引脚请以树莓派3的GPIO布局为准)* --- ## 软件配置 ### 1. 启用树莓派GPIO接口 在终端执行以下命令: ```bash sudo raspi-config 

选择 Interfacing Options > GPIO,启用GPIO控制。

2. 安装依赖库

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秒读取一次 

方法二:直接GPIO操作(更底层)

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() 

注意:方法二需要精确的时序控制,建议初学者优先使用方法一。


常见问题解决

1. 传感器返回None

  • 检查接线是否正确
  • 确保上拉电阻已连接
  • 尝试更换GPIO引脚(避免使用GPIO2/3,因其有硬件上拉)

2. 报错RuntimeError: No access to /dev/mem

  • 使用sudo运行脚本
  • 或添加用户到gpio组:
     sudo usermod -aG gpio $USER 

3. 数据偶尔不准确

  • DHT11精度为±2°C/±5%RH
  • 避免频繁读取(间隔建议≥2秒)
  • 保持传感器远离热源/湿源

进阶应用

数据可视化(使用Matplotlib)

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) 

物联网上报(MQTT示例)

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数据手册完善。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI