3. 通信协议选型:Wi-Fi、蓝牙、LoRa、NB-IoT、4G/5G蜂窝网络在OTA场景下的优劣对比

做OTA升级,第一件事不是选MCU,也不是选云平台。你得先想清楚:数据怎么传过去?

通信协议选错了,后面全白干。我见过太多项目,硬件都打样了,才发现Wi-Fi覆盖不到、蓝牙速度太慢、LoRa根本传不了固件包。嗯,今天咱们就把这几种主流方案掰开揉碎,看看它们在OTA场景下到底行不行。

核心观点:没有最好的协议,只有最合适的场景。OTA对带宽、功耗、时延、成本的要求,跟普通数据传输完全不同。

3.1 先看一张全景图

下面这张图,是我自己整理的一个选型框架。每次做新项目,我都会先拿它过一遍。

OTA通信协议选型全景图 OTA升级需求 Wi-Fi 蓝牙 LoRa NB-IoT 4G/5G 关键选型指标:带宽 | 功耗 | 覆盖距离 | 成本 | 实时性 | 网络依赖性 室内/家庭场景 Wi-Fi、蓝牙为主 远距离/低功耗场景 LoRa、NB-IoT为主 高速/大包场景 4G/5G、Wi-Fi为主

3.2 Wi-Fi:室内OTA的王者

Wi-Fi做OTA,说白了就是快。802.11n随便跑几十Mbps,传个几百KB的固件包,几秒钟搞定。

我个人习惯,凡是室内设备、有电源供电的场景,首选Wi-Fi。智能插座、智能灯、网关,这些设备几乎都在用Wi-Fi做OTA。

我的经验:Wi-Fi OTA最大的坑不是速度,而是稳定性。我在项目中遇到过,用户的路由器开了“双频合一”,2.4G和5G来回切换,下载到一半断了。解决方案:OTA期间强制锁定在2.4G频段,或者用TCP长连接+断点续传。

Wi-Fi的缺点也很明显:功耗高。一个Wi-Fi模组待机就要几十mA,电池供电的设备根本扛不住。另外,它依赖路由器,户外场景基本没法用。

指标 Wi-Fi
典型带宽 10-100 Mbps
传输距离 室内30-50m
功耗 高(待机~50mA)
适用OTA包大小 任意(推荐<10MB)
网络依赖 需要路由器

3.3 蓝牙:手机直连,小包升级利器

蓝牙做OTA,最典型的场景就是穿戴设备和手机配件。你想想看,智能手环、TWS耳机、体脂秤,哪个不是用蓝牙升级的?

蓝牙的优势在于手机直连,不需要额外配网。用户打开App,点一下升级,数据就走蓝牙传过去了。我做过一个项目,用蓝牙4.2传一个512KB的固件,大概需要3-5分钟。用户能接受,因为升级频率不高。

但蓝牙有个硬伤:速度慢。BLE的理论速率也就1-2Mbps,实际有效吞吐量可能只有几十KB/s。传大固件包?你会等到崩溃的。

避坑指南:我曾经用蓝牙传一个2MB的固件,结果每次传到80%左右就断连。查了半天,是手机锁屏后蓝牙进入了低功耗模式。后来加了“防止手机休眠”的请求,并且在传输过程中每500ms发一次心跳包,问题解决。
指标 蓝牙 (BLE)
典型带宽 0.1-1 Mbps
传输距离 10-30m
功耗 低(待机~10μA)
适用OTA包大小 <1MB
网络依赖 不需要(手机直连)

3.4 LoRa:远距离、低功耗,但别指望传大包

LoRa这玩意儿,距离是真的远。郊区空旷环境,几公里没问题。功耗也低,一节电池用几年。但它的带宽……嗯,非常感人。

LoRa的典型速率只有几百bps到几十kbps。传一个100KB的固件包,你可能要等几个小时。所以,LoRa几乎不适合做全量OTA。

那LoRa在OTA场景下就没用了吗?也不是。我见过一种做法:用LoRa传差分升级包。只传固件变化的部分,包体可以压缩到几KB甚至几百字节。这样虽然慢,但至少能传完。

