做一个智能温湿度监控系统(含显示与数据上传)

🌡️ 做一个智能温湿度监控系统(含显示与数据上传)

如果说"点灯"是嵌入式入门,

那"环境监控系统"就是迈向产品级开发的第一步。

本文带你从 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 产品了。


相关推荐
辰哥单片机设计2 小时前
STM32智能家用垃圾桶(升级版)
stm32·单片机·嵌入式硬件
qq_150841992 小时前
浅析光模块固件之PC-MCU-Driver构架下的二级I2C从机的透传编程(再续)
单片机·嵌入式硬件
学工科的皮皮志^_^2 小时前
RS485学习
经验分享·笔记·单片机·嵌入式硬件·学习
wearegogog1232 小时前
基于STM32的数据采集+心率检测仪设计
stm32·单片机·嵌入式硬件
没有医保李先生2 小时前
mcu中cpu通用和特殊寄存器
单片机·嵌入式硬件
C^h2 小时前
RT thread中断管理学习记录
单片机·嵌入式硬件·学习
桌面运维家3 小时前
Windows 10 USB鼠标失灵:驱动、电源问题排查指南
windows·单片机·计算机外设
思茂信息3 小时前
基于 CST 的方向图可重构天线仿真分析
网络·人工智能·单片机·算法·重构·cst·电磁仿真
天选硬件打工人3 小时前
第二十九篇:【硬件工程师筑基系列 6-2】样板上电前全检查与安全上电流程 | 避免炸板的核心防线
单片机·嵌入式硬件·安全·硬件架构·硬件工程·射频工程