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

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

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

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

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


相关推荐
H_oRIZoN_3 小时前
Linux入门DAY40(51 单片机入门:GPIO、中断、定时器、PWM、蜂鸣器完整梳理)
单片机·嵌入式硬件
LCG元4 小时前
STM32F103 复位来源诊断实战:RCC_CSR 标志位判优、BKP 复位计数持久化与六种复位源注入实测
stm32·单片机·嵌入式硬件
国产HT1621B6 小时前
显示省不了电,休眠才见真章:1621 低功耗实操
驱动开发·单片机·嵌入式硬件·led驱动·lcd驱动
国科安芯6 小时前
低轨卫星姿轨控系统中高可靠嵌入式控制单元的设计与验证
单片机·mcu·低轨卫星·星间链路·卫星姿轨控
老当益壮梁奶奶8 小时前
ARM 汇编学习笔记(二)启动代码、指令、函数调用与 C 混合编程
c语言·arm开发·单片机·嵌入式硬件·51单片机
天空'之城9 小时前
单片机基础核心知识点汇总(三十八)
单片机·嵌入式硬件
崇山峻岭之间10 小时前
HC32F460PETB的PH2的EVENTOUT
单片机
斑马13911 小时前
单片机学习笔记(二)——UART串口与DS18B20
单片机
新晨单片机设计12 小时前
S018A-基于STM32单片机脉搏计(光电对管)【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus
HRTOS12 小时前
HRTOS Debug:8051实时操作系统资源状态监控与分析
单片机·嵌入式硬件·51单片机