第二章 嵌入式硬件平台选型:MCU选型、传感器选型、通信模块选型
做消防报警产品,硬件选型是第一步,也是最关键的一步。我见过不少项目,前期选型拍脑袋,后期调试跑断腿。说白了,选型就是在性能、成本、功耗、可靠性之间找平衡。这一章,我把自己这些年踩过的坑和总结的经验,掰开了揉碎了讲给你听。
2.1 MCU选型:核心大脑怎么挑?
MCU是整个系统的核心。消防报警产品对MCU的要求,跟消费电子完全不一样。你想想看,一个烟感探测器要在墙上挂十年八年,中间还不能出岔子,这要求可不低。
2.1.1 性能指标怎么看?
我个人习惯,先看主频和位宽。消防报警里,主频不用太高,一般32位MCU,主频在48MHz到120MHz之间就够用了。为什么?因为消防产品的核心是稳定,不是跑分。
举个例子,我做过一个项目,用的是Cortex-M0内核的MCU,主频48MHz。当时有人质疑说这性能够不够?我说你算算,一个烟雾传感器每秒采样一次,一次数据处理也就几百条指令,48MHz绰绰有余。后来产品量产了,运行得很稳。
选型时重点关注这几个参数:
- Flash容量:建议128KB起步。别省这点钱,后期固件升级、算法优化都要空间。我吃过亏,选了64KB的,结果算法一优化,空间不够了,被迫换芯片,重新画板子,那叫一个折腾。
- RAM大小:至少16KB。消防报警里要跑协议栈、存传感器数据、做滤波算法,RAM小了根本转不开。
- ADC精度:12位起步。烟雾传感器的模拟信号很微弱,ADC精度不够,数据就失真了。
重要提醒:MCU的ADC参考电压一定要稳定。我建议用内部参考电压,或者外接高精度基准源。别图省事直接用VDD,电源波动会直接影响采样精度。
2.1.2 外设接口怎么选?
消防报警系统里,常用的外设接口就那几个:
| 接口类型 | 用途 | 选型建议 |
|---|---|---|
| I2C | 连接传感器、EEPROM | 至少1路,速率400kHz以上 |
| SPI | 连接显示屏、无线模块 | 至少1路,支持DMA传输 |
| UART | 调试、通信 | 至少2路,一路调试,一路通信 |
| GPIO | 按键、LED、报警输出 | 至少16个,要支持外部中断 |
嗯,这里要注意,选MCU时别只看接口数量,还要看接口的复用情况。有些MCU的接口是复用的,用了I2C就不能用SPI,这种坑我踩过不止一次。
2.1.3 功耗和可靠性
消防产品很多是电池供电的,功耗是硬指标。我建议选支持多种低功耗模式的MCU:
- 运行模式:正常工作时,电流控制在10mA以内
- 休眠模式:待机时,电流要低于10μA
- 深度休眠:长期不工作时,电流低于1μA
我的经验:选MCU时,一定要看它的唤醒时间。有些MCU深度休眠后,唤醒要几百微秒,这在消防报警里是致命的。你想想看,火灾发生了,传感器检测到烟雾,结果MCU还在那慢慢悠悠地唤醒,这不是要命吗?我一般要求唤醒时间在10μs以内。
2.2 传感器选型:感知世界的触角
传感器是消防报警系统的眼睛和鼻子。选错了传感器,后面的算法再牛也白搭。
2.2.1 烟雾传感器
目前主流的有两种:离子式和光电式。我个人更推荐光电式,原因有三:
- 误报率低:离子式对烹饪烟雾太敏感,容易误报。光电式相对稳定。
- 寿命长:光电式传感器没有放射源,不用担心辐射衰减问题。
- 环保:离子式含有微量放射物质,废弃处理麻烦。
选型时重点关注这几个参数:
- 灵敏度:一般要求在0.1dB/m到0.2dB/m之间。太灵敏容易误报,太迟钝又怕漏报。
- 响应时间:从检测到烟雾到输出信号,最好在3秒以内。
- 工作温度:-10℃到+60℃。别小看这个,北方冬天楼道里零下十几度,传感器要是罢工了,后果不堪设想。
避坑指南:我曾经选过一款便宜的烟雾传感器,实验室测试一切正常。结果到了北方项目现场,冬天全趴窝了。后来一查,工作温度下限是0℃。从那以后,我选传感器必看温度范围,而且一定要留余量。
2.2.2 温度传感器
温度传感器在消防报警里也很重要。我常用的有两种:
| 类型 | 精度 | 接口 | 适用场景 |
|---|---|---|---|
| 热敏电阻 | ±1℃ | 模拟 | 成本敏感型产品 |
| 数字温度传感器 | ±0.5℃ | I2C/1-Wire | 高精度需求 |
我个人习惯用数字温度传感器,比如DS18B20或者SHT30。虽然贵几毛钱,但省去了校准的麻烦,而且精度有保障。
2.2.3 气体传感器
有些消防报警系统还需要检测一氧化碳、可燃气体等。选气体传感器时,要注意:
- 选择性:能不能区分目标气体和干扰气体?比如CO传感器,不能对酒精、水蒸气也敏感。
- 寿命:电化学传感器一般寿命2-3年,半导体传感器5年以上。
- 预热时间:有些传感器上电后需要预热几分钟才能稳定工作。这在消防报警里是个大问题,因为系统要随时待命。
2.3 通信模块选型:信息传递的桥梁
消防报警系统不是孤立的,它需要把报警信息传出去。通信模块的选型,直接决定了系统的可靠性和实时性。
2.3.1 有线通信
传统的消防报警系统多用有线通信,比如RS485、CAN总线。优点是稳定可靠,缺点是需要布线,施工成本高。
选型建议:
- RS485:适合距离在1公里以内,节点数不超过32个的场景。我建议用带隔离的RS485芯片,比如MAX14850,能有效防止雷击和地环路干扰。
- CAN总线:适合节点多、实时性要求高的场景。CAN总线的仲裁机制很优秀,不会出现数据碰撞。我做过一个项目,用了CAN总线,200多个节点,通信非常稳定。
2.3.2 无线通信
现在越来越多的消防报警产品开始用无线通信。常用的有:
| 通信方式 | 频率 | 距离 | 功耗 | 适用场景 |
|---|---|---|---|---|
| LoRa | 433/868/915MHz | 1-10公里 | 极低 | 大面积覆盖 |
| Zigbee | 2.4GHz | 100米 | 低 | 室内组网 |
| NB-IoT | 运营商频段 | 不限 | 低 | 广域物联网 |
| Wi-Fi | 2.4/5GHz | 50米 | 高 | 家庭场景 |
我个人最推荐LoRa。为什么?因为消防报警对功耗和距离都有要求,LoRa在这两方面做得最好。我做过一个项目,用LoRa模块,发射功率20dBm,在开阔地带能传5公里,而且一节电池能用两年。
我的经验:选无线模块时,别只看理论距离。实际应用中,墙体、金属、电磁干扰都会影响通信距离。我一般会留50%的余量,比如需要传100米,就选标称能传200米的模块。
2.3.3 通信协议的选择
硬件选好了,协议也得跟上。消防报警常用的协议有:
- Modbus:简单可靠,适合有线通信。我建议用RTU模式,效率高。
- MQTT:适合物联网场景,支持QoS,消息不丢失。
- 自定义协议:如果对实时性要求极高,可以自己定义协议。但要注意,自定义协议要做好容错和重传机制。
嗯,这里要提醒一下,不管用什么协议,一定要加CRC校验。消防报警的数据不能出错,一个误码可能就导致误报或者漏报。
2.4 选型总结
说了这么多,我总结一下选型的核心思路:
- 先定需求,再选芯片:别上来就看芯片参数,先想清楚你的产品要做什么,工作环境是什么样的。
- 留足余量:Flash、RAM、GPIO,都留30%以上的余量。后期改需求、加功能,你就知道留余量有多重要了。
- 考虑供应链:选型时看看芯片的供货情况。别选那种交期要半年的芯片,项目等不起。
- 重视生态:选MCU时,看看它的开发工具、例程、社区支持怎么样。一个好的生态能帮你省下大量开发时间。
最后说一句:选型没有标准答案,只有最适合的方案。我见过用8位MCU做得很好的消防产品,也见过用高端ARM芯片做砸了的。关键是要理解你的产品需求,然后做出合理的选择。
下一章,我会讲硬件电路设计,包括电源管理、信号调理、接口保护等内容。到时候我会分享一些具体的电路图和设计技巧,敬请期待。