ESP8266基础开发(一)---读DHT11温湿度传感器

注:对于ESP8266和ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:551636355。群名:ESP32开源技术交流群。

这篇文章的目的是展示如何将DHT11传感器连接到ESP8266并编写一个简单的程序来测量温度和湿度。我们假设使用Arduino IDE对ESP8266进行编程。


硬件

在这种情况下,我们假设使用DHT11板,如图1所示。就个人而言,当我开始一个新的概念验证项目时,我喜欢准备上一些可用的模块。在证明了这个概念后,如果需要,我就开始进行硬件优化。

DHT11

图1 - DHT11板。

DHT11可以测量温度和湿度,是简单环境监测项目的理想选择。它的温度分辨率为1ºC,相对湿度为1%。它的温度范围在0ºC到50ºC之间,湿度的测量范围取决于温度(您可以查看数据表中的详细信息)。

与ESP8266的连接非常简单,如图2所示。在这种情况下,我们假设使用GPIO2(这是使用ESP-01板时可用的少数几种)。不过,您可以将其连接到其他GPIO引脚。如果使用NodeMCU板,请考虑到电路板中的引脚顺序与ESP8266引脚不匹配,这可能导致错误结果(您可以在此处检查引脚映射)。

ESP8266 DHT11连接

图2 - DHT11和ESP8266之间的连接图。

另外,考虑到不同的DHT11板可能具有不同的信号引脚名称,例如“数据”或简称为“S”。


安装库

如前所述,我们假设使用Arduino IDE对ESP8266进行编程。如果您尚未将其配置为支持ESP8266板,请查看前面的博文。如所料,Arduino有一些库可以简化我们与DHT11交互的任务。一个非常简单易用且与ESP8266配合使用的是Simple DHT传感器库。可以通过Arduino IDE Library Manager轻松安装该库,如图3所示。

DHT11 ESP8266 library.png

图3 - 通过库管理器安装简单的DHT传感器库。


代码

要导入新安装的库,请在代码顶部添加以下include:

1

#include <SimpleDHT.h>

同时使用GPIO引脚的编号声明一个全局变量,以便于更改。在这种情况下,我们将使用GPIO2:

1

int DHTpin = 2;

要允许将数据发送到计算机,请在设置功能中启动串行连接:

1

Serial.begin(115200);

在你的主循环中声明两个字节变量,一个用于温度,另一个用于湿度:

1

2

byte temperature;

byte humidity;

我们使用字节变量,因为DHT11在温度和湿度方面只有8位分辨率。

最后,同样在主循环函数中,读取值并通过串口发送它们:

1

2

3

4

6

7

8

9

10

11

12

if (simple_dht11_read(DHTpin, &temperature, &humidity, NULL)) {

   Serial.print("Failed.");

}else {

   Serial.print("temperature: "); Serial.print(temperature); Serial.println("ºC");

   Serial.print("Humidity: "); Serial.print(humidity); Serial.println("%");

}

delay(2000);

在尝试使用或将数据发送到其他实体之前,请务必检查读取功能是否返回错误。此外,如前所述,请仔细检查接线,尤其是在使用nodeMCU时。例如,在这种情况下,我使用精确的NodeMCU板测试代码,并且电路板的引脚编号4(“D4”)是与ESP8266的GPIO2相对应的编号。

另外,不要忘记在读数之间加一些延迟。

如果您打开Arduino IDE的串行监视器,您应该会看到类似于图4的内容。

ESP8266 DHT11 readings.png

图4 - DHT读数。

重要的是,DHT11仅在连接到它的微控制器请求时执行测量。因此,传感器保持低功率模式,直到接收到启动信号,以测量温度和湿度。完成测量后,它将返回低功耗模式,直到收到新的启动信号[2]。


最后

可以看出,将DHT11连接到ESP8266非常简单。虽然本教程仅解释了如何使用串行连接将数据发送到计算机,但使用ESP8266功能可以很容易地调整用于将测量结果发送到远程服务器的代码。您可以在此处查看 使用ESP8266和DHT11将数据发送到云的温度记录器示例。

我将在这里留下 所用库的github页面的链接。

猜你喜欢

转载自blog.csdn.net/solar_lan/article/details/81105092