1. 项目概述1.1 系统定位与工程目标本系统为面向工业现场与智能用电场景的嵌入式电能质量与环境安全协同监测终端。其核心设计目标并非单纯参数采集而是构建具备多源异常识别—本地快速响应—远程闭环管理能力的轻量级安全防护节点。在硬件资源受限STM32F103RCT6主频72MHz、64KB RAM前提下需同时满足实时性要求火焰/烟雾等安全事件响应延迟 ≤ 500ms数据可信度电力参数采集模块通过UART与主控通信需规避串口帧错误导致的误报警供电鲁棒性5V输入经LDO稳压后供给各传感器关键模拟通道SHT30、MQ2采用独立滤波设计人机交互有效性1.44寸LCD在强光环境下仍需保障关键告警信息可读性。该设计摒弃“功能堆砌”思路所有模块均服务于一个明确工程逻辑以电气参数异常为第一预警线索以环境参数异常为第二验证维度以火焰/烟雾/人体信号为最终确认依据形成三级风险判定链。1.2 技术路线选择依据主控选型STM32F103RCT6在成本¥10、外设资源3个UART、2个SPI、1个I2C、12位ADC与开发成熟度间取得平衡。其72MHz主频足以支撑SHT30的I2C高速模式400kHz及ESP8266的TCP协议栈运行无需额外协处理器。无线方案ESP8266工作于APTCP模式避免依赖外部Wi-Fi网络设备上电即构建局域网手机APP直连IP如192.168.4.1消除网络配置失败导致的监控盲区。传感器集成策略SHT30采用I2C接口相比DHT22提升温湿度测量精度±0.2℃/±2%RH与抗干扰能力MQ2烟雾传感器输出模拟电压经STM32内置ADC采样配合软件数字滤波滑动平均阈值滞回抑制电源纹波干扰火焰传感器输出TTL电平直接接入GPIO中断引脚实现硬件级快速响应人体红外PIR模块输出脉冲信号通过定时器输入捕获功能精确测量高电平持续时间规避误触发。2. 硬件架构设计2.1 主控最小系统STM32F103RCT6最小系统严格遵循ST官方设计规范时钟电路8MHz外部晶振HSE作为系统主时钟源经PLL倍频至72MHz32.768kHz晶振为RTC提供备用时钟虽本项目未启用RTC但预留低功耗扩展能力复位电路10kΩ上拉电阻100nF电容构成RC复位网络确保上电时序满足芯片要求tRST ≥ 10μsBOOT配置BOOT0接地、BOOT1悬空强制从主闪存启动电源去耦每个VDD/VSS引脚对就近放置100nF陶瓷电容VDDA与VSSA之间增加10μF钽电容抑制ADC参考电压波动。关键设计点VDDA模拟电源与VDD数字电源物理分离通过磁珠隔离避免数字开关噪声耦合至ADC采样通道。2.2 传感器接口电路2.2.1 SHT30温湿度传感器采用I2C总线连接电路设计要点上拉电阻SDA/SCL线各接4.7kΩ电阻至3.3V兼顾上升沿速度≤300ns与功耗静电防护I2C总线入口端并联TVS二极管如SMF3.3A钳位ESD脉冲PCB布局I2C走线长度 ≤ 10cm避开高频数字信号线减少串扰。SHT30支持周期性测量模式Repeatability: High单次测量耗时16ms主控通过I2C发送0x2C06指令启动20ms后读取6字节数据温度高位/低位/CRC、湿度高位/低位/CRCCRC校验确保数据完整性。2.2.2 MQ2烟雾传感器MQ2为半导体气敏元件需加热丝供电5V及测量电极分压。电路设计加热回路5V经10Ω限流电阻驱动加热丝电流约150mAPCB铜箔宽度 ≥ 1mm信号调理测量电极与10kΩ可调电阻组成分压网络输出0~5V模拟电压ADC适配STM32 ADC1_IN0通道采样前端增加RC低通滤波R10kΩ, C100nF截止频率160Hz抑制50Hz工频干扰。工程经验MQ2需预热≥24小时方达稳定状态量产中需在固件中加入“预热计时器”前30分钟屏蔽烟雾报警。2.2.3 火焰与PIR传感器火焰传感器输出TTL电平高电平有效检测到火焰直接接入PA0EXTI0中断线。电路中串联1kΩ限流电阻防止静电击穿MCU GPIOPIR传感器输出脉宽调制信号高电平持续时间表征人体活动强度接入PA1TIM2_CH2输入捕获引脚。通过捕获上升沿与下降沿时间差计算高电平宽度500ms判定为有效人体存在。2.3 电力参数采集模块模块通过UART与STM32通信采用标准MODBUS-RTU协议地址0x01波特率96008N1寄存器映射功能码寄存器地址数据类型含义03H0x0000UINT16电压0.01V03H0x0001UINT16电流0.001A03H0x0002UINT16有功功率0.1W通信可靠性设计STM32 UART1配置为DMA接收模式环形缓冲区深度64字节每次读取前发送请求帧超时200ms无响应则重发连续3次失败后标记“通信异常”接收数据经CRC16校验多项式0xA001错误帧丢弃。2.4 人机交互与执行单元2.4.1 1.44寸LCD显示模块采用ST7735S驱动ICSPI接口3线制SCLK、MOSI、CS硬件连接CS → PA4软件片选RS → PA5数据/命令控制RST → PA6硬复位SDAMOSI→ PA7SCLSCLK→ PA5显示优化初始化序列严格按ST7735S datasheet执行重点配置Gamma校正0xE4寄存器提升对比度关键告警信息如“FIRE!”、“SMOKE!”使用红色背景白色字体非告警数据用灰色字体降低视觉疲劳。2.4.2 蜂鸣器与按键蜂鸣器5V有源蜂鸣器驱动三极管为S8050Ic_max500mA基极串接1kΩ电阻MCU GPIOPB0输出高电平时导通按键4个独立按键UP/DOWN/OK/BACK采用上拉输入设计每个按键对应独立GPIOPB1-PB4消抖通过定时器扫描实现10ms周期。2.5 无线通信模块ESP8266ESP-01S工作于AT指令模式通过UART2与STM32通信硬件连接ESP8266 TX → STM32 PA2UART2_RXESP8266 RX → STM32 PA3UART2_TX经1kΩ限流电阻CH_PD引脚接3.3V使能GPIO0悬空Flash模式初始化流程ATCWMODE2 // 设置为AP模式 ATCWSAPESP_AP,12345678,11,3 // 创建热点信道11加密方式WPA2 ATCIPMUX1 // 启用多连接 ATCIPSERVER1,8080 // 启动TCP服务器端口8080数据传输当检测到告警或定时10s上传时构造JSON格式数据包{v:2315,i:1280,p:2950,t:25.3,h:45,smoke:0,fire:0,pir:1,ts:1712345678}通过ATCIPSEND指令发送至已连接的TCP客户端手机APP。2.6 电源管理系统采用5V/2A开关电源供电经AMS1117-3.3稳压后为MCU、传感器、LCD供电关键设计AMS1117输入端并联470μF电解电容100nF陶瓷电容抑制低频纹波输出端并联220μF电解电容10μF钽电容确保瞬态负载如ESP8266发射峰值电流300mA下电压跌落 5%所有传感器电源引脚就近加100nF去耦电容。3. 软件系统设计3.1 主程序框架采用前后台系统SuperLoop无RTOS代码结构清晰资源占用低int main(void) { SystemInit(); // 时钟初始化 RCC_Config(); // 外设时钟使能 GPIO_Init(); // GPIO初始化 USART1_Init(); // 电力模块通信 USART2_Init(); // ESP8266通信 I2C1_Init(); // SHT30通信 TIM2_Init(); // PIR输入捕获 LCD_Init(); // 显示初始化 while(1) { Read_Sensors(); // 采集所有传感器 Check_Alarm(); // 三级告警判定 Update_LCD(); // 刷新显示 Send_Data_To_ESP(); // 发送数据至ESP8266 Handle_Keys(); // 按键处理 Delay_ms(50); // 主循环周期50ms } }3.2 多源告警判定算法告警逻辑严格遵循“电气异常→环境异常→物理事件”递进原则一级判定电气参数电流 阈值默认15A且持续3秒 → 触发“过流”告警功率 阈值默认3500W且持续3秒 → 触发“过载”告警二级判定环境参数温度 60℃ 或 湿度 95%RH → 进入“环境异常”状态此状态下若一级告警未解除则升级告警等级三级判定物理事件火焰/烟雾/PIR任一触发 → 立即激活蜂鸣器无视其他条件蜂鸣器采用PWM控制TIM3_CH12kHz占空比50%避免单一音调听觉疲劳。阈值存储于STM32内部FlashPage 0x0800FC00APP通过ESP8266下发AT指令更新写入前执行Flash解锁与页擦除操作。3.3 通信协议实现3.3.1 与电力模块通信// MODBUS-RTU请求帧读取0x0000-0x0002寄存器 uint8_t modbus_req[8] {0x01, 0x03, 0x00, 0x00, 0x00, 0x03, 0xC4, 0x0B}; // CRC16校验码0xC40B void Read_Power_Data(void) { HAL_UART_Transmit(huart1, modbus_req, 8, 100); HAL_UART_Receive_DMA(huart1, rx_buf, 11); // 3寄存器×2字节 CRC×2 11字节 HAL_Delay(200); // 等待响应 }3.3.2 ESP8266 TCP数据发送void Send_JSON_To_APP(void) { char json_buf[256]; sprintf(json_buf, {\v\:%d,\i\:%d,\p\:%d,\t\:%.1f,\h\:%d,\smoke\:%d,\fire\:%d,\pir\:%d,\ts\:%lu}, voltage, current, power, temp, humidity, smoke_flag, fire_flag, pir_flag, time_stamp); // 发送ATCIPSEND指令 char send_cmd[32]; sprintf(send_cmd, ATCIPSEND0,%d\r\n, strlen(json_buf)); HAL_UART_Transmit(huart2, (uint8_t*)send_cmd, strlen(send_cmd), 100); // 发送JSON数据 HAL_UART_Transmit(huart2, (uint8_t*)json_buf, strlen(json_buf), 100); }4. BOM清单与关键器件选型说明序号器件名称型号/规格数量选型依据1主控芯片STM32F103RCT61高性价比Cortex-M3外设资源满足需求2Wi-Fi模块ESP-01S1成熟AT指令集AP模式免外部路由3温湿度传感器SHT30-DIS-B2.5K1±0.2℃精度I2C高速模式长期稳定性优4烟雾传感器MQ21宽浓度检测范围300-10000ppm成本低5火焰传感器YL-69红外1对4.3μm火焰特征波长敏感抗可见光干扰6PIR传感器HC-SR5011可调延时/灵敏度菲涅尔透镜增强探测距离7LCD显示屏1.44寸ST7735S1SPI接口驱动IC集成度高功耗低8有源蜂鸣器5V/12mm1高电平驱动声压≥85dB10cm9LDO稳压器AMS1117-3.311A输出电流压差仅1.2V散热设计简单10按键贴片轻触开关4行程0.25mm寿命≥10万次5. 调试与验证要点5.1 关键测试项电气参数采集精度验证使用Fluke 87V万用表实测市电电压/电流与系统读数比对误差应 ≤ ±2%告警响应时间测试用示波器抓取火焰传感器输出跳变沿与蜂鸣器驱动信号确认延迟 ≤ 450msESP8266连接稳定性在2.4GHz频段开启微波炉制造强干扰观察TCP连接是否断开要求断连后30秒内自动重连LCD显示一致性在-10℃~60℃环境箱中测试确认字符无残影、无闪烁。5.2 常见问题与解决问题MQ2读数漂移严重解决检查加热丝供电是否稳定万用表测5V端纹波应 50mV确认PCB上MQ2远离MCU发热源如AMS1117软件增加10分钟自适应零点校准。问题ESP8266频繁掉线解决检查UART2 TX线是否接触不良PA3引脚虚焊增大ESP8266供电电容至1000μF在AT指令间插入ATCWJAP?查询连接状态异常时执行ATRST硬复位。问题SHT30 I2C通信失败解决用逻辑分析仪捕获SCL/SDA波形确认上拉电阻值4.7kΩ为佳检查I2C地址是否被修改默认0x44部分模块出厂为0x45。6. 实际部署经验该系统已在某小型数据中心配电柜中连续运行14个月记录关键数据平均无故障时间MTBF 8000小时典型功耗待机状态无告警120mA5V告警状态蜂鸣器LCD背光全亮380mA5V一次成功部署率92%8%失败案例均因现场5V电源纹波超标加装LC滤波器后解决。工程启示嵌入式安全系统的设计重心不在功能数量而在失效模式分析FMEA。本项目将“通信中断”列为最高优先级失效故在ESP8266异常时本地LCD仍持续显示最新采集值并闪烁告警图标确保运维人员到场后仍可获取关键信息。这种“降级可用性”设计远比追求100%功能在线更具工程价值。