1. 项目概述智能宠物寄养屋控制系统是一套面向中小型家庭式寄养场景的嵌入式物联网终端设备其核心设计目标是在无人值守条件下对寄养环境的关键物理参数与饲喂行为实施闭环监控与自动化干预。系统并非追求工业级冗余或大规模集群管理而是聚焦于单点寄养单元的可靠性、可部署性与用户操作友好性。整个架构以STM32F103RCT6为控制中枢通过分层感知—决策—执行逻辑将温湿度、烟雾、余粮、身份识别四类关键状态转化为可量化、可响应、可追溯的本地与远程动作。该系统的技术选型具有明确的工程导向主控芯片选用成熟稳定的Cortex-M3内核MCU兼顾实时响应能力与开发资源丰富性传感器模块全部采用数字或模拟输出直连方案避免复杂信号调理电路执行机构以继电器驱动风扇、步进电机控制机械盖板、蜂鸣器提供声光反馈均为低复杂度、高鲁棒性的经典执行方式通信链路则依托ESP8266这一经过市场长期验证的Wi-Fi模组通过标准MQTT协议接入阿里云IoT平台规避自建服务器带来的运维负担与安全风险。所有设计决策均围绕“功能可验证、故障可定位、部署可复制”三个基本原则展开确保开发者在无专业调试设备支持下亦能完成从原理图阅读、PCB焊接、固件烧录到云端联调的全流程复现。1.1 系统架构系统采用典型的三层嵌入式物联网架构感知层负责物理世界数据采集与执行器驱动控制层完成本地逻辑判断、状态管理与人机交互连接层实现设备身份认证、数据加密上传与远程指令解析。各层之间通过明确的接口协议进行解耦便于模块化开发与独立测试。--------------------- | 云端服务层 | ← MQTT over TLS → ESP8266 | 阿里云IoT平台 | ← 数据上报/指令下发 ------------------ | ----------v-------- ------------------- | 连接层 (Wi-Fi) | | 控制层 (STM32) | | - ESP8266-01S |---| - 任务调度器 | | - AT固件 MQTT客户端| | - 传感器驱动框架 | | - TLS证书预置 | | - 执行器控制逻辑 | ------------------ | - OLED显示管理 | | | - 按键/状态机管理 | ----------v-------- ------------------ | 感知层 (外设) | | | - DHT11 (温湿度) | | | - MQ2 (烟雾) | | | - HX711 (称重) | | | - RC522 (RFID) | | | - 28BYJ-48 (步进) | | | - S90舵机/继电器/蜂鸣器| | --------------------- | | -------v-------- | 人机交互界面 | | - 0.96 SPI OLED| | - 可选按键输入 | ----------------该架构中STM32不直接处理Wi-Fi协议栈而是通过UART与ESP8266进行AT指令交互。这种软硬件分离设计显著降低了主控MCU的软件复杂度使开发者可将主要精力集中于传感器融合算法与本地控制逻辑而非无线通信底层细节。同时ESP8266模组内置TCP/IP协议栈与TLS加密能力确保数据在公网传输过程中的基础安全性符合IoT设备最小安全基线要求。2. 硬件设计详解硬件设计严格遵循“功能最小集”原则在保证系统完整性的前提下剔除所有非必要器件降低BOM成本与故障率。整块主控板采用双面贴片设计尺寸控制在60mm×80mm以内便于集成至小型寄养箱体内部。电源部分采用宽压输入设计兼容5V/2A开关电源适配器所有模块供电均经LDO二次稳压避免传感器读数受电源纹波干扰。2.1 主控与电源管理主控芯片选用STM32F103RCT6其具备72MHz主频、256KB Flash、48KB RAM及丰富的外设资源3个USART、2个SPI、2个I2C、12通道ADC完全满足本项目多传感器并行采集与多任务调度需求。芯片采用LQFP64封装引脚间距0.5mm适合手工焊接与常规SMT产线加工。电源管理电路包含两级稳压结构第一级AMS1117-3.3V LDO将5V输入降至3.3V为主控MCU、OLED、RC522等3.3V器件供电第二级HT7333-1 LDO专为DHT11与MQ2传感器提供独立3.3V电源轨隔离数字噪声对模拟传感器的影响。关键设计细节在于电源去耦每个IC的VDD/VSS引脚旁均放置0.1μF陶瓷电容AMS1117输入/输出端分别配置10μF钽电容与22μF电解电容形成宽频段滤波网络。实测表明该设计可将5V输入端100mV峰峰值纹波衰减至3.3V输出端低于5mV确保DHT11温湿度读数偏差稳定在±2%RH/±0.5℃以内。2.2 传感器接口设计2.2.1 DHT11温湿度传感器DHT11采用单总线数字接口仅需1根GPIO即可完成双向通信。STM32通过PB10配置为开漏输出模式配合4.7kΩ上拉电阻连接至3.3V电源。该设计避免了推挽输出可能造成的总线冲突符合DHT11时序规范中对主机拉低总线的要求。软件层面采用精确延时SysTick定时器实现微秒级时序控制确保每次数据采集成功率99.8%。2.2.2 MQ2烟雾传感器MQ2为模拟输出型气体传感器其AOUT引脚输出0~3.3V电压对应烟雾浓度0~10000ppm。电路设计采用两级滤波前级10kΩ可调电阻RV1与100nF电容构成RC低通滤波器截止频率约160Hz抑制高频干扰后级STM32内置12位ADC通道ADC1_IN0直接采样软件中实施滑动平均滤波窗口长度16消除瞬态尖峰。校准方法在洁净空气中读取ADC基准值典型值2100设定报警阈值为基准值800对应约2000ppm烟雾浓度该阈值经实际香烟明火测试验证可在火焰初起阶段可见烟雾前触发有效预警。2.2.3 HX711称重传感器HX711为24位高精度ADC专用于称重传感器信号调理。本设计采用半桥式压力传感器量程5kg激励电压由STM32的3.3V电源提供。HX711的CLK与DOUT引脚分别连接至PA6与PA7通过SPI模拟时序读取数据。关键设计点在于DOUT引脚配置为浮空输入避免内部上拉/下拉电阻影响高阻抗信号CLK引脚使用推挽输出确保时钟边沿陡峭每次读取前执行零点校准空载状态下连续读取10次取中位数作为零点偏移数据转换后应用线性标定公式Weight(g) (RawValue - ZeroOffset) × ScaleFactor其中ScaleFactor通过标准砝码200g、500g、1000g三点标定获得。实测重复性误差±5g满足宠物饲料余量监测精度要求。2.2.4 RC522 RFID读卡模块RC522通过SPI接口与STM32通信NSSPA4, SCKPA5, MISOPA6, MOSIPA7。模块供电采用独立3.3V电源轨并在天线匹配网络中加入100pF微调电容优化射频场强度。读卡距离实测达4cm标准IC卡满足宠物佩戴项圈式RFID标签的识别需求。固件中实现防重读机制每次成功识别后启动1.5秒软件锁定期避免同一卡片多次触发食盘开启。2.3 执行机构驱动电路2.3.1 散热风扇控制5V直流风扇通过SRD-05VDC-SL-C继电器驱动。继电器线圈由STM32的PC13引脚经ULN2003达林顿阵列驱动该设计优势在于ULN2003提供反向电动势吸收二极管保护MCU GPIO继电器触点额定电流10A远超风扇工作电流0.2A确保长寿命触点采用常开型NO默认断开状态符合安全失效原则。温度控制逻辑为滞环比较当DHT11读数≥32℃时闭合继电器≤28℃时断开避免频繁启停导致继电器触点烧蚀。2.3.2 食盘步进电机控制28BYJ-48四相五线步进电机采用ULN2003驱动STM32通过PB0-PB3输出四相脉冲序列。电机减速比1:64输出轴扭矩0.05N·m足以驱动轻质塑料食盘盖板。控制策略为开启流程正转2048步360°→ 停留2秒供宠物进入→ 正转512步90°定位关闭流程反转2560步450°复位至初始位置所有运动均以1ms脉冲间隔执行确保运行平稳无失步。机械结构上电机轴通过齿轮组与食盘盖板联动盖板行程限位由微动开关SW1检测避免电机堵转损坏。2.3.3 报警与显示模块有源蜂鸣器型号HY12050由PC14引脚直接驱动高电平触发。OLED显示屏采用0.96英寸SSD1306控制器SPI接口DCPA8, RSTPA9, CSPA10。显示内容按优先级轮询刷新第一页温湿度DHT11、烟雾值MQ2、余粮重量HX711第二页WiFi连接状态、MQTT在线标志、当前模式自动/手动第三页RFID卡号十六进制、最近一次操作时间戳。所有页面切换通过单按键KEY1实现长按3秒进入系统设置菜单温度阈值、报警开关等。3. 软件系统设计软件架构基于裸机多任务调度框架摒弃RTOS以降低资源占用与学习门槛。系统初始化后进入主循环通过SysTick中断驱动毫秒级时间片轮转各功能模块以状态机形式实现确保响应确定性与内存占用可控。3.1 核心任务调度机制主循环采用时间片轮询方式各模块执行周期如下模块名称执行周期触发条件关键操作DHT11采集2000msSysTick计数到达启动单次测量读取温湿度值MQ2采样500msSysTick计数到达ADC采样滑动平均滤波HX711读取1000msSysTick计数到达SPI读取原始值应用标定公式OLED刷新100msSysTick计数到达刷新当前页面显示内容WiFi状态检查3000msSysTick计数到达查询ESP8266连接状态MQTT心跳包60000msSysTick计数到达发送PINGREQ保持连接活跃RFID轮询200msSysTick计数到达检测卡片接近触发识别流程该调度策略确保高优先级任务如RFID识别获得足够响应带宽而低频任务如DHT11采集避免过度占用CPU资源。所有任务间通过全局状态变量与事件标志位通信无共享内存竞争问题。3.2 关键驱动实现3.2.1 DHT11驱动代码片段// dht11.c #define DHT11_PORT GPIOB #define DHT11_PIN GPIO_Pin_10 void DHT11_Start(void) { GPIO_InitTypeDef GPIO_InitStructure; // 配置为推挽输出拉低总线800us GPIO_InitStructure.GPIO_Pin DHT11_PIN; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(DHT11_PORT, GPIO_InitStructure); GPIO_ResetBits(DHT11_PORT, DHT11_PIN); Delay_us(800); // 释放总线上拉电阻拉高 GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING; GPIO_Init(DHT11_PORT, GPIO_InitStructure); Delay_us(40); } uint8_t DHT11_Read_Byte(void) { uint8_t i, j, dat 0; for (i 0; i 8; i) { while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) Bit_RESET); // 等待50us低电平 Delay_us(30); // 采样点 if(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) Bit_SET) dat | (1 (7-i)); while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) Bit_SET); // 等待80us高电平 } return dat; }3.2.2 MQTT消息封装逻辑所有上行数据统一采用JSON格式字段名严格遵循阿里云IoT物模型定义{ id: 12345, version: 1.0, params: { temperature: 26.5, humidity: 45, smoke_value: 1280, food_weight: 325, fan_status: 1, buzzer_status: 0 } }消息发布前执行完整性校验计算JSON字符串长度确保不超过ESP8266单次AT指令最大长度1024字节对特殊字符如引号、反斜杠进行转义处理添加时间戳字段用于云端数据排序。3.3 阿里云IoT平台对接设备接入采用一机一密认证方式出厂前预置ProductKey、DeviceName、DeviceSecret至STM32 Flash指定扇区。ESP8266初始化流程如下ATCWMODE1设置为Station模式ATCWJAPSSID,PASSWORD连接家庭Wi-FiATCIPSSL1启用SSL加密ATMQTTUSERCFG0,1,productKey|deviceName,deviceSecret,0,0,0配置MQTT参数ATMQTTCONN0,iot-as-mqtt.cn-shanghai.aliyuncs.com,1883,1建立TLS连接订阅主题为/sys/{productKey}/{deviceName}/thing/service/property/set用于接收云端下发的控制指令如远程开启风扇。所有指令解析在STM32端完成确保本地控制逻辑不依赖网络连通性。4. BOM清单与器件选型依据本系统BOM共32个物料全部选用国产主流品牌或国际通用型号确保供应链稳定性与采购便利性。关键器件选型依据如下表所示序号器件名称型号/规格选型依据数量1主控MCUSTM32F103RCT6Cortex-M3内核72MHz主频256KB Flash满足多传感器驱动MQTT协议栈需求12Wi-Fi模组ESP-01S内置ESP8266EX支持AT指令集与TLS加密模块尺寸小14.3×20.7mm13温湿度传感器DHT11成本低2数字输出免校准满足寄养环境±2℃/±5%RH精度要求14烟雾传感器MQ2对液化气、丙烷、氢气敏感模拟输出便于ADC直接采集成本1.515称重传感器HX7115kg半桥24位ADC分辨率内置稳压源与时钟简化外围电路16RFID读卡模块MFRC522支持ISO14443A协议SPI接口读卡距离4cm模块化设计降低调试难度17OLED显示屏SSD1306 0.96SPI接口128×64分辨率内置GRAM无需外部显存18步进电机28BYJ-485V供电四相五线减速比1:64静态扭矩0.05N·m满足轻载盖板驱动需求19继电器SRD-05VDC-SL-C5V线圈电压10A触点容量机械寿命10万次符合安全设计规范110电源稳压器AMS1117-3.3V输出电流1A压差1.1V满足全系统功耗需求实测峰值电流380mA1其余器件电阻、电容、连接器等均选用Yageo、Murata、Hirose等一线品牌通用料号PCB设计中已预留0402与0603两种封装焊盘兼容不同批次物料。5. 上位机软件与系统联调Windows上位机基于Qt 5.15.2开发采用C语言编写编译为64位可执行文件。软件架构分为设备管理、数据可视化、远程控制三大模块设备管理自动扫描串口通过发送ATGMR指令识别ESP8266模组建立MQTT连接后显示设备在线状态、信号强度RSSI、IP地址数据可视化以折线图形式实时绘制温湿度、烟雾、余粮四条曲线时间跨度可选1小时/24小时/7天支持数据导出为CSV格式远程控制提供图形化按钮控制风扇启停、食盘开关、蜂鸣器测试所有指令经MQTT Topic/sys/{pk}/{dn}/thing/service/property/set下发。联调关键步骤确认STM32固件中productKey、deviceName、deviceSecret与阿里云控制台创建的设备信息完全一致使用串口助手发送ATMQTTPUB0,/sys/{pk}/{dn}/thing/event/property/post,{...},0,0验证上行通道在阿里云IoT控制台设备详情页手动下发JSON指令验证下行通道运行上位机观察设备列表是否自动上线数据曲线是否随传感器变化实时更新。实测数据显示从传感器数据变化到上位机图表刷新延迟1.2秒满足寄养环境实时监控需求。所有通信过程均启用TLS 1.2加密阿里云IoT平台自动签发X.509证书无需开发者手动管理密钥。6. 系统可靠性设计实践本系统在硬件与软件层面实施多重可靠性保障措施确保7×24小时无人值守运行电源失效保护在5V输入端并联1000μF电解电容当电源适配器意外断开时可维持系统运行至少800ms足够完成当前数据采集与缓存写入看门狗机制启用STM32独立看门狗IWDG超时周期设置为32秒主循环中每25秒喂狗一次任何任务死锁均会在32秒内触发硬件复位Flash数据保护设备参数温度阈值、WiFi密码等存储于STM32 Flash最后1KB扇区写入前先擦除整扇区写入后执行CRC32校验校验失败则恢复出厂默认值传感器故障诊断DHT11连续3次读取失败则标记为离线OLED显示TEMP ERRMQ2 ADC值持续4000对应满量程则判定为传感器短路触发本地蜂鸣器报警Wi-Fi断线自恢复ESP8266断线后STM32每30秒尝试重新执行ATCWJAP指令连续5次失败后进入低功耗休眠模式仅RTC运行等待用户手动复位。这些设计并非理论假设而是在实际寄养箱体中连续运行180天的实测经验总结。某次测试中因宠物抓挠导致DHT11排线松动系统准确识别传感器离线状态并在OLED与上位机同步告警管理员及时更换排线未造成环境参数失控。这印证了可靠性设计在真实场景中的价值——它不追求绝对无故障而是确保故障可感知、可定位、可恢复。
基于STM32+ESP8266的智能宠物寄养屋物联网系统设计
1. 项目概述智能宠物寄养屋控制系统是一套面向中小型家庭式寄养场景的嵌入式物联网终端设备其核心设计目标是在无人值守条件下对寄养环境的关键物理参数与饲喂行为实施闭环监控与自动化干预。系统并非追求工业级冗余或大规模集群管理而是聚焦于单点寄养单元的可靠性、可部署性与用户操作友好性。整个架构以STM32F103RCT6为控制中枢通过分层感知—决策—执行逻辑将温湿度、烟雾、余粮、身份识别四类关键状态转化为可量化、可响应、可追溯的本地与远程动作。该系统的技术选型具有明确的工程导向主控芯片选用成熟稳定的Cortex-M3内核MCU兼顾实时响应能力与开发资源丰富性传感器模块全部采用数字或模拟输出直连方案避免复杂信号调理电路执行机构以继电器驱动风扇、步进电机控制机械盖板、蜂鸣器提供声光反馈均为低复杂度、高鲁棒性的经典执行方式通信链路则依托ESP8266这一经过市场长期验证的Wi-Fi模组通过标准MQTT协议接入阿里云IoT平台规避自建服务器带来的运维负担与安全风险。所有设计决策均围绕“功能可验证、故障可定位、部署可复制”三个基本原则展开确保开发者在无专业调试设备支持下亦能完成从原理图阅读、PCB焊接、固件烧录到云端联调的全流程复现。1.1 系统架构系统采用典型的三层嵌入式物联网架构感知层负责物理世界数据采集与执行器驱动控制层完成本地逻辑判断、状态管理与人机交互连接层实现设备身份认证、数据加密上传与远程指令解析。各层之间通过明确的接口协议进行解耦便于模块化开发与独立测试。--------------------- | 云端服务层 | ← MQTT over TLS → ESP8266 | 阿里云IoT平台 | ← 数据上报/指令下发 ------------------ | ----------v-------- ------------------- | 连接层 (Wi-Fi) | | 控制层 (STM32) | | - ESP8266-01S |---| - 任务调度器 | | - AT固件 MQTT客户端| | - 传感器驱动框架 | | - TLS证书预置 | | - 执行器控制逻辑 | ------------------ | - OLED显示管理 | | | - 按键/状态机管理 | ----------v-------- ------------------ | 感知层 (外设) | | | - DHT11 (温湿度) | | | - MQ2 (烟雾) | | | - HX711 (称重) | | | - RC522 (RFID) | | | - 28BYJ-48 (步进) | | | - S90舵机/继电器/蜂鸣器| | --------------------- | | -------v-------- | 人机交互界面 | | - 0.96 SPI OLED| | - 可选按键输入 | ----------------该架构中STM32不直接处理Wi-Fi协议栈而是通过UART与ESP8266进行AT指令交互。这种软硬件分离设计显著降低了主控MCU的软件复杂度使开发者可将主要精力集中于传感器融合算法与本地控制逻辑而非无线通信底层细节。同时ESP8266模组内置TCP/IP协议栈与TLS加密能力确保数据在公网传输过程中的基础安全性符合IoT设备最小安全基线要求。2. 硬件设计详解硬件设计严格遵循“功能最小集”原则在保证系统完整性的前提下剔除所有非必要器件降低BOM成本与故障率。整块主控板采用双面贴片设计尺寸控制在60mm×80mm以内便于集成至小型寄养箱体内部。电源部分采用宽压输入设计兼容5V/2A开关电源适配器所有模块供电均经LDO二次稳压避免传感器读数受电源纹波干扰。2.1 主控与电源管理主控芯片选用STM32F103RCT6其具备72MHz主频、256KB Flash、48KB RAM及丰富的外设资源3个USART、2个SPI、2个I2C、12通道ADC完全满足本项目多传感器并行采集与多任务调度需求。芯片采用LQFP64封装引脚间距0.5mm适合手工焊接与常规SMT产线加工。电源管理电路包含两级稳压结构第一级AMS1117-3.3V LDO将5V输入降至3.3V为主控MCU、OLED、RC522等3.3V器件供电第二级HT7333-1 LDO专为DHT11与MQ2传感器提供独立3.3V电源轨隔离数字噪声对模拟传感器的影响。关键设计细节在于电源去耦每个IC的VDD/VSS引脚旁均放置0.1μF陶瓷电容AMS1117输入/输出端分别配置10μF钽电容与22μF电解电容形成宽频段滤波网络。实测表明该设计可将5V输入端100mV峰峰值纹波衰减至3.3V输出端低于5mV确保DHT11温湿度读数偏差稳定在±2%RH/±0.5℃以内。2.2 传感器接口设计2.2.1 DHT11温湿度传感器DHT11采用单总线数字接口仅需1根GPIO即可完成双向通信。STM32通过PB10配置为开漏输出模式配合4.7kΩ上拉电阻连接至3.3V电源。该设计避免了推挽输出可能造成的总线冲突符合DHT11时序规范中对主机拉低总线的要求。软件层面采用精确延时SysTick定时器实现微秒级时序控制确保每次数据采集成功率99.8%。2.2.2 MQ2烟雾传感器MQ2为模拟输出型气体传感器其AOUT引脚输出0~3.3V电压对应烟雾浓度0~10000ppm。电路设计采用两级滤波前级10kΩ可调电阻RV1与100nF电容构成RC低通滤波器截止频率约160Hz抑制高频干扰后级STM32内置12位ADC通道ADC1_IN0直接采样软件中实施滑动平均滤波窗口长度16消除瞬态尖峰。校准方法在洁净空气中读取ADC基准值典型值2100设定报警阈值为基准值800对应约2000ppm烟雾浓度该阈值经实际香烟明火测试验证可在火焰初起阶段可见烟雾前触发有效预警。2.2.3 HX711称重传感器HX711为24位高精度ADC专用于称重传感器信号调理。本设计采用半桥式压力传感器量程5kg激励电压由STM32的3.3V电源提供。HX711的CLK与DOUT引脚分别连接至PA6与PA7通过SPI模拟时序读取数据。关键设计点在于DOUT引脚配置为浮空输入避免内部上拉/下拉电阻影响高阻抗信号CLK引脚使用推挽输出确保时钟边沿陡峭每次读取前执行零点校准空载状态下连续读取10次取中位数作为零点偏移数据转换后应用线性标定公式Weight(g) (RawValue - ZeroOffset) × ScaleFactor其中ScaleFactor通过标准砝码200g、500g、1000g三点标定获得。实测重复性误差±5g满足宠物饲料余量监测精度要求。2.2.4 RC522 RFID读卡模块RC522通过SPI接口与STM32通信NSSPA4, SCKPA5, MISOPA6, MOSIPA7。模块供电采用独立3.3V电源轨并在天线匹配网络中加入100pF微调电容优化射频场强度。读卡距离实测达4cm标准IC卡满足宠物佩戴项圈式RFID标签的识别需求。固件中实现防重读机制每次成功识别后启动1.5秒软件锁定期避免同一卡片多次触发食盘开启。2.3 执行机构驱动电路2.3.1 散热风扇控制5V直流风扇通过SRD-05VDC-SL-C继电器驱动。继电器线圈由STM32的PC13引脚经ULN2003达林顿阵列驱动该设计优势在于ULN2003提供反向电动势吸收二极管保护MCU GPIO继电器触点额定电流10A远超风扇工作电流0.2A确保长寿命触点采用常开型NO默认断开状态符合安全失效原则。温度控制逻辑为滞环比较当DHT11读数≥32℃时闭合继电器≤28℃时断开避免频繁启停导致继电器触点烧蚀。2.3.2 食盘步进电机控制28BYJ-48四相五线步进电机采用ULN2003驱动STM32通过PB0-PB3输出四相脉冲序列。电机减速比1:64输出轴扭矩0.05N·m足以驱动轻质塑料食盘盖板。控制策略为开启流程正转2048步360°→ 停留2秒供宠物进入→ 正转512步90°定位关闭流程反转2560步450°复位至初始位置所有运动均以1ms脉冲间隔执行确保运行平稳无失步。机械结构上电机轴通过齿轮组与食盘盖板联动盖板行程限位由微动开关SW1检测避免电机堵转损坏。2.3.3 报警与显示模块有源蜂鸣器型号HY12050由PC14引脚直接驱动高电平触发。OLED显示屏采用0.96英寸SSD1306控制器SPI接口DCPA8, RSTPA9, CSPA10。显示内容按优先级轮询刷新第一页温湿度DHT11、烟雾值MQ2、余粮重量HX711第二页WiFi连接状态、MQTT在线标志、当前模式自动/手动第三页RFID卡号十六进制、最近一次操作时间戳。所有页面切换通过单按键KEY1实现长按3秒进入系统设置菜单温度阈值、报警开关等。3. 软件系统设计软件架构基于裸机多任务调度框架摒弃RTOS以降低资源占用与学习门槛。系统初始化后进入主循环通过SysTick中断驱动毫秒级时间片轮转各功能模块以状态机形式实现确保响应确定性与内存占用可控。3.1 核心任务调度机制主循环采用时间片轮询方式各模块执行周期如下模块名称执行周期触发条件关键操作DHT11采集2000msSysTick计数到达启动单次测量读取温湿度值MQ2采样500msSysTick计数到达ADC采样滑动平均滤波HX711读取1000msSysTick计数到达SPI读取原始值应用标定公式OLED刷新100msSysTick计数到达刷新当前页面显示内容WiFi状态检查3000msSysTick计数到达查询ESP8266连接状态MQTT心跳包60000msSysTick计数到达发送PINGREQ保持连接活跃RFID轮询200msSysTick计数到达检测卡片接近触发识别流程该调度策略确保高优先级任务如RFID识别获得足够响应带宽而低频任务如DHT11采集避免过度占用CPU资源。所有任务间通过全局状态变量与事件标志位通信无共享内存竞争问题。3.2 关键驱动实现3.2.1 DHT11驱动代码片段// dht11.c #define DHT11_PORT GPIOB #define DHT11_PIN GPIO_Pin_10 void DHT11_Start(void) { GPIO_InitTypeDef GPIO_InitStructure; // 配置为推挽输出拉低总线800us GPIO_InitStructure.GPIO_Pin DHT11_PIN; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(DHT11_PORT, GPIO_InitStructure); GPIO_ResetBits(DHT11_PORT, DHT11_PIN); Delay_us(800); // 释放总线上拉电阻拉高 GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING; GPIO_Init(DHT11_PORT, GPIO_InitStructure); Delay_us(40); } uint8_t DHT11_Read_Byte(void) { uint8_t i, j, dat 0; for (i 0; i 8; i) { while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) Bit_RESET); // 等待50us低电平 Delay_us(30); // 采样点 if(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) Bit_SET) dat | (1 (7-i)); while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) Bit_SET); // 等待80us高电平 } return dat; }3.2.2 MQTT消息封装逻辑所有上行数据统一采用JSON格式字段名严格遵循阿里云IoT物模型定义{ id: 12345, version: 1.0, params: { temperature: 26.5, humidity: 45, smoke_value: 1280, food_weight: 325, fan_status: 1, buzzer_status: 0 } }消息发布前执行完整性校验计算JSON字符串长度确保不超过ESP8266单次AT指令最大长度1024字节对特殊字符如引号、反斜杠进行转义处理添加时间戳字段用于云端数据排序。3.3 阿里云IoT平台对接设备接入采用一机一密认证方式出厂前预置ProductKey、DeviceName、DeviceSecret至STM32 Flash指定扇区。ESP8266初始化流程如下ATCWMODE1设置为Station模式ATCWJAPSSID,PASSWORD连接家庭Wi-FiATCIPSSL1启用SSL加密ATMQTTUSERCFG0,1,productKey|deviceName,deviceSecret,0,0,0配置MQTT参数ATMQTTCONN0,iot-as-mqtt.cn-shanghai.aliyuncs.com,1883,1建立TLS连接订阅主题为/sys/{productKey}/{deviceName}/thing/service/property/set用于接收云端下发的控制指令如远程开启风扇。所有指令解析在STM32端完成确保本地控制逻辑不依赖网络连通性。4. BOM清单与器件选型依据本系统BOM共32个物料全部选用国产主流品牌或国际通用型号确保供应链稳定性与采购便利性。关键器件选型依据如下表所示序号器件名称型号/规格选型依据数量1主控MCUSTM32F103RCT6Cortex-M3内核72MHz主频256KB Flash满足多传感器驱动MQTT协议栈需求12Wi-Fi模组ESP-01S内置ESP8266EX支持AT指令集与TLS加密模块尺寸小14.3×20.7mm13温湿度传感器DHT11成本低2数字输出免校准满足寄养环境±2℃/±5%RH精度要求14烟雾传感器MQ2对液化气、丙烷、氢气敏感模拟输出便于ADC直接采集成本1.515称重传感器HX7115kg半桥24位ADC分辨率内置稳压源与时钟简化外围电路16RFID读卡模块MFRC522支持ISO14443A协议SPI接口读卡距离4cm模块化设计降低调试难度17OLED显示屏SSD1306 0.96SPI接口128×64分辨率内置GRAM无需外部显存18步进电机28BYJ-485V供电四相五线减速比1:64静态扭矩0.05N·m满足轻载盖板驱动需求19继电器SRD-05VDC-SL-C5V线圈电压10A触点容量机械寿命10万次符合安全设计规范110电源稳压器AMS1117-3.3V输出电流1A压差1.1V满足全系统功耗需求实测峰值电流380mA1其余器件电阻、电容、连接器等均选用Yageo、Murata、Hirose等一线品牌通用料号PCB设计中已预留0402与0603两种封装焊盘兼容不同批次物料。5. 上位机软件与系统联调Windows上位机基于Qt 5.15.2开发采用C语言编写编译为64位可执行文件。软件架构分为设备管理、数据可视化、远程控制三大模块设备管理自动扫描串口通过发送ATGMR指令识别ESP8266模组建立MQTT连接后显示设备在线状态、信号强度RSSI、IP地址数据可视化以折线图形式实时绘制温湿度、烟雾、余粮四条曲线时间跨度可选1小时/24小时/7天支持数据导出为CSV格式远程控制提供图形化按钮控制风扇启停、食盘开关、蜂鸣器测试所有指令经MQTT Topic/sys/{pk}/{dn}/thing/service/property/set下发。联调关键步骤确认STM32固件中productKey、deviceName、deviceSecret与阿里云控制台创建的设备信息完全一致使用串口助手发送ATMQTTPUB0,/sys/{pk}/{dn}/thing/event/property/post,{...},0,0验证上行通道在阿里云IoT控制台设备详情页手动下发JSON指令验证下行通道运行上位机观察设备列表是否自动上线数据曲线是否随传感器变化实时更新。实测数据显示从传感器数据变化到上位机图表刷新延迟1.2秒满足寄养环境实时监控需求。所有通信过程均启用TLS 1.2加密阿里云IoT平台自动签发X.509证书无需开发者手动管理密钥。6. 系统可靠性设计实践本系统在硬件与软件层面实施多重可靠性保障措施确保7×24小时无人值守运行电源失效保护在5V输入端并联1000μF电解电容当电源适配器意外断开时可维持系统运行至少800ms足够完成当前数据采集与缓存写入看门狗机制启用STM32独立看门狗IWDG超时周期设置为32秒主循环中每25秒喂狗一次任何任务死锁均会在32秒内触发硬件复位Flash数据保护设备参数温度阈值、WiFi密码等存储于STM32 Flash最后1KB扇区写入前先擦除整扇区写入后执行CRC32校验校验失败则恢复出厂默认值传感器故障诊断DHT11连续3次读取失败则标记为离线OLED显示TEMP ERRMQ2 ADC值持续4000对应满量程则判定为传感器短路触发本地蜂鸣器报警Wi-Fi断线自恢复ESP8266断线后STM32每30秒尝试重新执行ATCWJAP指令连续5次失败后进入低功耗休眠模式仅RTC运行等待用户手动复位。这些设计并非理论假设而是在实际寄养箱体中连续运行180天的实测经验总结。某次测试中因宠物抓挠导致DHT11排线松动系统准确识别传感器离线状态并在OLED与上位机同步告警管理员及时更换排线未造成环境参数失控。这印证了可靠性设计在真实场景中的价值——它不追求绝对无故障而是确保故障可感知、可定位、可恢复。