1. 项目概述与硬件选型:消防报警主控板嵌入式方案

大家好,我是老李。做嵌入式这行十几年了,从最早的51单片机一路折腾到现在的ARM Cortex-M系列。今天咱们要聊的这个消防报警主控板项目,说实话,是我个人觉得非常适合入门到进阶的一个实战案例。为什么?因为它麻雀虽小,五脏俱全——传感器采集、数据处理、通信协议、电源管理、可靠性设计,全都有。

好,咱们直接进入正题。第一章,先把整个项目的骨架搭起来。

1.1 消防报警系统架构长什么样?

先看整体。一个典型的消防报警系统,说白了就是「感知-判断-执行-上报」这四个环节。

  • 感知层:烟雾传感器、温度传感器、气体传感器。它们负责把物理世界的烟雾浓度、温度变化变成电信号。
  • 控制层:主控芯片(咱们用STM32F103)。它负责读取传感器数据,做算法判断,决定要不要报警。
  • 执行层:蜂鸣器、LED指示灯、继电器(控制排烟阀、喷淋等)。
  • 通信层:RS485总线、CAN总线或者无线模块,把报警信息传到消防控制中心。

我当年做第一个消防项目时,犯过一个低级错误——把传感器直接挂在主控芯片的IO口上,没做任何隔离。结果现场一有雷雨天气,芯片就烧了。嗯,这里要提醒大家:工业级产品,隔离和防护是命根子。

核心架构要点:

  • 传感器信号必须经过调理电路再进ADC
  • 主控与执行器件之间要有光耦或继电器隔离
  • 通信接口需要TVS管和共模扼流圈保护

1.2 主控芯片选型:为什么是STM32F103?

你可能会问:现在STM32F4、F7甚至H7都出来了,为什么还选这个老掉牙的F103?

原因有三:

  1. 成本控制:消防报警主控板对成本敏感。F103批量价十几块钱,够用。
  2. 生态成熟:库函数、例程、社区资源,要啥有啥。你遇到的大部分坑,网上都有人踩过了。
  3. 性能够用:72MHz主频,64KB Flash,20KB RAM。跑个FreeRTOS、处理几路传感器、做点滤波算法,绰绰有余。

我个人习惯用STM32F103C8T6这个型号。LQFP48封装,手工焊接也方便。我记得有一次客户催得急,我直接用万能板飞线焊了一片,居然也跑起来了——当然,量产可不能这么干。

参数 STM32F103C8T6 备注
内核 ARM Cortex-M3 32位,带硬件除法
主频 72MHz 够用,别超频
Flash 64KB 代码+常量,注意别塞满
SRAM 20KB 堆栈+全局变量,够用
ADC 2个12位,10通道 接烟雾和温度传感器
通信接口 USART×3, SPI×2, I2C×2 RS485用USART1

选型小技巧:别只看主频。先算算你的传感器采样率、通信波特率、任务切换频率。F103的ADC最快1μs转换一次,够你采100路传感器了。

1.3 传感器选型:烟雾和温度怎么挑?

消防报警最核心的两个传感器:烟雾传感器和温度传感器。咱们一个一个说。

烟雾传感器

市面上主流的是离子式和光电式。离子式对明火敏感,光电式对阴燃(比如电线短路冒烟)敏感。消防标准要求两者兼顾,但咱们这个项目用光电式就够了——便宜、无毒、好调试。

我推荐MQ-2或者NIS-09C。MQ-2是半导体式,输出模拟电压,直接进ADC。NIS-09C是光学迷宫式,需要配合比较器电路。

这里有个坑:MQ-2预热时间很长,上电后前30秒输出不稳定。我曾经在项目里没做延时处理,结果一上电就误报警,被客户骂了一顿。解决方案很简单——上电后等1分钟再开始采样。

温度传感器

温度传感器我选DS18B20。为什么?

  • 数字输出,一线总线,省IO口
  • 精度±0.5℃,范围-55℃~+125℃
  • 每个芯片有唯一ID,可以挂多个在一条总线上

当然,你也可以用NTC热敏电阻+分压电路进ADC。成本更低,但需要自己标定。我个人建议新手先用DS18B20,省心。

注意:DS18B20的时序要求严格。初始化、读位、写位的时间窗口都是微秒级的。如果你用软件模拟时序,记得关中断。我曾经因为中断嵌套导致时序错乱,读出来的温度是-127℃——嗯,那画面太美我不敢看。

1.4 电源方案设计:稳定是第一位的

消防报警主控板通常用24V供电(工业标准)。但芯片和传感器需要3.3V和5V。所以电源方案的核心就是:24V→5V→3.3V

我常用的方案:

  • 第一级:24V转5V——用LM2596或者MP1584,开关电源,效率高。注意输入加防反接二极管和保险丝。
  • 第二级:5V转3.3V——用AMS1117-3.3,LDO,纹波小。给STM32和传感器供电。

你想想看,如果直接用LDO从24V降到3.3V,压差20多伏,电流100mA,功耗就是2W多——芯片早烫得能煎鸡蛋了。所以必须用两级降压。

另外,别忘了加电源监控芯片,比如MAX809。当电压低于阈值时,它会给STM32的NRST引脚一个低电平,防止芯片在欠压状态下跑飞。我见过太多因为电源抖动导致程序跑飞的案例了。

电源设计检查清单:

  • 输入防反接(肖特基二极管或PMOS管)
  • 保险丝(自恢复保险丝,500mA够用)
  • TVS管(SMBJ24A,吸收浪涌)
  • 滤波电容(电解+瓷片,每个电源引脚都要有)
  • 电源指示灯(绿色LED+1k电阻,调试时很有用)

好了,第一章的内容就到这里。咱们把架构、芯片、传感器、电源方案都捋了一遍。下一章,我会带大家画原理图,把每个模块的电路细节敲定。到时候咱们再细聊。

记住一句话:硬件设计,七分选型,三分画板。选型选对了,后面就顺了。