ESP32-C3 温湿度监测和显示案例
ESP32-C3 温湿度监测和显示案例
实验概述
通过 ESP32-C3 开发板连接 DHT11 温湿度传感器(GPIO4)和 0.96 寸 OLED 显示屏(I2C:SDA=GPIO5,SCL=GPIO6),体验 FastBee 从固件烧录 → 配网 → 传感器采集 → OLED 本地显示 → 规则触发 → 平台远程查看的完整流程。

硬件信息
ESP32-C3 开发板基于乐鑫 ESP32-C3FH4 模组(QFN32 5×5mm),板载 USB Type-C 接口、40MHz 晶振和 ME6211 3.3V LDO。
| 项目 | 说明 |
|---|---|
| 模组 | ESP32-C3FH4(RISC-V 单核 160MHz,WiFi + BLE 5) |
| 板载 OLED | 0.42 寸 SSD1306,72×40,I2C 接口(SDA=GPIO5,SCL=GPIO6) |
| 板载 LED | 蓝色 LED2(GPIO8) |
| 接口 | USB Type-C(供电 + 串口) |
| 尺寸 | 25.00mm × 20.50mm |
DHT11 温湿度传感器
| 项目 | 说明 |
|---|---|
| 型号 | DHT11(3 线制模块) |
| 湿度范围 | 20%–95% RH(误差 ±5%) |
| 温度范围 | 0°C–50°C(误差 ±2°C) |
| 工作电压 | 3.3V–5V |
| 输出形式 | 数字单总线 |
| 最小采样间隔 | ≥ 1 秒(固件内部限制 2 秒) |
接线说明
| 模块 | 模块引脚 | ESP32-C3 引脚 | 说明 |
|---|---|---|---|
| DHT11 | VCC | 3V3 | 供电 3.3V |
| DHT11 | GND | GND | 共地 |
| DHT11 | DO(DATA) | GPIO10 | 数据引脚(模块自带上拉) |
| OLED(板载) | SDA | GPIO5 | I2C 数据线 |
| OLED(板载) | SCL | GPIO6 | I2C 时钟线 |
| LED(板载) | GPIO | GPIO8 | LED 引脚 |
⚠️ 注意:OLED 为板载集成,无需额外接线。DHT11 的 DATA 引脚不要接 GPIO5/GPIO6,避免与 I2C 总线冲突。

实现流程
步骤1:烧录固件
方式A — 在线烧录(推荐)
- 打开 在线烧录工具
- 选择波特率 → 选择串口 → 选择固件文件
fastbee-esp32c3-f4ro.bin - 点击 烧录 按钮,等待完成
方式B — 源码烧录
powershell -ExecutionPolicy Bypass -File scripts\deploy.ps1 -Env esp32c3-F4R0详见 烧录与测试。
步骤2:配置网络
- 固件烧录后设备重启,电脑连接 WiFi 热点 fastbee-xxxx(密码:
admin123) - 浏览器访问 http://192.168.4.1 或 http://fastbee.local,使用
admin/admin123登录 - 进入 网络配置,模式选择 客户端模式(STA),填写 WiFi 名称和密码,点击保存
- 等待设备重启,电脑重新连接正常 WiFi,再通过 fastbee.local 访问设备
也可以不切换 STA,全程使用 AP 模式(192.168.4.1)完成后续配置。
步骤3:传感器配置
进入 外设配置 页面,新建外设:
| 字段 | 填写内容 |
|---|---|
| 名称 | 温湿度传感器(自定义) |
| ID | dht11_sensor(英文标识,规则中引用) |
| 引脚 | 10(对应 GPIO10) |
| 外设类型 | SENSOR_GENERIC(通用传感器) |
保存后,进入 外设执行管理 配置传感器数据源:
| 字段 | 填写内容 |
|---|---|
| 传感器类别 | DHT11 |
| 数据字段 | temperature(温度)/ humidity(湿度) |
| 采样间隔 | ≥ 5 秒(建议 10 秒) |
⚠️ 注意:DHT11 硬件最小采样间隔为 1 秒,固件内部缓存间隔为 2 秒。设置过短的轮询间隔不会提高采样率,只会返回缓存值。
步骤4:显示屏配置
进入 外设配置 页面,新建外设:
| 字段 | 填写内容 |
|---|---|
| 名称 | OLED显示屏(自定义) |
| ID | oled_display |
| 引脚 | 5, 6(SDA=GPIO5,SCL=GPIO6) |
| 外设类型 | LCD |
显示屏参数:
| 参数 | 值 | 说明 |
|---|---|---|
| 屏幕宽度 | 72 px | SSD1306 标准 |
| 屏幕高度 | 40 px | 0.42 寸 OLED |
| 接口类型 | I2C | 值为 2 |
| I2C 地址 | 0x3C | SSD1306 默认地址 |
板载 OLED 已集成上拉电阻(4.7KΩ),无需外接。若使用外接 OLED 模块,请确认 SDA/SCL 有 4.7KΩ–10KΩ 上拉。

