2、硬件选型:支持OTA的MCU与Wi-Fi/蓝牙模组选型要点
好,咱们直接进入正题。照明设备要做OTA升级,硬件选型是第一步,也是决定后续开发是否顺畅的关键。我见过不少项目,前期选型图便宜,结果后面OTA跑不起来,或者跑起来各种掉线、死机,最后只能换方案,成本反而更高。所以这一节,我把自己这些年踩过的坑和总结的经验,一次性讲清楚。
2.1 MCU选型:核心是“算力”和“存储”
MCU是OTA的大脑。说白了,它得有能力去接收、校验、存储新固件,还得在升级失败时能自己救回来。我个人习惯,选MCU时重点看三个指标:Flash大小、RAM大小、以及有没有硬件加密引擎。
2.1.1 Flash容量:至少留出两倍空间
为什么是两倍?因为OTA升级需要“双区备份”机制。一个区跑当前固件,另一个区用来下载新固件。升级完成后,再切换启动区。这样就算升级中途断电,设备也能回滚到旧版本,不至于变砖。
举个例子,你的固件编译出来是512KB,那MCU的Flash至少要有1MB。我建议你直接选1MB以上的,甚至2MB。为什么?因为照明设备现在功能越来越多,什么调光调色、语音控制、场景联动,固件只会越来越大。我曾经在一个项目里,固件从400KB一路涨到800KB,幸好当初选了2MB的芯片,不然就尴尬了。
2.1.2 RAM大小:别让内存成为瓶颈
OTA下载过程中,数据是一包一包收的。每收到一包,MCU要解包、校验CRC、然后写入Flash。这个过程需要缓冲区。如果RAM太小,缓冲区就小,下载速度就会很慢,甚至容易丢包。
我建议RAM至少64KB起步。如果MCU还要跑Wi-Fi协议栈或者蓝牙协议栈,那128KB会更稳妥。你想想看,一个蓝牙协议栈可能就要吃掉30-40KB RAM,再加上OTA缓冲区,64KB真的捉襟见肘。
2.1.3 硬件加密引擎:不是必须,但强烈推荐
照明设备现在也面临安全威胁。如果OTA固件不加密,黑客截获了固件包,就能逆向分析你的代码,甚至植入恶意程序。所以,我建议选支持AES、SHA等硬件加密的MCU。硬件加密比软件加密快得多,而且不占用CPU资源。
嗯,这里要注意:有些低端MCU号称支持加密,但其实是软件模拟的,跑起来慢得要命。选型时一定要看数据手册里的“Hardware Crypto Engine”字样。
2.2 Wi-Fi/蓝牙模组选型:通信稳定是第一要务
模组是OTA的“嘴巴”和“耳朵”。它负责把新固件从云端拉下来。选模组,我主要看三点:协议栈成熟度、射频性能、以及功耗。
2.2.1 协议栈成熟度:别当小白鼠
Wi-Fi和蓝牙的协议栈非常复杂。如果模组厂商的协议栈有bug,OTA过程中就可能出现断连、重连失败、数据错乱等问题。我建议优先选大厂的模组,比如乐鑫、瑞昱、赛普拉斯这些。它们的协议栈经过大量验证,稳定性有保障。
我曾经在一个项目里,贪便宜选了个小厂的模组。结果OTA下载到一半,模组自己重启了,而且重启后连不上Wi-Fi。查了三天,发现是协议栈的内存泄漏。从那以后,我再也不敢在关键项目上用新面孔的模组了。
| 模组厂商 | 常见型号 | 协议栈成熟度 | 推荐场景 |
|---|---|---|---|
| 乐鑫 (Espressif) | ESP32-C3, ESP32-S3 | 高 | Wi-Fi + BLE 照明 |
| 瑞昱 (Realtek) | RTL8720CF, RTL8721DM | 高 | 低功耗 Wi-Fi 照明 |
| 赛普拉斯 (Infineon) | CYW43439, CYW43012 | 高 | 高端智能照明 |
| 博通 (Broadcom) | BCM4343W | 中高 | 工业级照明 |
2.2.2 射频性能:信号不好,一切白搭
照明设备通常安装在墙壁、天花板或者户外。这些位置Wi-Fi信号往往不太好。如果模组的射频性能差,OTA下载速度就会很慢,甚至经常断线。我建议选模组时,关注两个参数:发射功率和接收灵敏度。
- 发射功率: 至少 +18dBm,最好 +20dBm 以上。
- 接收灵敏度: 在 11b 模式下,至少 -90dBm;在 11g 模式下,至少 -85dBm。
另外,天线设计也很重要。我见过不少项目,模组本身不错,但天线匹配没做好,导致信号差。所以,选型时最好选那些有“天线参考设计”的模组,照着做基本不会出大问题。
2.2.3 功耗:照明设备也要省电
你可能觉得,照明设备都接市电了,还考虑什么功耗?其实不然。很多智能照明设备有“待机模式”,比如关灯后,Wi-Fi模组还在工作,等待云端指令。如果待机功耗太高,一年下来电费也不少。而且,有些照明设备是电池供电的,比如应急灯、户外太阳能灯,功耗就更关键了。
我建议选模组时,关注“待机功耗”和“OTA下载功耗”。待机功耗最好低于 100μA,OTA下载功耗最好低于 300mA。乐鑫的ESP32-C3在待机模式下能做到 5μA 左右,非常优秀。
2.3 MCU + 模组的组合方式
选好了MCU和模组,接下来要考虑它们怎么组合。常见的有三种方式:
- MCU + 独立Wi-Fi模组: 比如STM32 + ESP8266。这种方式灵活,但开发复杂,需要自己处理AT指令或者SDK。
- 集成式SoC: 比如ESP32-C3,MCU和Wi-Fi/蓝牙集成在一个芯片里。这种方式开发简单,成本低,是目前的主流。
- 模组内置MCU: 比如ESP32模组,本身就有MCU,可以直接跑应用代码。这种方式适合简单照明设备,但扩展性有限。
我个人更推荐第二种,集成式SoC。因为照明设备的控制逻辑通常不复杂,SoC完全够用,而且开发效率高。如果你需要更强大的算力,比如跑语音识别或者AI算法,那可以考虑第三种,用模组内置的高性能MCU。
2.4 总结一下选型清单
好了,说了这么多,我帮你整理一个选型清单,照着这个清单去选,基本不会踩坑:
- MCU Flash ≥ 1MB(双区备份)
- MCU RAM ≥ 64KB(建议128KB)
- MCU 支持硬件AES/SHA加密
- Wi-Fi模组发射功率 ≥ +18dBm
- Wi-Fi模组接收灵敏度 ≤ -90dBm
- 模组待机功耗 ≤ 100μA
- 优先选大厂模组(乐鑫、瑞昱、赛普拉斯)
- 天线设计要匹配设备外壳材质
嗯,硬件选型这部分就讲到这里。下一节,我们会聊OTA的通信协议设计,包括HTTP、MQTT、CoAP这些协议在照明设备上的应用。到时候再细聊。