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的芯片,不然就尴尬了。

重要结论: 选MCU时,Flash容量 = 固件大小 × 2 + 额外余量(建议至少留256KB给参数存储和日志)。

2.1.2 RAM大小:别让内存成为瓶颈

OTA下载过程中,数据是一包一包收的。每收到一包,MCU要解包、校验CRC、然后写入Flash。这个过程需要缓冲区。如果RAM太小,缓冲区就小,下载速度就会很慢,甚至容易丢包。

我建议RAM至少64KB起步。如果MCU还要跑Wi-Fi协议栈或者蓝牙协议栈,那128KB会更稳妥。你想想看,一个蓝牙协议栈可能就要吃掉30-40KB RAM,再加上OTA缓冲区,64KB真的捉襟见肘。

我的小技巧: 选型时,可以查一下MCU的“最大OTA包大小”参数。有些MCU限制单包最大1KB,有些可以到4KB。包越大,传输效率越高,但需要的RAM也越大。平衡点通常在2KB-4KB之间。

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。

另外,天线设计也很重要。我见过不少项目,模组本身不错,但天线匹配没做好,导致信号差。所以,选型时最好选那些有“天线参考设计”的模组,照着做基本不会出大问题。

避坑指南: 我曾经在一个户外照明项目里,用了内置PCB天线的模组。结果安装到金属灯杆上后,信号衰减了10dB以上,OTA基本跑不动。后来换了外置天线接口的模组,才解决问题。所以,如果设备外壳是金属的,一定要用外置天线。

2.2.3 功耗:照明设备也要省电

你可能觉得,照明设备都接市电了,还考虑什么功耗?其实不然。很多智能照明设备有“待机模式”,比如关灯后,Wi-Fi模组还在工作,等待云端指令。如果待机功耗太高,一年下来电费也不少。而且,有些照明设备是电池供电的,比如应急灯、户外太阳能灯,功耗就更关键了。

我建议选模组时,关注“待机功耗”和“OTA下载功耗”。待机功耗最好低于 100μA,OTA下载功耗最好低于 300mA。乐鑫的ESP32-C3在待机模式下能做到 5μA 左右,非常优秀。

2.3 MCU + 模组的组合方式

选好了MCU和模组,接下来要考虑它们怎么组合。常见的有三种方式:

  1. MCU + 独立Wi-Fi模组: 比如STM32 + ESP8266。这种方式灵活,但开发复杂,需要自己处理AT指令或者SDK。
  2. 集成式SoC: 比如ESP32-C3,MCU和Wi-Fi/蓝牙集成在一个芯片里。这种方式开发简单,成本低,是目前的主流。
  3. 模组内置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这些协议在照明设备上的应用。到时候再细聊。