示例51:OLED 显示温湿度数据
大约 3 分钟
示例51:OLED 显示温湿度数据
场景概述
使用 DHT11/DHT22 温湿度传感器采集环境数据,通过 SSD1306 OLED 屏幕实时显示温度和湿度值。这是一个典型的"传感器读取 → 屏幕显示"联动场景。
所需硬件
| 模块 | 型号 | 用途 |
|---|---|---|
| 温湿度传感器 | DHT11 / DHT22 | 采集温湿度 |
| OLED 显示屏 | SSD1306 0.96寸 I2C | 显示数据 |
| ESP32 开发板 | 普中 ESP32 | 主控 |
硬件接线
DHT11 接线
| DHT11 引脚 | ESP32 GPIO | 说明 |
|---|---|---|
| VCC | 3.3V | 电源 |
| DATA | GPIO 32 | 数据引脚 |
| GND | GND | 地 |
SSD1306 OLED 接线
| OLED 引脚 | ESP32 GPIO | 说明 |
|---|---|---|
| VCC | 3.3V | 电源 |
| GND | GND | 地 |
| SDA | GPIO 21 | I2C 数据 |
| SCL | GPIO 22 | I2C 时钟 |
外设执行联动配置
场晦1:定时读取并显示温湿度(定时触发)
功能:每3秒读取DHT11数据并显示到OLED
Web界面配置步骤
步骤1:创建规则
- 点击左侧菜单 外设配置 → 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 填写基础配置:
- 规则名称:
OLED显示温湿度 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器(定时触发)
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 定时触发 定时采集 定时模式 选择 固定间隔 按毫秒间隔 间隔时间 30003秒
步骤3:配置动作(需要2个动作)
动作1:读取传感器数据
- 点击 添加动作 按钮
- 填写:
- 动作类型:选择 传感器读取
- 目标外设:选择
dht1
动作2:OLED显示数据
再次点击 添加动作 按钮
填写:
- 动作类型:选择 OLED显示
- 目标外设:选择
oled1 - 显示模板:
=== FastBee === Temp: {dht1.temperature}C Humi: {dht1.humidity}% ===============点击 保存 按钮
场晦2:带温度报警的显示(轮询触发)
功能:温度超过35°C时显示警告并触发蜂鸣器
配置步骤:
- 创建规则,名称:
温度报警显示 - 触发器配置:
- 触发类型:选择 轮询触发
- 目标外设:选择
dht1 - 数据字段:
temperature - 运算符:
> - 阈值:
35 - 轮询间隔:
5000
- 动作配置(需要2个动作):
- 动作1:选择 OLED显示,目标
oled1,模板:!! WARNING !! High Temp! {dht1.temperature}C Check cooling - 动作2:选择 高电平,目标
buzzer1(需提前配置蜂鸣器)
- 动作1:选择 OLED显示,目标
- 点击 保存
完整配置导入
将以下内容保存为 JSON 文件,通过 Web 界面的文件管理导入到 peripherals.json:
[
{
"id": "dht1",
"name": "DHT11温湿度",
"type": 38,
"enabled": false,
"pins": [32],
"params": {
"driver": "DHT",
"model": "DHT11",
"interval": 3000
}
},
{
"id": "oled1",
"name": "OLED显示屏",
"type": 36,
"enabled": false,
"pins": [21, 22],
"params": {
"driver": "SSD1306",
"width": 128,
"height": 64,
"i2cAddress": "0x3C"
}
}
]显示效果说明
OLED 显示内容示例:
=== FastBee ===
Temp: 25.3C
Humi: 60.5%
===============- 128x64 分辨率支持 4 行文本(16px 字号)
- 支持中英文字符(中文占两个字符宽度)
- 模板中
{periphId.field}会被替换为实际传感器值
扩展建议
- 多传感器显示:添加 BMP280 气压数据,交替显示多页信息
- 图形显示:使用脚本动作绘制温度趋势曲线
- 时间显示:结合 NTP 时间在屏幕显示时钟
- WiFi 状态:显示 WiFi 连接状态和 IP 地址
注意事项
- I2C 地址:SSD1306 默认地址通常为
0x3C,部分模块为0x3D - 刷新频率:OLED 刷新不宜过于频繁(≥ 1000ms),否则会闪烁
- 烧屏:长时间显示固定内容可能导致 OLED 烧屏,建议定时切换显示内容
- DHT 采样率:DHT11 最快 1 秒一次,DHT22 最快 2 秒一次
- 共用 I2C:OLED 可与 BMP280 等传感器共用 I2C 总线
