第18章 DHT11湿温度实验

第十八章 DHT11湿温度实验

1. 导入

温湿度也是我们日常常见的指标, 我们使用的是 DHT11 数字温湿度传感器。这是一款含有已校准数字信号输出的温湿度复合传感器。

DHT11 具有小体积、 极低的功耗, 与 DS18B20 一样是单总线接口, 为 4 针单排引脚封装, 连接方便。 如下:

屏幕截图 2024 08 11 100827

这种封装的可直接插入我们开发板 DHT11 传感器接口上使用, 当然也可使用DHT11 模块, 通过导线连接 IO 口。 DHT11 模块如下:

屏幕截图 2024 08 11 100910

+: 电源正极(3-5.5V) , OUT: 数据口, -: 电源负极。湿度测量范围: 20~90%RH, 精度±5%RH;

温度测量范围: -20~+60° C, 精度±2° C;

DHT11 性价比较高, 很适合学习使用, 但精度和响应速度有点低, 需要更高要求应用的用户可以使用 DHT22 或者其它更高级的传感器。

2. 硬件设计

本实验实验到硬件资源如下:

  • DHT11湿温度传感器

  • ESP32 GPIO

DHT11模块电路如下:

屏幕截图 2024 08 11 101330

由图可知, DHT11 和 DS18B20 可共用一个接口, J2 端子的 DS18B20 脚为DS18B20 和 DHT11 传感器控制口, 可将该引脚与 ESP32 的 GPIO 连接。 如果使用DHT11 模块的可直接将模块通信口与 ESP32 连接, 本章实验使用 DHT11 模块连接。

本章实验使用 ESP32 的 IO27 引脚, 接线如下所示:

屏幕截图 2024 08 11 101418

3. 软件设计

3.1 MicroPython函数使用

ESP32 的 MicroPython 固件集成了 dht11 模块, 因此我们可以直接使用。

说明如下:

屏幕截图 2024 08 11 101748

使用方法如下:

屏幕截图 2024 08 11 101811

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 第一次修订,后期不再维护

posted @ 2024-08-23 09:05  hazy1k  阅读(22)  评论(0编辑  收藏  举报