4、无线通信技术:Wi-Fi、BLE、LoRa、ZigBee对比,如何选择适合的通信方式

做嵌入式能耗监测,选无线通信方式,是我觉得最头疼的一步。

为什么?因为每种技术都有自己的脾气。选错了,要么功耗压不下来,要么信号穿不过墙,要么成本直接爆表。我这些年踩过的坑,十有八九都跟通信选型有关。

今天咱们就把 Wi-Fi、BLE、LoRa、ZigBee 这四位老兄拉出来,好好盘一盘。

4.1 先看一张对比表,心里有个底

我个人习惯,做技术选型前先拉一张表。别急着看参数,先看大方向。

特性 Wi-Fi BLE(蓝牙低功耗) LoRa ZigBee
传输距离 室内 30-50m 室内 10-30m 2-15km(视距) 室内 10-100m
峰值速率 最高 1Gbps+ 1-2 Mbps 0.3-50 kbps 250 kbps
功耗(典型) 高(~100mA+) 低(~10mA,待机μA级) 极低(~10mA,待机nA级) 低(~30mA,待机μA级)
网络拓扑 星型 星型、广播 星型、点对点 星型、树型、Mesh
频段 2.4/5 GHz 2.4 GHz Sub-GHz(如 868/915 MHz) 2.4 GHz
成本(模组) 中高
典型应用 摄像头、智能音箱 手环、传感器 远距离抄表、农业 智能家居、工业控制

嗯,这张表只是参考。实际项目中,你会发现很多参数是「纸面数据」和「实测数据」两码事。

4.2 Wi-Fi:高带宽的代价是功耗

Wi-Fi 的优势很明显——速度快,生态成熟。你家里那个智能插座,十有八九就是 Wi-Fi 的。

但做能耗监测,我一般不太推荐 Wi-Fi。为什么?功耗太高了。

我记得有一次做工厂设备监测,客户非要上 Wi-Fi。结果呢?电池供电的设备,三天就得换一次电池。后来改成 LoRa,半年才换一次。

Wi-Fi 适合的场景:

  • 设备本身需要大量数据传输(比如视频流)
  • 设备有持续供电,不依赖电池
  • 需要直接接入现有家庭/企业网络

避坑指南: 我曾经在项目里用 ESP8266 做低功耗设计,结果发现它的深度睡眠模式唤醒后,重新连接 Wi-Fi 要 3-5 秒。这期间功耗飙升到 200mA。你想想看,如果设备每 10 分钟上报一次数据,那这 3 秒的「高功耗窗口」就占了总能耗的 0.5%。看似不多,但电池容量一算,寿命直接打八折。

⚠️ 注意: Wi-Fi 的待机功耗再低,也低不过 BLE 和 LoRa。如果你做的是纽扣电池供电的设备,趁早放弃 Wi-Fi。

4.3 BLE:低功耗的万金油,但别指望穿墙

BLE 是我用得最多的技术。说白了,它就是个「省电版的蓝牙」。功耗低、成本低、手机直接连,太方便了。

我做过一个智能手环项目,用的就是 BLE。待机电流能做到 3μA 左右,一颗 CR2032 纽扣电池能用大半年。

BLE 适合的场景:

  • 短距离(10米以内)的数据采集
  • 需要与手机 APP 直接交互
  • 设备体积小,只能用纽扣电池

但 BLE 有个硬伤——穿墙能力差。你想想看,2.4GHz 频段,遇到一堵混凝土墙,信号直接掉一半。我在一个智能家居项目里,客厅的 BLE 传感器,隔了一堵墙到卧室,连接就断断续续的。

避坑指南: 我曾经在项目里用 BLE Mesh 组网,想着能解决覆盖问题。结果发现,Mesh 网络里每个节点都要转发数据,功耗反而上去了。而且 Mesh 的延迟不稳定,有时候一个数据包要跳 5-6 次才能到网关。嗯,后来我换成了 ZigBee。

💡 小技巧: BLE 的广播模式(Beacon)功耗极低,适合做「存在检测」或「触发上报」。我习惯在传感器上只发广播,网关负责接收,这样传感器端的功耗能压到最低。

4.4 LoRa:远距离的王者,但速率是硬伤

LoRa 是我做户外项目时的首选。为什么?距离远啊!