步骤5:外设执行配置
进入 外设执行管理 页面,新建执行规则:
规则1 — 定时采集并显示温湿度
- 触发类型选择 定时触发,间隔设为 10 秒
- 执行动作选择 OLED 显示,模板填写:
#环境监控
温度: ${dht11_sensor.temperature}°C
湿度: ${dht11_sensor.humidity}%首行以
#开头表示居中标题,${外设ID.字段}会自动替换为实时采集值。
规则2 — 温度超限报警(可选)
- 触发类型选择 传感器触发
- 触发外设选择
dht11_sensor,数据字段temperature - 比较条件:大于,阈值填写
35 - 执行动作选择 OLED 显示:
#⚠高温警告
当前温度: ${dht11_sensor.temperature}°C
请及时降温!规则3 — 平台远程触发(可选)
触发类型选择 平台触发(MQTT),动作参数设置为 $value-平台下发,用于接收平台下发的显示内容。

步骤6:FastBee 平台配置(可选)
1. 平台端
在 FastBee 物联网平台 创建产品,获取以下信息:
| 信息 | 说明 |
|---|---|
| 产品 ID | 产品唯一标识 |
| MQTT 账号/密码 | 设备连接凭证 |
| 物模型 ID | 需与外设执行中的触发外设 ID 一致(如 dht11_sensor) |
2. 设备端
在设备 Web 页面配置:
- 设备配置 → 基本信息中填写 产品编号
- 网络协议 → 配置 MQTT 参数:
| 参数 | 值 |
|---|---|
| 服务器 | iot.fastbee.cn(演示地址) |
| 端口 | 1883(默认) |
| 账号/密码 | 平台获取的凭证 |
| 客户端 ID | 格式:S&设备编号&产品ID&1 |
步骤7:验证与远程控制
本地验证
- 打开设备 Web 页面 → 外设执行管理,确认规则状态为"运行中"
- 观察 OLED 屏幕是否每 10 秒刷新温湿度数据
- 用手握住 DHT11 传感器,观察温度读数是否上升
平台远程查看(可选)
MQTT 连接成功后,在 FastBee 物联网平台:
- 查看设备实时温湿度数据曲线
- 下发显示指令到 OLED 屏幕
- 查看温度超限告警记录

