第18章 DHT11湿温度实验
第十八章 DHT11湿温度实验
1. 导入
温湿度也是我们日常常见的指标, 我们使用的是 DHT11 数字温湿度传感器。这是一款含有已校准数字信号输出的温湿度复合传感器。
DHT11 具有小体积、 极低的功耗, 与 DS18B20 一样是单总线接口, 为 4 针单排引脚封装, 连接方便。 如下:
这种封装的可直接插入我们开发板 DHT11 传感器接口上使用, 当然也可使用DHT11 模块, 通过导线连接 IO 口。 DHT11 模块如下:
+: 电源正极(3-5.5V) , OUT: 数据口, -: 电源负极。湿度测量范围: 20~90%RH, 精度±5%RH;
温度测量范围: -20~+60° C, 精度±2° C;
DHT11 性价比较高, 很适合学习使用, 但精度和响应速度有点低, 需要更高要求应用的用户可以使用 DHT22 或者其它更高级的传感器。
2. 硬件设计
本实验实验到硬件资源如下:
-
DHT11湿温度传感器
-
ESP32 GPIO
DHT11模块电路如下:
由图可知, DHT11 和 DS18B20 可共用一个接口, J2 端子的 DS18B20 脚为DS18B20 和 DHT11 传感器控制口, 可将该引脚与 ESP32 的 GPIO 连接。 如果使用DHT11 模块的可直接将模块通信口与 ESP32 连接, 本章实验使用 DHT11 模块连接。
本章实验使用 ESP32 的 IO27 引脚, 接线如下所示:
3. 软件设计
3.1 MicroPython函数使用
ESP32 的 MicroPython 固件集成了 dht11 模块, 因此我们可以直接使用。
说明如下:
使用方法如下:
3.2 代码分析
#导入Pin模块
from machine import Pin
import time
import dht
#定义DHT11控制对象
dht11 = dht.DHT11(Pin(27))
#程序入口
if __name__=="__main__":
time.sleep(1) #首次启动间隔1S让传感器稳定
while True:
dht11.measure() #调用DHT类库中测量数据的函数
temp = dht11.temperature()
humi = dht11.humidity()
if temp == None:
print("DHT11传感器检测失败!")
else:
print("temp=%d °C humi=%d %%" %(temp,humi))
time.sleep(2) #如果延时时间过短,DHT11温湿度传感器不工作
2024.8.22 第一次修订,后期不再维护