在本教程中,我们将学习如何接口DHT11与ESP32 DevKit开发板。如果需要使用ESP32搭建Web温湿度监测系统,则选择DHT11和DHT22作为传感器。了解ESP32 DHT11温湿度传感器接口工作原理,设置Arduino IDE,在LCD上显示湿度和温度。此外,您还可以设计一个简单的ESP32 Web服务器,它可以连续显示DHT11传感器的湿度和温度。
DHT11温湿度传感器简介
我们已经在Arduino、Raspberry Pi、ESP8266和STM32F103C8T6等几个早期项目中使用了DHT11温湿度传感器。DHT11是一种数字式温湿度传感器,由电阻式湿度传感器、NTC型温度传感器和8位微控制器组成。
可测量湿度在20% ~ 80%范围内,温度在00C到500在DHT11传感器中的微控制器执行所有ADC相关的东西,并通过一根线提供数字数据。
此外,DHT11温湿度传感器的电缆长度可达20米。这意味着你可以很容易地实现有线传感器系统,可以进入漫长的地方。
DHT11的引脚图和引脚说明
下图显示了DHT11的引脚,下表显示了DHT11的引脚描述。
销的DTH11 | 描述 |
VCC | 电源(3V ~ 5.5V) |
数据 | 输入/输出数据。必须拉高。 |
数控 | 没有连接 |
接地 | 地面 |
从DHT11解码数据
在Arduino DHT11教程中,我详细解释了来自DHT11 Sensor的数据是怎样的,以及如何在不使用任何库的情况下提取这些数据。如果你正在为DHT11传感器为任何其他微控制器编写驱动程序,这是非常有用的。
DHT11的输出是一个40位的数据,分为8位相对湿度整数数据+ 8位相对湿度十进制数据+ 8位温度整数数据+ 8位温度十进制数据+ 8位校验和。
ESP32 DHT11接口
现在,我们已经看到了一点关于DHT11湿度和温度传感器,现在让我们继续了解如何接口DHT11与ESP32。您必须记住的第一件事是DHT是一个数字传感器(有一个内部微控制器执行数据采集和ADC转换)。
接下来要记住的重要事情是它需要一根电线来进行通信。这意味着我们可以使用ESP32的任何数字GPIO脚来发送和接收数据到/从DHT11,我们只需要一根线进行正常的通信。
组件的要求
- ESP32 DevKit开发板
- DHT11温湿度传感器(传感器/模块)
- 1 KΩ上拉电阻
- 16×2液晶
- PCF8574 I2C LCD模块
- 电路试验板
- 连接电线
- 微型USB电缆
注意:我得到了一个DHT11模块与1 KΩ上拉电阻的数据线已经安装。如果你只使用传感器,那么这个上拉电阻是重要的。5 KΩ引体向上是制造商推荐的。
线路图
下图为ESP32与DHT11的连接图。首先,DHT11的VCC连接到ESP32板的VIN。
注意:DHT11的电源范围为3v ~ 5.5 V。所以,你也可以用ESP32板的3.3V电源给DHT11供电。
接下来是DATA引脚。这个销钉应该拉高。由于我有一个模块已经连接了1 KΩ Pullup,我不需要做任何额外的连接。如果你只使用DHT11传感器,然后连接一个4.7 KΩ电阻之间的数据引脚和ESP32的VIN(或3.3V)。
注意:Data Pin的上拉电压可以在3v到5.5 V之间的任何位置。
现在,Data引脚已经连接到ESP32的GPIO 16上,在ESP32 DevKit板上标记为RX2。
第三个引脚没有连接到任何东西。最后,将GND引脚连接到ESP32的任意GND引脚上。
准备Arduino IDE
您需要下载两个库,以便ESP32将正确地与DHT11传感器通信。首先是主要的DHT11传感器库。到工具->管理库…在Arduino IDE。
在搜索栏中,输入“dht”。滚动选项,安装Adafruit的“DHT传感器库”。
下一个库与Adafruit本身相关联。搜索' adafruit unified ',向下滚动并安装' adafruit unified Sensor '库。
在串行监视器上显示湿度和温度
在进行正确的连接和如上所述安装必要的库之后,我们现在将看到如何使用ESP32从DHT11传感器读取湿度和温度数据,并在串行监视器上显示结果。
代码
我写了一个简单的代码,它将分配一个引脚DHT11传感器,初始化DHT11传感器,并从传感器读取湿度和温度数据。
为了查看结果,我只使用串行监视器以%表示湿度,以摄氏度表示温度来打印温度值。
下面的图像是串行监视器的屏幕截图,它是连续打印湿度和温度读数每3秒。
ESP32 DHT11 with I2C液晶
在串行监视器上显示DHT11传感器的湿度和温度值是有用的,只是为了测试连接和代码本身。要构建一个实际的“嵌入式系统”应用程序,你必须使用某种显示模块(OLED, 16×2字符LCD,诺基亚5110 LCD,图形LCD等)来查看湿度和温度读数。
我使用常规的16×2字符LCD显示模块与PCF8574 I2C LCD模块结合显示来自ESP32 DHT11接口的温度读数。
我做了一个关于如何使用I的专门教程2C液晶与ESP32。查看该教程以获得深入的信息。在该教程中,我还讨论了您下载的成功连接I2C LCD和ESP32所需的库。
注意:我还解释了如何获取I的Slave地址2C液晶模块在那个教程。这一步非常重要。
线路图
您需要的附加组件是16×2 LCD显示器和I2C LCD模块(基于PCF8574)。在16×2 LCD显示屏的后面插入I2C LCD模块。I2C LCD模块只需要4个连接(2个为电源连接,2个为数据连接)。
ESP32与I2C LCD模块、ESP32与DHT11温湿度传感器之间所需的连接如下电路图所示。
代码
ESP32 DHT11接口I2C LCD代码非常简单。传感器的初始化部分类似于前面的代码。只增加了LCD相关的代码。
结论
一个新手教程的接口DJT11湿度和温度传感器与ESP32在这里实现。学习了DHT11传感器的基本知识,ESP32 DHT11接口的工作原理,与DHT11通信所需的库,温湿度数据的串行输出显示,以及I2C LCD与ESP32连接显示温湿度读数。
至于考虑使用ESP32和DHT11传感器的基于Web的湿度和温度监测系统,我将很快用Web服务器的代码更新此页面。
一个回应
这是宝藏!非常感谢你提供这个网页。感谢那些努力工作的人!请继续前进!