我记得在做一个农业大棚监测项目时,大棚分布在方圆 5 公里的范围内。用 Wi-Fi 和 BLE 根本不可能,ZigBee 也得加中继。最后上了 LoRa,一个网关覆盖所有大棚,成本还更低。

LoRa 适合的场景:

  • 远距离传输(1公里以上)
  • 低速率数据(温度、湿度、开关状态等)
  • 电池供电,要求超长续航(1年以上)
  • 有遮挡或复杂环境(LoRa 的穿透力比 2.4GHz 强很多)

但 LoRa 的速率真的很慢。最高也就 50kbps,实际用起来可能只有几百 bps。你想传一张图片?别想了,传完天都黑了。

避坑指南: 我曾经在项目里用 LoRa 做实时控制,结果发现从发送指令到设备响应,延迟在 1-3 秒之间。因为 LoRa 的扩频因子越高,传输距离越远,但延迟也越大。所以,LoRa 只适合「采集上报」,不适合「实时控制」。

🔑 关键点: LoRa 的功耗和距离是「跷跷板」。扩频因子(SF)越大,距离越远,但功耗越高、速率越慢。我一般默认用 SF7,距离够用,功耗最低。只有在信号实在穿不过去时,才调高到 SF9 或 SF10。

4.5 ZigBee:Mesh 组网的好手,但生态封闭

ZigBee 在智能家居领域很常见。它的核心优势是 Mesh 组网——每个设备都能当路由器,信号可以一跳一跳地传过去。

我做过一个全屋智能项目,30 多个 ZigBee 设备分布在三层楼。一个网关放在二楼,一楼的设备通过二楼的插座中继,信号稳稳的。换成 BLE 的话,早就断连了。

ZigBee 适合的场景:

  • 设备数量多(几十到几百个)
  • 需要 Mesh 组网,覆盖大范围
  • 设备有持续供电(路由节点不能休眠)
  • 对延迟有一定要求(控制类应用)

但 ZigBee 有个问题——生态封闭。不同厂家的 ZigBee 设备,不一定能互连。你买个 A 家的网关,可能连不上 B 家的灯泡。我吃过这个亏,后来学乖了,要么全用同一家的设备,要么选支持 ZigBee 3.0 标准的产品。

避坑指南: 我曾经在项目里用 ZigBee 做电池供电的传感器,结果发现传感器作为「终端设备」可以休眠,但作为「路由设备」必须一直在线。如果网络里路由节点太少,终端设备就找不到父节点。所以,设计 ZigBee 网络时,一定要规划好路由节点的数量和位置。

⚠️ 注意: ZigBee 和 Wi-Fi 都工作在 2.4GHz 频段,会互相干扰。我遇到过 Wi-Fi 信道和 ZigBee 信道重叠,导致 ZigBee 网络频繁掉线的情况。解决办法是把 Wi-Fi 的信道固定在 1、6、11,ZigBee 避开这些信道。

4.6 到底怎么选?我的决策流程

说了这么多,你可能会问:那我到底该选哪个?

我个人的决策流程是这样的,你可以参考一下:

  1. 先看距离: 超过 1 公里?直接 LoRa。100 米以内?往下看。
  2. 再看速率: 需要传视频或大量数据?Wi-Fi。只是传几个字节的传感器数据?往下看。
  3. 再看功耗: 电池供电,要求续航一年以上?LoRa 或 BLE。有持续供电?Wi-Fi 或 ZigBee。
  4. 再看网络规模: 设备超过 20 个,需要 Mesh 组网?ZigBee。设备少,点对点?BLE。
  5. 最后看成本: 模组成本敏感?BLE 和 ZigBee 最便宜。LoRa 模组稍贵,但省了中继器的钱。

嗯,说白了,没有「最好」的技术,只有「最合适」的技术。我见过有人用 LoRa 做室内传感器,结果穿墙效果还不如 BLE。也见过有人用 Wi-Fi 做电池设备,结果天天被用户投诉。

🔑 我的建议: 如果你拿不准,可以先做一个小规模的「原型验证」。用开发板搭一个最小系统,实测功耗、距离、延迟。别光看数据手册,那玩意儿有时候能骗死人。

好了,这一章就聊到这儿。下一章咱们聊聊「通信协议栈的安全设计」,那才是真正让人头秃的地方。