实用建议:如果非要用LoRa做OTA,一定要配合差分算法(如bsdiff、xdelta)。全量升级?别想了,用户会骂你的。
指标 LoRa
典型带宽 0.3-50 kbps
传输距离 2-15 km(视距)
功耗 极低(待机~2μA)
适用OTA包大小 <50KB(建议差分)
网络依赖 需要LoRa网关

3.5 NB-IoT:运营商网络,适合海量终端

NB-IoT是蜂窝物联网的“轻量版”。它跑在运营商的授权频段上,覆盖好、干扰少。地下车库、水表井这些Wi-Fi到不了的地方,NB-IoT能通。

但NB-IoT的速率比LoRa好不了多少。下行理论峰值也就200kbps左右,实际用起来经常只有十几kbps。传固件?还是得靠差分。

我记得有个做智能水表的客户,设备装在井盖下面,只能用NB-IoT。固件包300KB,差分后大概30KB。他们用了非连续接收(eDRX)模式,每天凌晨传一部分,分三天传完。嗯,虽然慢,但能接受。

注意:NB-IoT有运营商流量费。OTA升级如果频繁,流量成本可能比硬件还贵。我建议OTA升级频率控制在一年2-3次以内。
指标 NB-IoT
典型带宽 20-200 kbps
传输距离 运营商覆盖范围
功耗 低(待机~5μA)
适用OTA包大小 <100KB(建议差分)
网络依赖 需要SIM卡+运营商

3.6 4G/5G蜂窝网络:大包、高速、不差钱

4G/5G做OTA,那就是降维打击。几十Mbps甚至Gbps的速率,传什么固件包都是秒级完成。车载T-Box、工业网关、视频监控,这些设备几乎都用4G/5G做OTA。

但代价也很明显:贵。模组贵、流量贵、功耗高。一个4G模组几十块钱,5G模组上百。电池供电的设备基本不用考虑。

我个人建议,只有满足以下条件才用4G/5G做OTA:

  • 设备有持续供电(车电、市电)
  • 固件包大于10MB
  • 对升级速度有要求(比如安全补丁需要立即下发)
  • 不差钱
指标 4G LTE 5G NR
典型带宽 10-100 Mbps 100-1000 Mbps
传输距离 运营商覆盖 运营商覆盖
功耗 高(待机~20mA) 很高(待机~50mA)
适用OTA包大小 任意(推荐<100MB) 任意
模组成本 ¥30-80 ¥200-500

3.7 选型决策树:到底该选哪个?

说了这么多,你可能还是有点懵。没关系,我整理了一个简单的决策流程,你照着走一遍就行:

  1. 设备有持续供电吗?(是→Wi-Fi或4G/5G;否→蓝牙、LoRa或NB-IoT)
  2. 固件包大于1MB吗?(是→Wi-Fi或4G/5G;否→蓝牙、LoRa或NB-IoT)
  3. 需要手机直连吗?(是→蓝牙;否→继续)
  4. 覆盖距离超过1公里?(是→LoRa或NB-IoT;否→Wi-Fi或蓝牙)
  5. 有运营商网络覆盖吗?(是→NB-IoT或4G/5G;否→LoRa)
一句话总结:室内有电用Wi-Fi,室外远距用LoRa/NB-IoT,大包高速用4G/5G,小包配件用蓝牙。别想着一个协议打天下,不存在的。

3.8 我的个人建议

做OTA通信选型,我一般会留20%的余量。什么意思?比如你算出来固件包500KB,别选LoRa。万一以后要加功能,包体涨到1MB,你就傻眼了。

另外,不要只看峰值速率。实际OTA过程中,受信号干扰、重传、协议开销影响,有效吞吐量可能只有理论值的30%-50%。我习惯用实际测试数据说话,而不是看Datasheet上的数字。

最后说一句:OTA不是一次性工作。设备出货后,你可能需要远程升级十次、二十次。选一个你熟悉、社区活跃、文档齐全的协议方案,比选一个“理论性能最好”的方案,要靠谱得多。