ESP32C6 + OLED + DHT11 温湿度显示系统
分享作者:XIUYUAN
作者昵称:XIUYUAN
评测品牌:iCEasy
评测型号:CJSL/DHT11温湿度模块
发布时间:2025-10-15 11:16:10
1
视频链接
【ESP32C6 + OLED + DHT11 温湿度显示系统-哔哩哔哩】 https://b23.tv/BOuZ0Cp
前言
使用ESP32C6微控制器,配合0.96寸OLED显示屏和DHT11温湿度传感器,实现实时温湿度监测和显示。
开源口碑分享内容

项目简介

使用ESP32C6微控制器,配合0.96寸OLED显示屏和DHT11温湿度传感器,实现实时温湿度监测和显示。屏幕第一行显示"iCEasy"标识,界面简洁实用。


硬件清单

| 组件名称 | 规格说明 | 数量 |
|---------|---------|------|
| ESP32C6-WROOM-1 | 开发板 | 1 |
| OLED显示屏 | 0.96寸 128x64 IIC | 1 |
| DHT11传感器 | 温湿度传感器模块 | 1 |
| 杜邦线 | 若干 | - |

接线说明

1.OLED显示屏(IIC):

| OLED引脚 | ESP32C6引脚 |
|----------|-------------|
| VCC | 3.3V |
| GND | GND |
| SCL | GPIO6 |
| SDA | GPIO7 |

2.DHT11传感器:

| DHT11引脚 | ESP32C6引脚 |
|-----------|-------------|
| VCC | 3.3V |
| GND | GND |
| DAT | GPIO10 |


库安装

在Arduino IDE的库管理器中安装:

       1. Adafruit SSD1306

       2. Adafruit GFX Library

       3. DHT sensor library by Adafruit

       4. Adafruit Unified Sensor


完整代码

```cpp
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

// OLED显示屏配置
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C

// IIC引脚定义
#define SDA_PIN 7
#define SCL_PIN 6

// DHT11引脚定义
#define DHTPIN 10
#define DHTTYPE DHT11

// 创建对象
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  
  // 初始化IIC
  Wire.begin(SDA_PIN, SCL_PIN);
  
  // 初始化OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  
  // 清空屏幕
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  
  // 显示启动画面
  display.setTextSize(2);
  display.setCursor(20, 20);
  display.println(F("iCEasy"));
  display.setTextSize(1);
  display.setCursor(10, 45);
  display.println(F("Initializing..."));
  display.display();
  
  // 初始化DHT11
  dht.begin();
  
  delay(2000);
  
  Serial.println(F("System Ready!"));
}

void loop() {
  // 读取温湿度数据
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  
  // 检查读取是否成功
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    displayError();
    delay(2000);
    return;
  }
  
  // 串口输出
  Serial.print(F("Temperature: "));
  Serial.print(temperature);
  Serial.print(F("°C  Humidity: "));
  Serial.print(humidity);
  Serial.println(F("%"));
  
  // 显示在OLED上
  displayData(temperature, humidity);
  
  delay(2000);  // 每2秒更新一次
}

void displayData(float temp, float humi) {
  display.clearDisplay();
  
  // 第一行:显示iCEasy标题
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println(F("===== iCEasy ====="));
  
  // 显示分割线
  display.drawLine(0, 12, 128, 12, SSD1306_WHITE);
  
  // 显示温度
  display.setTextSize(1);
  display.setCursor(0, 20);
  display.print(F("Temperature:"));
  
  display.setTextSize(2);
  display.setCursor(10, 32);
  display.print(temp, 1);
  display.setTextSize(1);
  display.setCursor(70, 35);
  display.print(F("'C"));
  
  // 显示湿度
  display.setTextSize(1);
  display.setCursor(0, 50);
  display.print(F("Humidity:"));
  display.setTextSize(1);
  display.setCursor(70, 50);
  display.print(humi, 1);
  display.print(F("%"));
  
  display.display();
}

void displayError() {
  display.clearDisplay();
  
  // 第一行:显示iCEasy标题
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println(F("===== iCEasy ====="));
  
  display.drawLine(0, 12, 128, 12, SSD1306_WHITE);
  
  display.setTextSize(1);
  display.setCursor(15, 30);
  display.println(F("Sensor Error!"));
  display.setCursor(10, 45);
  display.println(F("Check DHT11..."));
  
  display.display();
}

使用说明

       1. 按接线图连接硬件

       2. 在Arduino IDE中选择开发板:ESP32C6 Dev Module

       3. 安装所需库文件

       4. 上传代码到ESP32C6

       5. 屏幕会先显示"iCEasy Initializing...",2秒后显示温湿度数据

       6. 打开串口监视器(115200波特率)可查看实时数据


常见问题

1.OLED无显示

解决方案:

       检查IIC地址(尝试改为0x3D)

       确认接线:SCL→GPIO6,SDA→GPIO7

2.DHT11读取失败

解决方案:

       检查接线:DAT→GPIO10

       确认供电正常(3.3V)

       DHT11模块可能损坏,尝试更换

3.编译错误

解决方案:

       确认已安装所有必需库

       检查库版本是否兼容


总结

       本项目通过ESP32C6实现温湿度监测和OLED显示,硬件连接简单,代码清晰易懂,适合初学者学习IIC通信和传感器应用。


全部评论
暂无评论
0/144