配置导入
该示例的外设配置和外设执行规则保存为json文件,可以直接在设备上导入使用。设备配置 → 高级配置 → 导入配置。导入配置后重启生效。
{
"type": "fastbee-config-bundle",
"version": 1,
"scope": "selected",
"exportedAt": "2026-07-29T06:39:10.248Z",
"files": [
{
"name": "periph_exec.json",
"content": "{\"rules\":[{\"id\":\"exec_001\",\"name\":\"温湿度采集上报\",\"enabled\":true,\"execMode\":0,\"triggers\":[{\"triggerType\":5,\"triggerPeriphId\":\"\",\"operatorType\":0,\"compareValue\":\"\",\"timerMode\":0,\"intervalSec\":60,\"timePoint\":\"\",\"eventId\":\"\",\"pollResponseTimeout\":1000,\"pollMaxRetries\":2,\"pollInterPollDelay\":100}],\"actions\":[{\"targetPeriphId\":\"dht11\",\"actionType\":19,\"actionValue\":\"{\\\"periphId\\\":\\\"dht11\\\",\\\"sensorCategory\\\":\\\"dht11\\\",\\\"scaleFactor\\\":1,\\\"offset\\\":0,\\\"decimalPlaces\\\":1,\\\"sensorLabel\\\":\\\"temperature\\\",\\\"unit\\\":\\\"°C\\\",\\\"dataField\\\":\\\"temperature\\\"}\",\"useReceivedValue\":false,\"syncDelayMs\":0,\"execMode\":0},{\"targetPeriphId\":\"dht11\",\"actionType\":19,\"actionValue\":\"{\\\"periphId\\\":\\\"dht11\\\",\\\"sensorCategory\\\":\\\"dht11\\\",\\\"scaleFactor\\\":1,\\\"offset\\\":0,\\\"decimalPlaces\\\":1,\\\"sensorLabel\\\":\\\"humidity\\\",\\\"unit\\\":\\\"%RH\\\",\\\"dataField\\\":\\\"humidity\\\"}\",\"useReceivedValue\":false,\"syncDelayMs\":0,\"execMode\":0},{\"targetPeriphId\":\"oled\",\"actionType\":27,\"actionValue\":\"T: ${dht11.temperature}°C\\nH: ${dht11.humidity}%RH\\nFASTBEE\",\"useReceivedValue\":false,\"syncDelayMs\":200,\"execMode\":0}],\"protocolType\":0,\"scriptContent\":\"\",\"reportAfterExec\":true},{\"id\":\"exec_388533\",\"name\":\"打开LED\",\"enabled\":true,\"execMode\":0,\"triggers\":[{\"triggerType\":0,\"triggerPeriphId\":\"led\",\"operatorType\":0,\"compareValue\":\"1\",\"timerMode\":0,\"intervalSec\":60,\"timePoint\":\"\",\"eventId\":\"\",\"pollResponseTimeout\":1000,\"pollMaxRetries\":2,\"pollInterPollDelay\":100}],\"actions\":[{\"targetPeriphId\":\"led\",\"actionType\":13,\"actionValue\":\"\",\"useReceivedValue\":false,\"syncDelayMs\":0,\"execMode\":0}],\"protocolType\":0,\"scriptContent\":\"\",\"reportAfterExec\":true},{\"id\":\"exec_410743\",\"name\":\"关闭LED\",\"enabled\":true,\"execMode\":0,\"triggers\":[{\"triggerType\":0,\"triggerPeriphId\":\"led\",\"operatorType\":0,\"compareValue\":\"0\",\"timerMode\":0,\"intervalSec\":60,\"timePoint\":\"\",\"eventId\":\"\",\"pollResponseTimeout\":1000,\"pollMaxRetries\":2,\"pollInterPollDelay\":100}],\"actions\":[{\"targetPeriphId\":\"led\",\"actionType\":14,\"actionValue\":\"\",\"useReceivedValue\":false,\"syncDelayMs\":0,\"execMode\":0}],\"protocolType\":0,\"scriptContent\":\"\",\"reportAfterExec\":true}]}"
},
{
"name": "peripherals.json",
"content": "{\"peripherals\":[{\"id\":\"dht11\",\"name\":\"DHT11温湿度传感器\",\"type\":38,\"enabled\":true,\"pins\":[10],\"params\":{}},{\"id\":\"led\",\"name\":\"板载LED\",\"type\":12,\"enabled\":true,\"pins\":[8],\"params\":{\"initialState\":1,\"pwmChannel\":0,\"pwmFrequency\":1000,\"pwmResolution\":8,\"defaultDuty\":0}},{\"id\":\"oled\",\"name\":\"OLED显示屏\",\"type\":36,\"enabled\":true,\"pins\":[5,6],\"params\":{\"width\":72,\"height\":40,\"interface\":2}}]}"
}
]
}问题排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| OLED 无显示 | I2C 地址错误或引脚接反 | 确认 SDA=GPIO5、SCL=GPIO6,地址 0x3C |
| OLED 显示乱码 | 屏幕尺寸参数不匹配 | 确认宽度 72、高度 40 |
| DHT11 读数全为 0 或 NaN | DATA 引脚配置错误 | 确认外设引脚为 GPIO10 |
| DHT11 读数不变化 | 采样间隔过短,返回缓存 | 将规则触发间隔调至 ≥ 5 秒 |
| 温度偏差大 | DHT11 精度限制(±2°C) | 属正常现象,如需高精度请换 DHT22 |
| 设备无法连接 WiFi | AP 模式下未切换 STA | 在网络配置中切换到客户端模式 |
| MQTT 连接失败 | 产品编号或凭证错误 | 核对平台端设备编号和 MQTT 账号密码 |
| 规则不触发 | 外设 ID 与规则中引用不一致 | 确认规则中的 dht11_sensor 与外设配置 ID 完全一致 |
相关链接
| 资源 | 地址 |
|---|---|
| FastBee 平台源码 | gitee.com/beecue/fastbee |
| FastBee 移动端源码 | gitee.com/beecue/fastbee-app |
| ESP32-C3 技术手册 | espressif.com/esp32-c3 |
| DHT11 数据手册 | adafruit.com/dht11 |
