一.介绍
传感器模块DHT11 / DHT22用于测量温度/湿度。在本教程中,我们将学习如何使用Arduino ESP32与DHT11 / DHT22(这里使用DHT11)进行通信,以读取温度和湿度值。
二.元器件清单
- ESP32开发板
- 一个DHT11模块
- 面包板
- 导线若干
三.电路图
四.代码设计
我们将使用由Adafruit提供的DHT22库传感器。你可以在这里下载https:
//github.com/adafruit/DHT-sensor-library/archive/master.zip
载后,将其解压缩并将解压缩的文件夹复制到Arduino文件夹下的libraries文件夹:C:/ Users / [YOUR_USER_NAME] / Documents / Arduino / libraries注意:如果您已经打开了Arduino IDE,则需要重新启动Arduino IDE才能生效。 该库提供了一些功能,以便您可以使用它们从DHT22读取数据,例如:
从传感器读取湿度:
readHumidity():
如果参数flag为true,则从传感器读取的温度为华氏温度值。如果参数flag为false,则从传感器读取的温度为摄氏度值:
readTemperature(bool flag)
要使用这些功能,您必须创建一个实例(变量)类型DHT 。例如:DHT dht(DHTPIN,DHTTYPE)。这将创建一个带有2个输入的DHT实例(这是C ++构造函数)是DHTPIN(ESP32的引脚连接到DHT22的数据引脚)和DHTTYPE(这是DHT传感器类型(DHT11或DHT22)),我这里使用的是DHT11,因为传感器很慢,所以我们需要在测量之间延迟(大约2秒)。
以下就是这个项目的代码:
#include "DHT.h"
#define DHTPIN 23 //DHT11 DATA 数据引脚
#define DHTTYPE DHT11 //选择的类型
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT22 sensor!");
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
delay(2000);
}
五.测试代码
要测试代码,只需使用Arduino IDE上传它。然后,您应该能看到串口监视器里的温湿度的数据。以下就是实现的效果: