ESP32-S3 控制 DHT11温湿度传感器

ESP32-S3 控制 DHT11 温湿度传感器实验

温湿度采集是物联网项目中最常见的应用之一。

DHT11 是一款廉价且易用的数字温湿度传感器,适合用于室内温湿度监测。

本文介绍如何用 ESP32-S3 读取 DHT11 的温度和湿度数据,并通过串口输出。


一、实验名称

DHT11 温湿度传感器实验


二、接线说明

DHT11 模块 ESP32-S3开发板
VCC 3.3V
DATA 13
GND GND

注意事项

  1. 如果模块没有上拉电阻,建议在 DATA 引脚和 VCC 之间串联 4.7kΩ 上拉电阻。
  2. DHT11 传感器测量精度有限,温度 ±2℃,湿度 ±5%RH。

三、实验现象

程序下载成功后,打开串口监视器,每隔 2 秒输出一次温度和湿度数据,例如:

温度=26.0°C  湿度=50.0%RH
温度=26.0°C  湿度=51.0%RH
温度=26.0°C  湿度=50.0%RH

四、注意事项

  1. 在 Arduino IDE 中,需要安装 DHT11 库:

    • arduino-dht-master.zip
      安装方法:项目 → 导入库 → 添加 .ZIP 库… → 选择压缩包
  2. DHT11 的采样周期约 1~2 秒,不要频繁读取,否则数据可能不稳定。


五、核心代码

#include "public.h"
#include "DHT.h"

DHT dht;  // 创建 DHT11 实例

float temperature;        
float humidity;

void setup(){
  Serial.begin(115200);
  dht.setup(13); // 设置 DHT11 数据引脚
}

void loop(){
  humidity = dht.getHumidity();        // 获取湿度
  temperature = dht.getTemperature();  // 获取温度
  Serial.printf("温度=%.1f°C  湿度=%.1f%%RH\r\n",temperature,humidity);
  delay(2000); // 延时 2 秒,符合 DHT11 采样周期
}

六、代码讲解

  1. 创建 DHT 实例
DHT dht;

用于管理 DHT11 传感器的初始化和数据读取。

  1. 设置数据引脚
dht.setup(13);

指定 ESP32-S3 的 GPIO 13 为 DHT11 的 DATA 数据引脚。

  1. 读取温湿度
humidity = dht.getHumidity();
temperature = dht.getTemperature();
  • getHumidity() 返回湿度值,单位为 %RH
  • getTemperature() 返回温度值,单位为 ℃
  1. 串口输出
Serial.printf("温度=%.1f°C  湿度=%.1f%%RH\r\n", temperature, humidity);

使用 printf 格式化输出,保留一位小数。


七、实验效果

打开串口监视器,波特率 115200,每隔 2 秒显示 DHT11 采集的温湿度:

温度=26.0°C  湿度=50.0%RH
温度=26.0°C  湿度=51.0%RH
温度=26.0°C  湿度=50.0%RH

八、进阶扩展

  1. 多传感器读取
    可以同时连接多个 DHT11 或 DHT22 传感器,通过不同 GPIO 分别采集数据。

  2. OLED 显示
    将温湿度数据显示在 OLED 屏幕上,更直观。

  3. WebServer 展示
    ESP32-S3 可以将温湿度数据通过 Wi-Fi 提供 Web 页面实时显示,实现远程监控。

  4. 温湿度报警
    设置阈值,当温度或湿度超过安全范围时触发蜂鸣器、LED 或推送通知。


九、总结

本实验实现了 ESP32-S3 与 DHT11 温湿度传感器的 温度与湿度采集,学习了:

  • DHT11 数字温湿度传感器通信
  • Arduino DHT 库使用方法
  • 温湿度数据读取、格式化输出
  • 延时控制采样周期

这是构建智能家居或环境监测系统的基础实验,为进一步 OLED 显示、Web 监控、自动报警 提供了硬件和代码基础。

posted @ 2025-08-16 14:41  jeikerxiao  阅读(188)  评论(0)    收藏  举报