ESP8266-Arduino编程实例-OLED显示DHT11传感器数据

OLED显示DHT11传感器数据

1、应用实例介绍

本次实例将演示如何在OLED中显示DHT11温度湿度传感器的数据。实例主要分两步来完成:

  1. DHT11传感器驱动,采集温度和湿度
  2. OLED驱动,显示采集到的温度值和湿度值。

在前面的文章中,对DHT11及其驱动做了详细的介绍,请参考:

在前面的文章中,对OLED及其驱动做了详细的介绍,请参考:

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • DHT11传感器模块一个
  • OLED(SSD1306)模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用到的OLED驱动库如下:

使用到的DHT11驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <SPI.h>
#include <Wire.h>
#include <Adafruit\_GFX.h>
#include <Adafruit\_SSD1306.h>
#include "DHT.h"

// 创建OLED设备对象
#define OLED\_RESET -1
Adafruit_SSD1306 display(OLED_RESET);

// 创建DHT11设备对象
#define DHTPIN D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

2)设备初始化

1
2
3
4
5
6
7
8
9
10
11
void setup()   
{
// 初始化串口
Serial.begin(9600);
// 初始化DHT11
dht.begin();
// 初始化OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 64x48)
display.display();
}

3)数据采集及显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void loop() 
{
delay(2000);
// OLED清屏
display.clearDisplay();
// OLED设置字体大小
display.setTextSize(1);
// OLED设置字体颜色
display.setTextColor(WHITE);
// OLED设置光标位置
display.setCursor(0,0);

// 读取湿度
float h = dht.readHumidity();
// 读取温度
float t = dht.readTemperature();
float f = dht.readTemperature(true);
// 判断数据是否正确
if (isnan(h) || isnan(t) || isnan(f))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
// 显示数据
display.println("temp");
display.print(t);
display.println(" c");
display.println("humidity");
display.print(h);
display.println(" %");
display.display();
}

文章来源: https://iotsmart.blog.csdn.net/article/details/127653260