基于STM32的厨房安全监测系统:从传感器到小程序的物联网全链路实战 这次我们来看一个非常典型的物联网毕设/大赛项目基于 STM32 的厨房安全监测系统。它把单片机、WiFi 通信、云平台、小程序和 PCB 设计串成了完整链路不是简单点个灯而是实现“厨房环境采集 - 云端上报 - 小程序远程查看与告警”的物联网闭环。整套技术栈非常清晰主控用 STM32F103C8T6WiFi 模块用 ESP01S云平台用中国移动 OneNET上位机做微信小程序硬件板用嘉立创 EDA 画。适合正在做毕业设计、电子设计竞赛、物联网课程项目或者想充实简历的嵌入式方向同学。本文会带你把整条链路走一遍系统架构怎么设计、传感器数据和 STM32 怎么采集、ESP01S 怎么用 AT 指令连上 OneNET、小程序怎么拉取云端数据、PCB 怎么设计打样最后把最常见的报错和排查方法整理出来。想直接复刻一个完整的物联网项目这篇可以直接收藏。1. 核心能力速览能力项说明项目类型物联网嵌入式毕业设计/竞赛项目也可作为就业简历项目主控 MCUSTM32F103C8T6使用标准外设库开发无线通信ESP01SESP8266 核心通过 UART AT 指令控制云平台中国移动 OneNET支持 MQTT / HTTP 数据上传前端展示微信小程序实时显示温湿度、烟雾浓度、火焰状态常用传感器MQ-2 烟雾/可燃气体、DHT11 温湿度、火焰传感器本地报警蜂鸣器 LED阈值触发硬件设计嘉立创 EDA 设计原理图和 PCB导出 Gerber 打样开发环境Keil5 ST-Link 微信开发者工具批量上报可配置多个传感器数据流周期批量上传API 能力OneNET 开放 RESTful API小程序或后端均可调用适合场景厨房燃气泄漏预警、烟雾预警、居家安防、毕设展示这里先给一个结论这个项目的核心价值在于“链路完整”。传感器、MCU、WiFi、云平台、小程序、PCB 全都有任何一环拿出来都值得单独写一篇调试笔记。实际做起来最难的不是 STM32 点灯而是 ESP01S 联网和 OneNET 数据流打通。2. 适用场景与使用边界这个项目最适合三类人。第一类是毕业设计玩家。厨房安全监测是物联网方向的高频选题技术栈覆盖到位答辩时可以从硬件、协议、平台、App 四个维度展开工作量好展示。第二类是电子设计竞赛队伍。比赛要求快速做出可演示的原型STM32 ESP01S OneNET 小程序的方案成本低、验证快现场演示效果直观。第三类是物联网自学者。如果已经学完 STM32 基础外设想接触真实物联网应用这个项目能让你把 UART、ADC、TCP/IP、MQTT/HTTP、云平台 API 全部摸一遍。使用边界也要讲清楚。这个项目适合“教学演示、功能验证、原型开发”不能替代专业的商用燃气报警器。厨房安全涉及真实燃气泄漏做演示时要用打火机气体、酒精棉球、烟雾模拟不要把整个系统搬到真实燃气管道上做破坏性测试。生产环境的燃气报警必须有认证资质这是底线。还有一个合规问题如果使用了 MQ-2、DHT11 等传感器模块注意保留模块购买来源和文档如果参考了开源项目记得保留原始开源协议声明。涉及云平台账号、APIKey 不要公开到 GitHub避免被他人乱调用。3. 系统架构与硬件选型整个系统的数据流是这样的厨房环境 → 传感器 → STM32 采集 → 串口 → ESP01S → WiFi → OneNET 云平台 → 小程序 ↓ 蜂鸣器/LED 本地报警主控直接用 STM32F103C8T6 就够用。它内部有 64KB Flash、20KB RAM主频 72MHz带 ADC、USART、I2C、GPIO、定时器。跑传感器采集和 AT 指令转发完全没有压力。如果手上是 STM32F103ZET6 或者其他 F1 系列型号代码基本可以直接迁移。传感器选型方面常用这几种MQ-2检测烟雾和可燃气体输出模拟电压接 STM32 ADC 引脚根据电压判断浓度。DHT11检测温度和湿度单总线协议占用一个 GPIO。火焰传感器检测火焰红外光谱通常输出数字电平或模拟量放在炉灶附近做明火监测。蜂鸣器模块有源/无源均可接普通 GPIO 控制。ESP01S 是基于 ESP8266 的串口 WiFi 模块默认烧写 AT 固件。它只有 8 个引脚其中 TXD/RXD 接 STM32 的 USARTVCC 需要 3.3V但很多 ESP01S 模块满载功耗在 70mA 到 300mA 之间直接用 STM32 板载的 3.3V LDO 可能会供电不足建议用独立 3.3V LDO 或 USB 转 TTL 模块供电。这个问题在“ESP01S 反复重启”的排查里非常常见。云平台选 OneNET原因是它免费、国内访问快、文档齐全支持 MQTT 和 HTTP 两种接入方式。OneNET 上建一个产品、一个设备配置好数据流就可以接收设备上报的数据。APIKey 用于接口鉴权小程序或者 PC 端工具通过 OneNET RESTful API 读取设备数据流。PCB 设计使用嘉立创 EDA画完原理图后转 PCB布线后导出 Gerber直接去嘉立创下单打样。这个流程对学生党很友好因为本身是国内平台下单流程简洁5 片样板价格不高。4. 环境准备与开发工具4.1 软件依赖按下面的清单准备开发环境工具用途备注Keil MDK5STM32 编译下载需要安装 STM32F1 器件支持包ST-Link 驱动下载调试连接 STM32 的 SWD 接口串口调试助手查看日志、AT 指令调试SSCOM、XCOM 均可微信开发者工具小程序调试需要注册小程序测试号嘉立创 EDA 客户端原理图和 PCB 设计也可以用网页版OneNET 账号云平台设备创建在官网注册4.2 硬件清单STM32F103C8T6 最小系统板ESP01S WiFi 模块USB 转 TTL 模块用于单独调试 ESP01SST-Link V2 下载器MQ-2、DHT11、火焰传感器模块有源蜂鸣器、LED、杜邦线若干5V/3.3V 电源模块面包板或自制 PCB4.3 烧录接线ST-Link 和 STM32 的接线如下ST-LinkSTM32F103C8T6SWDIOPA13SWCLKPA14GNDGND3.3V3V3ESP01S 和 STM32 的接线如下ESP01SSTM32 或其他供电端VCC3.3V 独立供电GNDGNDTXDPA10 / USART1_RXRXDPA9 / USART1_TXCH_PD/EN3.3V注意电平匹配。STM32F103C8T6 的 UART 是 3.3V 电平ESP01S 也是 3.3V 电平可以直连。如果使用 5V 单片机就必须分压或者加电平转换。5. STM32 主控程序设计与传感器采集STM32 侧的主要任务有三个采集传感器数据、处理报警逻辑、通过串口控制 ESP01S。5.1 初始化流程程序中需要初始化以下外设RCC 时钟配置系统时钟为 72MHz。GPIO配置 DHT11 数据脚、蜂鸣器脚、LED 脚、火焰传感器输入脚。ADC配置 MQ-2 模拟量采集通道。USART1配置与 ESP01S 通信波特率通常 115200。USART2配置调试日志输出方便用串口助手查看。延时函数DHT11 和 AT 指令都依赖精确延时。5.2 传感器采集逻辑MQ-2 烟雾传感器输出模拟电压接 PA0 等 ADC 通道通过 ADC 读取数值。把这个数值映射成“烟雾浓度”或者直接当作原始值上报OneNET 端再设置阈值告警。代码模板如下uint16_t MQ2_GetValue(void) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) RESET); return ADC_GetConversionValue(ADC1); }DHT11 的数据读取时序比较固定主机先拉低至少 18ms然后拉高等待响应再读取 40bit 数据。注意 DHT11 读取间隔建议大于 1 秒否则容易读到错误数据。火焰传感器模块如果输出数字量直接读取 GPIO 电平如果输出模拟量也走 ADC。5.3 报警逻辑设定一个烟雾阈值、一个温度阈值例如烟雾 ADC 值超过 2500 或者温度高于 50 度就打开蜂鸣器和 LED并通过串口把报警标志发送给 ESP01S。实际阈值要根据你的传感器模块在无烟环境下的稳定读数来标定不要照抄别人项目里的固定值。5.4 上报数据帧格式STM32 和 ESP01S 之间通过 UART 发 AT 指令数据帧一般可以封装成 JSON 或者简单字符串。这里建议把数据拼成一行字符串发给 ESP01S例如{temp:26,hum:60,smoke:1200,fire:0,alarm:1}这个字符串由 STM32 组帧后再拼接 AT 指令发送。下面给出一个通用发送函数void ESP01S_SendString(const char *str) { while (*str) { while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) RESET); USART_SendData(USART1, (uint8_t)*str); str; } }实际项目中建议把 Debug 日志和 AT 指令分开调试串口和 ESP01S 串口不要共用同一个 USART否则 AT 响应和日志会混在一起非常难排查。5.5 一个关键坑printf 重定向与缓冲区STM32F103C8T6 只有 20KB RAMprintf 如果直接输出长字符串容易占用大量栈空间。建议开发阶段只保留必要的调试打印正式版可以加一个调试开关宏例如#define DEBUG_ENABLE 1 #if DEBUG_ENABLE #define DBG_PRINT(...) printf(__VA_ARGS__) #else #define DBG_PRINT(...) #endif这样既能在调试时看日志又能在最终演示时关闭日志避免日志干扰 AT 指令通信。6. ESP01S 联网与 OneNET 接入ESP01S 这块是整个项目的“劝退点”。很多人在这一环卡住报错包括 AT 无响应、WiFi 连不上、OneNET 连不上、数据上报失败。6.1 先单独调试 ESP01S拿到模块后不要直接接 STM32先用 USB 转 TTL 模块单独调试。接线如下USB 转 TTLESP01S3.3VVCCGNDGNDRXDTXDTXDRXD3.3VCH_PD/EN打开串口调试助手选择对应 COM 口波特率 115200发送 AT 指令。先验证固件是否正常AT正常返回OK如果返回乱码或者没有任何响应先检查供电是否稳定再把波特率改成 9600 或 74880 试试。ESP8266 在波特率 74880 下会输出调试信息可以辅助判断。6.2 配置 ESP01S 连接 WiFi把 ESP01S 设置为 STA 模式并连接路由器ATCWMODE1 ATCWJAP你的WiFi名称,你的WiFi密码连接成功返回WIFI CONNECTED然后返回OK。如果连不上优先排查2.4G 频段 WiFi不支持 5G。WiFi 密码是否有特殊字符特殊字符建议转义。路由器信号强度是否够。ESP01S 供电是不是不足。6.3 OneNET 平台创建设备登录 OneNET 官网进入控制台创建产品选择“MQTT”或“HTTP”协议。毕设项目常用 MQTT长连接更稳定。在产品下添加设备设备名称可以填“KitchenSafety01”。设备创建后记录产品 ID、设备 ID、APIKey。创建数据流例如 temp、hum、smoke、fire、alarm。相关热词里有人问“onenet生成apikey”这里重点说一句APIKey 在产品详情或者设备详情页可以生成不是在产品创建时自动出现。如果找不到直接在“产品概况-鉴权信息”里查看。6.4 ESP01S 通过 TCP/MQTT 连接 OneNET如果使用 MQTT不能用裸 ESP01S 的 AT 指令直接跑 MQTT因为 AT 固件默认不内置 MQTT 指令。常见方案有两种。方案一ESP01S 走 TCP 透传STM32 自己封装 MQTT 报文把 MQTT CONNECT/PUBLISH 数据包通过 TCP 发送到 OneNET 的 MQTT 端口。方案二ESP01S 直接使用 AT 指令的 HTTP 方式上报走 OneNET HTTP 接口每条数据一个 HTTP POST功耗略高但代码简单。很多成品毕设教程用的是“AT 指令 HTTP 上报”因为不需要在 STM32 上拼 MQTT 报文整体更简单。下面是 TCP 直连 OneNET 的典型指令序列ATCIPSTARTTCP,183.230.40.39,6002连接成功返回CONNECT。然后进入透传模式ATCIPMODE1 ATCIPSEND之后模块进入透传状态STM32 只要往串口发数据就会转发到服务器。如果要退出透传可以发送特殊指令但实际调试中经常出现退出失败所以很多项目会选择每发一条数据就断开重连稳定性更好。6.5 STM32 控制 ESP01S 的工作流程STM32 控制 ESP01S 的流程建议拆成状态机初始化 ESP01S - 连接 WiFi - 连接 OneNET - 上报数据 - 等待 - 继续上报不要启动后立刻发数据要给 ESP01S 留连接时间。常见的做法是上电后延时 3 到 5 秒或者通过查询ATCIPSTATUS判断网络是否准备好。网络搜索热词里有“esp01s发送tcp消息 手机”和“esp8266连接onenet失败”这里补充一个经验ESP01S 的默认波特率一般是 115200但有些模块是 9600 或 38400。如果 STM32 和 ESP01S 波特率不一致现象就是“AT 指令发出去模块没反应”。可以先单独测试模块确认当前波特率后再配置 STM32 的 USART1。6.6 串口接收处理建议STM32 接收 ESP01S 返回数据时要用中断或 DMA 超时判断。不建议在主循环里做阻塞等待因为 AT 指令返回时间不固定阻塞等待会浪费 CPU。简单做法用 USART 接收中断维护一个环形缓冲区在 main loop 里通过strstr查找返回关键字比如 OK、FAIL、CONNECT。7. APP 小程序端实现7.1 小程序通过 OneNET API 读取数据小程序端最直接的方式是通过 OneNET RESTful API 读取设备数据流。请求头里带上 APIKey就可以拿到设备最新数据。一个典型的 HTTP 请求方式如下GET https://api.heclouds.com/devices/{device_id}/datapoints用微信小程序的wx.request调用时注意必须在微信开发者工具后台配置域名白名单否则开发时会报request:fail url not in domain list。开发阶段可以勾选“不校验合法域名”但体验版和正式版必须配置合法域名。还要注意一点把 APIKey 直接写在小程序前端并不安全任何拿到小程序包的人都可以提取。毕设演示可以这么做但真正要上线建议加一个自己的后端服务做中转小程序请求后端后端再请求 OneNET。7.2 小程序页面设计页面可以做成三块顶部大卡片温度、湿度。中部状态卡片烟雾浓度、火焰状态。底部报警区设备在线状态、报警提示。小程序核心代码模板wx.request({ url: https://api.heclouds.com/devices/{device_id}/datapoints?datastream_idtemp, header: { api-key: 你的APIKey }, success(res) { console.log(温度数据, res.data) that.setData({ temp: res.data.data.datastreams[0].datapoints[0].value }) }, fail(err) { console.log(请求失败, err) } })注意上面只是演示模板真实项目地址和参数需要按你的 OneNET 设备 ID、APIKey 和产品类型调整。7.3 小程序告警推送OneNET 本身有消息推送能力也可以在小程序端做轮询。轮询间隔建议 10 到 30 秒不要设置 1 秒一次的短轮询OneNET 免费接口有频率限制容易被封。更优雅的做法是配置 OneNET 消息规则引擎把告警消息推送到微信或者 Webhook但毕设阶段简单轮询就够展示。如果想让项目看起来更完整可以增加一个“历史数据”页面展示最近 24 小时温度、烟雾变化曲线。数据直接从 OneNET 查询历史数据流用小程序端的图表组件渲染。8. PCB 设计与打样8.1 原理图设计使用嘉立创 EDA 新建工程把 STM32F103C8T6、ESP01S、传感器接口、电源模块、蜂鸣器、LED、按键接口全部画进去。重点注意STM32F103C8T6 的 BOOT0 和 BOOT1 引脚要预留跳线或电阻。NRST 引脚接 100nF 电容到地。VDDA 和 VSSA 要单独滤波接磁珠或电阻加电容。每个电源引脚附近都要放 100nF 去耦电容。8.2 晶振电容计算很多搜索热词里出现了“stm32 晶振电容计算”这是 PCB 设计里比较具体的知识点。STM32F103 常用的外部高速晶振是 8MHz匹配电容的值不是随便选的。负载电容公式CL (C1 * C2) / (C1 C2) Cstray一般 C1 C2PCB 走线和引脚分布电容 Cstray 估算为 2pF 到 5pF。如果晶振要求的负载电容 CL 是 10pF那么取 Cstray 为 3pF 时10 C / 2 3 C 14pF取常用值 15pF 或者 20pF 都可以温度影响不大。关键是两个电容尽量靠近晶振引脚晶振走线不要走太长不要离 MCU 太远。8.3 PCB 布线要点两层板设计时注意电源线加宽至少 0.5mm 以上3.3V 主干线可以做到 1mm。晶振下方不要走其他信号线减少干扰。ESP01S 天线区域下方要保持镂空不要铺铜。MQ-2 这类模拟信号线要短远离高频信号。蜂鸣器这种感性负载并联续流二极管避免反向冲击。8.4 导出 Gerber 与打样嘉立创 EDA 完成 PCB 布线后做 DRC 检查没有错误后导出 Gerber 文件。下单页面上传 Gerber 压缩包选择板子层数、板材、表面工艺。普通学生打样选“常规 FR-4、1.6mm、绿色、喷锡”就可以满足需求。网络热词里有“gerber文件转成pcb文件”这里说明一下Gerber 是 PCB 制造的标准文件格式不能直接转回可编辑的 PCB 工程。如果想二次修改必须保留原始嘉立创 EDA / Altium Designer / Cadence 工程文件。下单时只需要 Gerber但自己留存一定记得把源工程一起备份。8.5 焊接与调试焊接顺序建议先焊电源部分上电测各点电压再焊 STM32 最小系统用 ST-Link 烧录 LED 闪灯程序然后焊传感器接口模块调通数据最后焊 ESP01S 和相关通信电路。烧结流程不是拿到 PCB 一把梭。一次全焊完如果板子不工作根本不知道是哪里短路还是哪里虚焊。9. 功能测试与效果验证9.1 测试环境准备建议在通风良好的实验桌上测试。传感器测试不要用打火机直接长时间对着 MQ-2 烧可以用打火机短暂喷气几次或者用酒精棉球靠近传感器模拟可燃气体。9.2 分模块测试流程先测 STM32 最小系统用 ST-Link 烧录 LED 闪灯测试程序。确认 Keil 能正常识别芯片。用串口调试助手查看日志输出。再测传感器用手触摸 DHT11看温度读数是否变化。用电吹风加热传感器湿度会下降。用打火机气体靠近 MQ-2观察串口打印的 ADC 值是否明显上升。再测 ESP01S单独用 USB 转 TTL 测试 AT 指令和 WiFi 连接。连接 OneNET 后在 OneNET 平台设备详情页观察数据流是否刷新。最后测小程序打开小程序开发者工具填写 APIKey 和设备 ID。点击刷新按钮看数据是否显示。修改 STM32 的阈值触发报警看小程序端是否有告警状态。9.3 判断成功标准STM32 串口日志稳定输出传感器数据。OneNET 平台能够收到设备上报的数据流。小程序端能够显示温度、湿度、烟雾、火焰状态。手动触发烟雾后本地蜂鸣器报警小程序端状态同步。断电重启后设备能自动重新连接 WiFi 和 OneNET。9.4 常见失败场景OneNET 平台没收到数据先看 ESP01S 是否进入透传再看上报的数据格式是否符合平台要求。小程序显示为 0查看 APIKey 是否过期、设备 ID 是否正确、数据流名称是否一致。蜂鸣器不响先用万用表测量蜂鸣器引脚电压再检查驱动引脚配置是否正确。10. 资源占用与稳定性观察嵌入式项目不叫“显存占用”叫内存和资源占用但同样重要。STM32F103C8T6 的资源压力主要在串口缓冲和内存上。20KB RAM 要在大量字符串处理时特别注意。比如 AT 指令响应解析、MQTT 报文拼接、JSON 组帧都会消耗内存。实际开发建议接收缓冲区至少 256 字节环形缓冲区可以设 512 字节。组帧的字符串数组不要分配在栈上放在全局静态区更安全。单片机做主逻辑时关闭 printf减少 CPU 阻塞。功耗方面ESP01S 在 WiFi 发射时电流可能达到 200mA 以上如果采用电池供电需要关注峰值电流和电压跌落。演示环境建议直接用 5V USB 供电稳压到 3.3V 给模块供电稳定性最高。数据链路稳定性也要观察。ESP01S 连接 WiFi 后如果长时间没有通信路由器可能踢掉模块。OneNET MQTT 也有心跳机制。实际测试时把设备持续运行 30 分钟以上看是否会出现掉线、断流、数据空白。如果出问题考虑在 STM32 侧实现“定时检查 WiFi 状态 - 断线重连”的逻辑。OneNET 免费接口有频率限制上报周期建议 5 到 30 秒。太高的上报频率不仅流量消耗大还可能被平台限流导致数据上报失败。11. 常见问题与排查方法问题现象可能原因排查方式解决方案STM32 烧录报error: no stm32 target foundST-Link 连接失败、目标板没供电、SWDIO/SWCLK 接反、芯片 debug authentication 锁定检查 ST-Link 和目标板接线确认 3.3V 和 GND在 Keil 里点击“Settings”查看 IDCODE重新插拔 ST-Link给目标板单独供电确认 SWD 引脚没有复用被锁定时尝试用 ST-Link Utility 连接并解除保护ESP01S AT 指令无响应供电不足、TX/RX 接反、波特率不对、固件异常单独用 USB 转 TTL 测试测量 VCC 电压独立 3.3V 电源调波特率 9600/115200/74880 测试ESP01S 连接 WiFi 失败路由器是 5G、WiFi 密码错误、信号弱查看ATCWJAP返回信息使用 2.4G WiFi密码特殊字符转义靠近路由器测试ESP8266 连接 OneNET 失败TCP 地址或端口错误、产品协议不匹配、网络不通用串口调试工具手动发送 ATCIPSTART 测试核对 OneNET 平台 MQTT/HTTP 地址和端口在 PC 上 ping 测试OneNET 鉴权失败APIKey 错误、设备 ID 错误、产品 ID 错误在 OneNET 控制台逐个核对到产品/设备详情页重新复制 APIKey小程序请求失败域名未配置、APIKey 放在 header 大小写错误、后端接口跨域查看wx.requestfail 信息开发阶段勾选“不校验合法域名”检查 header 参数名api-keyDHT11 读不到数据接线错误、延时不够、上拉缺失检查 GPIO 配置和延时函数参考 DHT11 数据手册重新调时序增加 4.7k 上拉电阻MQ-2 数值漂移大传感器预热不足、供电不稳上电后预热 5 分钟再采样多次采样取平均或者做软件滤波设备跑一会儿就重启ESP01S 供电跌落、LDO 过热测模块 VCC 纹波和电流换更大电流 LDO或 5V 直接供电用 DC-DC跑 30 分钟不上报数据WiFi 被踢、TCP 连接断开、OneNET 心跳超时查看 ESP01S 串口日志是否卡住实现断线重连定期重连 WiFi 和 OneNET12. 最佳实践与使用建议先说开发顺序。第一次做这个项目不要直接把传感器、WiFi、小程序全部一起调。建议按照“最小系统 - 传感器采集 - ESP01S 联网 - OneNET 数据流 - 小程序显示 - PCB 整合”的顺序推进。每一步都确定成功后再进入下一步否则问题叠加在一起排查成本非常高。工程管理上建议把 Keil 工程、原理图源文件、小程序代码、文档截图分目录存放模型和实物不要混在一起。Keil 工程要开 Git 或者至少手动备份防止某次修改把启动文件或者外设配置改坏。调试过程中给程序加日志开关。ESP01S 交互环节最容易出问题建议做一个持续打印 AT 命令和返回值的调试日志把通信过程完整记录下来。正式版演示时关掉调试日志避免日志刷屏导致串口和 ESP01S 发生冲突。OneNET 的 APIKey 要保护好。如果项目要公开到 GitHub务必把 APIKey、设备 ID 放到独立的配置文件中并且.gitignore忽略该文件或者使用环境变量注入。哪怕只是毕设也不要让云平台账户暴露在公网代码仓库里。演示和答辩方面建议准备一个“演示检查单”提前连好 WiFi确保 ESP01S 已经连接到 OneNET。小程序提前打开缓存好最近的页面数据。测试烟雾传感器要用少量打火机气体提前试一次掌握好触发距离和时间。准备一张架构图答辩时说明数据链路、异常处理和安全边界。还有一个容易被忽视的点烧录后如果点没有问题把 ST-Link 拔掉使用独立 5V 电源给板子供电再测一次工作状态。如果独立供电后系统运行不稳定说明板子的电源设计还有问题这个在真实项目交付中非常影响体验也在竞赛演示中容易被现场评委问到。从简历角度看这个项目可以提炼成一句话“设计并实现厨房安全监测终端基于 STM32 采集烟雾、温湿度和火焰信号通过 ESP01S 接入 OneNET 云平台开发微信小程序实现远程监控与告警完成 PCB 设计与打样。”这就是一个标准的物联网项目描述适合写进嵌入式方向简历的项目经历部分。最后说下一步还能做什么如果想把项目再往上拔一个档次可以加一个 4G 模块版本比如合宙 Air724 或者 A7670C解决家里没有路由器的场景可以把 ESP01S 的 TCP 透传改成真正的 MQTT 协议减少云平台流量消耗也可以用小程序的订阅消息服务实现实时告警推送而不是轮询。这些方向都是这个项目自然的延伸做毕业设计或者比赛展示时可以作为“后期规划”写在文档里会给答辩加分。先跑通链路再优化细节。这套组合拳打下来你会收获一个真正“能演示、有深度、可扩展”的物联网项目。建议收藏备用后面从 STM32 到小程序遇到问题回来看这一篇挨个排查就行。