铁皮屋热阻隔差,夏季室内温度急剧升高。临时布线普遍,线路老化叠加高负荷用电,短路起火风险远高于普通建筑。
市面上常见的烟雾报警器和温湿度计,只能本地被动声光报警。人一离开现场,报警就断了——没人听得到,也没人能处理。
能同时感知温度、湿度、烟雾、明火、入侵;断网了自动控制照样跑;出事了能把警报推到手机上——一个从感知到控制的完整闭环。
DHT11 拿温湿度、MQ-2 测烟雾浓度、光敏电阻读光照强度、火焰传感器(红外接收管 760–1100nm)检明火、HC-SR501 人体红外抓入侵。论文表3-2定义了9个云数据点的完整映射。
源码 main.c 第357行:MQ-2 和光敏电阻的 ADC 值不是直接用的,而是每 20ms 采一次、连续 5 次取算术平均。论文4.2.1节写得很清楚——"有效过滤了瞬间电磁干扰造成的毛刺,极大减少了系统因误差报警的情况"。
源码路径 STM32/NET/MQTT/MqttKit.c,约 1100 行。没引入 lwIP 等 TCP/IP 协议栈,直接通过 ESP8266 AT 指令封装 MQTT 报文。CONNECT / PUBLISH / SUBSCRIBE 全部自建,QoS 0 模式下包头最短 2 字节。论文4.3.1节:"MQTT 报文头部仅 2 字节,特别适合算力有限、网络带宽紧张的嵌入式场景"。
源码 onenet.c 中的 OneNET_Authorization 函数:拼接 "ver\nres\net\naccess_key\ndev_name" 格式的待签字符串,HMAC-SHA1 哈希后 Base64 编码,发送至 OneNet 完成设备身份认证。APP 端 key.js 同样使用 HMAC-SHA1 生成用户令牌。
源码 OneNet_RevPro():收到 ESP8266 的 +IPD 数据帧后,cJSON_Parse 解析 JSON 负载,提取 fan/led/beep 等控制字段,更新全局标志位 fan_flag / led_flag / beep_flag。主循环(main.c 第327行)检测到标志位变化后直接调用 Fan_Set() / Led_Set() / Beep_Set() 驱动硬件。
论文3.1节定义的"端-管-云-用"模型:感知控制层(STM32 + 5传感器 + 执行器)→ 网络传输层(ESP8266 + MQTT)→ 平台服务层(OneNet 规则引擎)→ 应用交互层(uni-app APP)。论文明确指出"摒弃传统Web三层结构",每层独立职责,改硬件驱动不影响 APP,换云平台不动硬件。
① 全部网络缓冲用全局静态数组,零 malloc——论文强调"避免动态内存碎片,适合MCU资源受限环境"。② ESP8266 通信嵌入超时重试机制。③ PCB 数字地与模拟地分区覆铜隔离。④ 继电器用光耦隔离,论文3.3.3节:"彻底隔离大功率线圈产生的反向电动势,避免单片机I/O口被击穿"。
源码定义 enum MenuPages { display_page1, display_page2, settingsPage },switch(menu) 控制三页切换。每个页面独立渲染函数(OLED_Menu1/2/3)。
源码 ThresholdModification():温度/烟雾/光照阈值 1~99 循环——加超 99 回 1,减小过 1 回 99。物理按键调参数,不怕设到非法值。论文4.2.2节详述了三种阈值的调节流程。
每个外设(LED / Fan / Beep / DHT11 / ADC / Key)提供统一的 Init() 和 Set() 接口。源码 hardware/inc/ 下 9 个头文件,隐藏寄存器操作,业务代码只调接口。
源码 APP/pages/detail/detail.vue(约580行),HBuilderX + uni-app + Vue.js 开发。论文4.3.2节说明 APP "以对监测系统进行远程控制"。每2秒通过 OneNet REST API(api.heclouds.com)拉取设备属性,界面数据自动刷新。
论文图表4-11 和 4-12 详细描述了 APP 的三个功能区。顶栏:温度/湿度/光照/烟雾四个数据卡片。中间:LED、蜂鸣器、风扇、自动模式的开关按钮。底部:温度阈值和烟雾阈值的 slider 滑动条,拖拽实时下发。
| 对比维度 | 传统独立式报警器 | 本系统 |
|---|---|---|
| 感知维度 | 单一维度(烟或温) | 温湿度 + 烟雾 + 光照 + 明火 + 人体红外,六维 |
| 报警方式 | 本地声光,脱离现场即失效 | 本地声光 + APP 远程推送,任何地方都能收到 |
| 远程控制 | 不支持 | APP 实时看数据 + 远程开关设备 + 在线改阈值 |
| 离线能力 | — | 断网自动模式完整运行,本地声光防线绝不失效 |
| 数据处理 | 固定阈值直接触发 | ADC 五采样平均滤波,多传感器交叉确认后触发 |
| 显示方式 | 仅 LED 指示灯 | OLED 三页中文菜单 + APP 卡片式实时数值 |
| 部署方式 | 多种设备拼凑 | 单节点、模块化 PCB,一套覆盖所有指标 |
✓ STM32F103C8T6 + 5种传感器 + PCB 制板
✓ 自研 MQTT 客户端(MqttKit.c,~1100行)
✓ OneNet HMAC-SHA1 鉴权 + ESP8266 AT 桥接
✓ 自动/手动双模式 + OLED 三页中文菜单
✓ uni-app 跨平台 APP + 远程控制 + 阈值下发
✓ 8 项黑盒测试全部通过(论文第5章)
→ 论文6章:锂电池冗余供电,避免火灾断电失效
→ 扩展 LoRa / NB-IoT 多模通信
→ 用机器学习替代固定阈值判断
→ 增加摄像头模块做可视化安防
→ 支持多个设备同时接入 OneNet
五个传感器、一块 STM32、一个 ESP8266、一台手机
——让没人看守的铁皮屋不再无声无息。
感谢各位老师批评指正 · 陈宇瀚 · 2026