🌡️ 做一个智能温湿度监控系统(含显示与数据上传)
如果说"点灯"是嵌入式入门,
那"环境监控系统"就是迈向产品级开发的第一步。
本文带你从 0 到 1 搭建一个:
✅ 可采集温湿度
✅ 可本地显示
✅ 可无线上传(手机/云)
的完整 IoT 系统。
一、项目目标(明确需求)
我们做的不是 Demo,而是一个可落地系统:
| 功能 | 描述 |
|---|---|
| 数据采集 | 温度 / 湿度 |
| 本地显示 | OLED 实时显示 |
| 数据上传 | BLE / WiFi |
| 超限报警 | LED / 蜂鸣器 |
| 低功耗 | 支持长时间运行 |
二、系统架构设计
text
┌────────────┐
│ 温湿度传感器 │
└─────┬──────┘
↓
┌────────────┐
│ MCU │
└─────┬──────┘
┌──────────┼──────────┐
↓ ↓ ↓
OLED显示 BLE上传 WiFi上传
↓
报警模块(LED/蜂鸣器)
三、硬件选型(工程思维)
1️⃣ 传感器
推荐:
- SHT30 / SHT31(I2C)
优势:
- 精度高(±0.3℃)
- 响应快
- 稳定性好
2️⃣ MCU 方案
根据你当前开发背景:
👉 推荐两种方案:
| 方案 | 适用 |
|---|---|
| ESP32 | WiFi + BLE 一体 |
| EFR32MG24 | 低功耗 + BLE |
3️⃣ 显示屏
推荐:
0.96寸 OLED(SSD1306)
I2C接口
4️⃣ 通信方式
| 方式 | 特点 |
|---|---|
| BLE | 手机直连 |
| WiFi | 云端上传 |
建议:
👉 初级:BLE
👉 进阶:WiFi/MQTT
四、系统功能拆解
1️⃣ 数据采集模块
周期读取:
text
温度(℃)
湿度(%RH)
建议周期:
2秒
2️⃣ 显示模块
OLED 显示:
text
Temp: 25.6℃
Humi: 48.2%
3️⃣ 报警模块
c
if(temp > 30)
alarm_on();
4️⃣ 数据上传模块
两种方式:
👉 BLE(简单直连)
发送格式:
text
T:25.6,H:48.2
👉 WiFi(HTTP / MQTT)
示例 HTTP:
text
POST /upload
{
"temp":25.6,
"humi":48.2
}
五、软件架构设计(推荐 RTOS)
建议任务划分:
| 任务 | 功能 |
|---|---|
| SensorTask | 采集数据 |
| DisplayTask | 更新OLED |
| CommTask | BLE/WiFi通信 |
| AlarmTask | 阈值判断 |
六、核心代码思路
1️⃣ 读取传感器
c
float temp, humi;
SHT30_Read(&temp, &humi);
2️⃣ OLED 显示
c
OLED_Clear();
OLED_Printf(0,0,"T:%.1fC", temp);
OLED_Printf(0,2,"H:%.1f%%", humi);
3️⃣ 报警逻辑
c
if(temp > 30 || humi > 80)
buzzer_on();
else
buzzer_off();
4️⃣ BLE 发送
c
sprintf(buf,"T:%.1f,H:%.1f",temp,humi);
ble_notify(buf);
5️⃣ WiFi 上传(ESP32)
cpp
HTTPClient http;
http.begin("http://server/upload");
http.addHeader("Content-Type", "application/json");
String data = "{\"temp\":" + String(temp) +
",\"humi\":" + String(humi) + "}";
http.POST(data);
七、系统运行流程
text
系统启动
↓
初始化外设(I2C/OLED/BLE/WiFi)
↓
创建任务
↓
周期采集数据
↓
显示更新
↓
上传数据
↓
报警判断
八、关键工程细节(拉开差距)
1️⃣ 数据滤波(避免跳动)
c
temp = (t1 + t2 + t3) / 3;
2️⃣ I2C 总线复用
SHT30 + OLED 可共用 I2C:
text
SCL / SDA 共用
不同地址区分
3️⃣ 低功耗优化
- 降低采样频率
- BLE 广播间隔调大
- 进入 sleep
4️⃣ 通信稳定性
- WiFi 自动重连
- BLE 断开重广播
九、进阶升级方向(强烈建议)
🚀 1. MQTT 云平台
接入:
- EMQX
- 阿里云 IoT
🚀 2. 手机 App
- 实时曲线
- 报警推送
🚀 3. 数据存储
- SPI Flash
- SD卡
🚀 4. OTA 升级
远程更新固件
十、应用场景
这个系统可以直接应用:
- 智能家居
- 冷链监控
- 仓储环境监控
- 温控器前端采集节点
十一、项目价值总结
这个项目的核心价值:
✅ 不再是"单外设练习"
✅ 而是"系统级整合能力"
你掌握了:
- 传感器驱动
- 显示系统
- 无线通信
- RTOS 架构
总结一句话
真正的嵌入式能力,
是把"采集 + 显示 + 通信"连成闭环。
当你的数据不仅能读出来,还能被看到、被远程访问时------
你已经在做一个真正的 IoT 产品了。