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

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


硬件


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



图1 - DHT11板。


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

与ESP8266的连接非常简单,如图2所示。在这种情况下,我们假设使用GPIO2(这是使用ESP-01板
<https://techtutorialsx.wordpress.com/2016/02/28/esp8266-uploading-code-from-arduino-ide/>
时可用的少数几种)。不过,您可以将其连接到其他GPIO引脚。如果使用NodeMCU板,请考虑到电路板中的引脚顺序与ESP8266引脚不匹配,这可能导致错误结果(您可以在
此处 <https://github.com/esp8266/Arduino/issues/584>检查引脚映射)。



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

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


安装库

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



图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的内容。



图4 - DHT读数。


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


最后


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

我将在这里 <https://github.com/winlinvip/SimpleDHT>留下 所用库的github页面的链接。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信