ESP32 DHT11传感器 基于Vscode Platformio开发环境 DHT11库使用示例

一.开发芯片ESP32及OLED显示屏
二.DHT11传感器
三.开发环境(VScode+Platformio)
四.驱动代码
开发芯片:

ESP32-wroom-32-type-c接口

传感器:

简介:DHT11温湿度传感器

温度范围为: 测量范围为-20~+60℃, 精度±2℃

湿度范围为:测量范围为5~95%RH, 精度为±5%RH

显示模块:

0.96寸OLED-ssd1306驱动芯片IIC协议

驱动代码:

注意:

1.本程序导入了两个第三方库<DHT11><u8g2>,在执行本程序时一定要导入并安装这两个库

2.OLED显示屏引脚 (SCL:Pin_22  SDA:Pin_21)(VCC:单片机3.3V  GND:单片机GND)

3.DHT11信号引脚 (VCC:单片机3.3V   DATA:Pin_5   GND:单片机GND)

#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <u8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/22, /* data=*/21);

#define DHTPIN 2 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.

// Uncomment the type of sensor in use:

// 型号定义
#define DHTTYPE DHT11 // DHT 11
// #define DHTTYPE DHT22 // DHT 22 (AM2302)
// #define DHTTYPE    DHT21     // DHT 21 (AM2301)

// DHT11引脚定义及型号选择
DHT_Unified dht(DHTPIN, DHTTYPE);

void setup()
{
  u8g2.begin(); // u8g2初始化
  dht.begin();  // DHT11初始化
}

void loop()
{
  u8g2.clearBuffer();                     // 数据缓存区清除
  u8g2.setFont(u8g2_font_wqy12_t_gb2312); // 设置字体

  // 测量之间的延迟。
  delay(2000);

  // 定义一个结构成员
  sensors_event_t event;

  // 获取温度事件并打印其值。
  dht.temperature().getEvent(&event);
  float value_t = event.temperature;
  char t[20];
  sprintf(t, "%.2f", value_t); // 将温度浮点型数据转换为字符串数据

  // 获取湿度事件并打印其值。
  dht.humidity().getEvent(&event);
  float value_h = event.relative_humidity;
  char h[20];
  sprintf(h, "%.2f", value_h); // 将湿度浮点型数据转换为字符串数据

  // 检测是否有数据传入
  if (isnan(event.temperature) | isnan(event.relative_humidity))
  {
    u8g2.drawUTF8(8, 30, "未检测到温湿度数据");
    u8g2.sendBuffer(); // OLED数据显示
  }
  else
  {
    // OLED显示温度
    u8g2.drawUTF8(0, 30, "温度:");
    u8g2.drawUTF8(32, 30, t);
    u8g2.drawUTF8(64, 30, "℃");

    // OLED显示湿度
    u8g2.drawUTF8(0, 50, "湿度:");
    u8g2.drawUTF8(32, 50, h);
    u8g2.drawUTF8(66, 50, "%");
    u8g2.sendBuffer(); // OLED数据显示
  }
}
实验现象:
1.引脚浮空状态

简介:信号引脚浮空时,屏幕显示未检测到温度数据

2.引脚正常接入时

简介:信号引脚正常接入时,可正常获取温湿度数据并输出至在OLED显示屏