九,ESP32 DHT11/22 读取温湿度

一.介绍

传感器模块DHT11 / DHT22用于测量温度/湿度。在本教程中,我们将学习如何使用Arduino ESP32与DHT11 / DHT22(这里使用DHT11)进行通信以读取温度和湿度值。

二.元器件清单

  • ESP32开发板
  • 一个DHT11模块
  • 面包板
  • 导线若干

三.电路图

九,ESP32 DHT11/22 读取温湿度

四.代码设计

我们将使用由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上传它。然后,您应该能看到串口监视器里的温湿度的数据。以下就是实现的效果:

九,ESP32 DHT11/22 读取温湿度

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
ESP-32

八,ESP32使用多个串行端口

2025-4-15 17:15:18

ESP-32

十,ESP32 在I2C LCD显示信息

2025-4-15 17:22:19

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索