Example 51: OLED 显示temperature and humidity数据
About 4 min
Example 51: OLED 显示temperature and humidity数据
Synchronized Device Documentation
This page corresponds to the synchronized Chinese source. Commands, JSON examples, API paths, field names, and screenshots are kept aligned with the Chinese device-side source documentation.
What This Page Covers
- Hardware purpose, wiring requirements, and firmware edition notes.
- Peripheral configuration fields and JSON examples.
- Validation steps, PeriphExec linkage, and field-operation notes.
Source Reference
The detailed operational source is preserved below so implementation details stay exact while the English navigation, titles, and reading path remain available.
示例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 总线
