ESP-NOW、WiFi 与 LoRa:给你的项目挑一种无线方案

要联网、要看板就用 WiFi,板子之间低成本互传消息用 ESP-NOW,传感器离得远就上 LoRa。这里讲怎么选,以及怎么把三者混着用。
在课堂和爱好者的物联网项目里,反复出现的无线方案有三种:ESP-NOW、普通 WiFi 和 LoRa。简短的结论很简单:设备需要联网或者要配手机 App,就用 WiFi;两块以上的板子只是要低成本、快速地互相说话,就用 ESP-NOW;传感器离一切都有几百米甚至几公里远,就用 LoRa。这篇文章余下的部分,讲的是这句话背后的取舍,以及当没有哪一种无线方案单独够用时该怎么办。
WiFi:需要联网的时候
WiFi 是大多数人本来就熟悉的那一种。它连上路由器或热点,拿到一个 IP 地址,然后就能够到更大的互联网:云端看板、MQTT 服务器、REST API,或者同一网络里的手机 App。学生在课堂上用的 sheenbot∞ 主控板开箱就支持 WiFi,所以第一堂“真正的”物联网课,通常就是把一个传感器读数推到某块屏幕上。
代价在于功耗和基础设施。WiFi 的电流消耗比另外两种都大,所以它不适合那种要靠一块小电池连跑几周的设备。它还依赖路由器在线。在南非这一点很要紧:拉闸限电期间,路由器可能一连黑上两个小时,只有 WiFi 的传感器就此静默,直到来电为止。传输距离也一般,大致是一间教室或一栋住宅的范围,隔着混凝土墙还会更短。
ESP-NOW:板子跟板子对话
ESP-NOW 是一种轻量、无连接的协议,就内置在负责 WiFi 的那些 ESP32 芯片里。它完全绕开路由器:一块板子可以直接把一条短消息发到另一块板子的 MAC 地址,延迟极低,也不用配置 IP 协议栈。数据包很小,每包 250 字节上下,但用来传一个温度读数、一次按键或者一条电机指令绰绰有余。
因为中间没有接入点,WiFi 网络挂掉时 ESP-NOW 照样能用,而且功耗明显低于一条完整的 WiFi 连接,尤其是当板子在两次发送之间进入睡眠时。室内的通信距离和 WiFi 大致相当,户外有视距的话还更远。问题在于,ESP-NOW 给你的是一张自家设备组成的私有网络,而不是通往互联网的路。如果数据需要离开这个小集群,就得有别的东西来接力。
LoRa:传感器离得很远的时候
LoRa 是拿数据速率换距离。在南非使用的亚吉赫兹频段(868 MHz)上,一条 LoRa 链路可以横跨一整座农场或一个城区,路径无遮挡时有时能打到好几公里,功耗却低得可怜。这让它成了田地另一头的土壤湿度探头、或者山坡上水箱液位传感器的天然之选。
你要付出的代价是带宽和硬件。LoRa 传的是小而稀疏的消息,不是视频或高速遥测数据;它也没有集成在标准的 ESP32 里,得另外加一个 LoRa 模块。点对点的 LoRa 需要一个配对的接收端,完整的 LoRaWAN 则需要一个网关。对大多数学校和小农场的项目来说,一对 LoRa 模块或者一个网关,起步就够用了。
三种无线方案对照
| 无线方案 | 大致距离 | 是否需要基础设施? | 功耗 | 最适合 |
|---|---|---|---|---|
| WiFi | 几十米 | 路由器加互联网 | 中到高 | 看板、App、云端 |
| ESP-NOW | 与 WiFi 相当,户外更远 | 无 | 低 | 板子之间传消息 |
| LoRa | 几百米到几公里 | LoRa 模块,用 LoRaWAN 还需网关 | 极低 | 偏远、稀疏分布的传感器 |
按场景匹配无线方案
在教室里,WiFi 和 ESP-NOW 几乎能覆盖全部需求。读数要实时显示在看板上的那节课用 WiFi;几块板子在课桌之间传消息的项目,比如接力游戏或者共享计分板,就用 ESP-NOW,免得去挤学校的网络。
在家里,取决于互联网要通到哪一层。给 App 供数据的灯控或门磁传感器要用 WiFi;一堆只跟本地中枢通信的遥控器和按钮,跑在 ESP-NOW 上更省心也更省电。典型的家庭自动化方案背后就是这样的组合。
在农场上,由距离说了算。分散在各个围场或者大棚一行行之间的传感器,彼此通常远到 WiFi 够不着,离市电也远到没法一直供上电,这正是 LoRa 在智慧农业方案里站住脚的地方。读数最后总得有个落脚的地方,而这就是几种无线方案开始混用的起点。
用网桥节点把几种无线方案混起来
认真做的项目大多不止用一种无线方案,而是靠一个网桥节点把它们接起来:这是一台会说两种无线协议、并在两者之间转发消息的设备。常见的做法是,田间的传感器通过 LoRa 或 ESP-NOW 上报给一个网桥,再由这个网桥独自维持唯一的那条 WiFi 连接,把所有数据转发给服务器或看板。这样你在田间拿到的是远距离或低功耗,而联网只在一个点上完成,不必要求每台设备三样全占。
有一个坑值得早点知道:ESP32 的 WiFi 和 ESP-NOW 共用同一颗 2.4 GHz 射频,两者必须待在同一个信道上。如果你先建立 WiFi 连接,那些原本期待另一个信道的 ESP-NOW 对端就可能哑掉。做网桥时要有意识地规划信道,或者把这两件事拆到两颗芯片上去做。网桥一旦跑通,把收上来的数据再发给sheenIoT这类平台,就是最轻松的一步了。
快速选型
- 需要联网、云端看板或者手机 App?用 WiFi。
- 两块以上自家板子要快速互传小消息?用 ESP-NOW。
- 传感器离最近的路由器或电源超过一百米?用 LoRa。
- 靠电池供电、要连跑几周?倾向于带睡眠的 ESP-NOW,或者 LoRa。
- 同时要好几样?做一个网桥节点。
小结
没有哪一种无线方案最好,只有最贴合你实际的距离、功耗预算和基础设施的那一种。先想清楚数据要送到哪里、要走多远,选择通常自己就浮出来了。当一种方案吃不下全部需求时,网桥节点能让你把它们各自的长处合起来用,而不是在每一项上都将就。
一颗 ESP32 能同时跑 WiFi 和 ESP-NOW 吗?
能,但要小心。两者共用同一颗 2.4 GHz 射频,必须使用同一个信道,所以一条 WiFi 连接可能把信道钉死,切断那些期待另一个信道的 ESP-NOW 对端。要么有意识地把信道固定下来,要么在网桥上把这两个角色交给两颗独立的芯片。
用 LoRa 是不是必须有 LoRaWAN 网关?
不一定。两个 LoRa 模块可以点对点通信,不需要网关,对单个远端传感器来说完全够用。等到传感器数量多起来,或者你希望它们接入一张标准网络,网关才变得值得投入;那是合理的下一步,而不是起步的门槛。



