1. 项目概述这个宿舍安防控制系统项目源于我在大学期间的一次亲身经历。记得大三那年隔壁宿舍因为充电器短路引发小火幸好发现及时才没酿成大祸。这件事让我意识到学生宿舍这种人员密集场所确实需要更智能的安全防护方案。传统宿舍安防主要依赖宿管巡查和简单的烟雾报警器存在响应滞后、功能单一等问题。而市面上成熟的商业安防系统又价格昂贵不适合学生宿舍使用。于是我决定利用STM32开发一套低成本、高可靠性的智能安防系统。1.1 核心功能设计系统采用模块化设计思路主要实现以下功能环境监测通过SHT30传感器实时采集温湿度数据精度可达±0.3℃温度和±2%RH湿度。我在实际测试中发现将采样间隔设置为5秒既能保证数据实时性又不会给MCU带来太大负担。火灾预警组合使用MQ2烟雾传感器和火焰传感器。这里有个实用技巧MQ2需要预热3-5分钟才能稳定工作建议在系统初始化时加入预热等待。电气监控采用HLW8032电能计量芯片可测量电压0-250V、电流0-20A和功率精度等级1.0级。特别注意要做好隔离保护我在PCB上预留了光耦隔离位置。双重报警本地采用有源蜂鸣器驱动电流约30mA远程通过ESP8266推送报警信息。实测发现蜂鸣器最好加个三极管驱动直接接IO口可能电流不足。人机交互1.44寸LCD屏显示实时数据通过手机APP可远程查看状态。UI设计时要注意信息密度我把最关键的数据烟雾、温度放在首屏显眼位置。2. 硬件设计与选型2.1 主控芯片选择对比STM32F103C8T6和RCT6两款芯片后最终选择STM32F103RCT6主要考虑更大的Flash空间256KB vs 64KB便于后期功能扩展更多GPIO51个 vs 37个方便连接各类传感器内置硬件浮点运算单元处理传感器数据更高效注意RCT6的封装是LQFP64焊接时需要特别注意引脚对齐。我第一次焊接时就因为引脚弯曲导致通信异常。2.2 传感器选型心得温湿度传感器对比DHT11和SHT30后选择后者。虽然贵3倍但精度更高DHT11湿度误差±5%、响应更快SHT30仅2秒。实际安装时要远离热源我的测试数据显示靠近电源处温度会偏高1-2℃。烟雾传感器MQ2是最经济的选择但要注意需要定期校准我每月用酒精测试一次对酒精、香水等也会敏感容易误报最佳工作电压5V3.3V时灵敏度下降30%电能计量模块选用HLW8032而非ACS712因为非接触式测量更安全自带电压/电流/功率三参数测量支持UART输出方便与STM32通信2.3 电路设计要点电源设计主电源采用AMS1117-3.3V给MCU供电传感器单独用LM7805稳压避免相互干扰总电流需求约500mA建议选用1A以上电源适配器抗干扰措施所有数字信号线加100Ω电阻防振铃模拟信号走线远离高频线路关键信号用地线包围PCB布局技巧火焰传感器远离其他发热元件ESP8266天线区域不要铺铜预留ISP下载接口方便固件更新3. 软件实现细节3.1 系统架构设计采用前后台系统架构主循环后台 传感器数据采集 报警逻辑判断 数据显示更新 中断前台 定时器中断1ms系统时钟 USART中断WiFi通信 EXTI中断紧急报警3.2 关键算法实现数据滤波算法// 滑动平均滤波示例 #define FILTER_LEN 5 float temp_filter_buf[FILTER_LEN]; float filter_temp(float new_val) { static uint8_t index 0; float sum 0; temp_filter_buf[index] new_val; if(index FILTER_LEN) index 0; for(int i0; iFILTER_LEN; i) { sum temp_filter_buf[i]; } return sum/FILTER_LEN; }报警逻辑判断温度连续3次超过阈值可设30℃烟雾瞬时值超过阈值200ppm电流超过额定值10A持续10秒3.3 WiFi通信协议自定义轻量级协议[HEAD][LEN][CMD][DATA][CRC] HEAD: 0xAA 0x55 LEN: 数据长度 CMD: 指令类型 DATA: 有效载荷 CRC: 校验和实测发现每30秒发送一次心跳包能保持稳定连接。数据包长度控制在128字节以内时ESP8266的传输成功率可达99%以上。4. 调试与优化经验4.1 常见问题排查ESP8266频繁断连检查电源是否稳定示波器观察5V纹波应50mV尝试降低波特率从115200降到57600添加ATRST指令定时复位模块传感器数据异常用逻辑分析仪抓取I2C波形检查上拉电阻通常4.7KΩ注意I2C器件地址设置SHT30默认0x44LCD显示花屏重新初始化LCD驱动IC检查背光电压通常3.3V降低SPI时钟频率尝试从8MHz降到4MHz4.2 性能优化技巧低功耗设计空闲时关闭传感器电源省电30%使用STM32的STOP模式电流可降至1mA动态调整采集频率夜间降低采样率代码优化关键函数添加__inline修饰使用寄存器操作替代库函数如GPIO写操作快5倍浮点运算转换为定点数运算稳定性提升添加看门狗IWDG超时设2s重要变量添加volatile修饰关键数据区做CRC校验5. 项目扩展方向在实际部署过程中我发现几个值得改进的方向多节点组网通过LoRa实现整层楼多个宿舍的组网监控单个网关统一管理。测试发现SX1278在宿舍环境能稳定传输200米。智能联动增加继电器模块在检测到火灾时可自动切断电源。注意要选用16A以上容量的继电器并做好灭弧处理。数据分析在服务器端存储历史数据用Python分析异常模式。我的测试数据显示电器故障前通常会有电流波动增大的特征。外壳设计用3D打印制作专用外壳注意留出传感器开口和散热孔。ABS材料比PLA更耐高温适合这种应用场景。