看不见的线怎么选:蓝牙、Wi-Fi、ZigBee、LoRa 与蜂窝网络

上一回把 USB 线剪掉了:CH340 换成 HC-05,小车和手机之间只剩下空气。那一篇的结尾留了一句——它负责把一段串口线变短成空气,其余的都不归它管。

“其余的”就是下面要摊开的东西:无线不止蓝牙一种,而它们之间的差别,比名字上的差别大得多。

先把这几个词摆到各自的层上

要摊开,先得回答一个更容易绕晕的问题:“串口”和“蓝牙”根本不是同一个层面的东西。

串口是接口:两个引脚上的一套电平与时序约定,规定一位多长、一帧几位。它是一条具体的线。

蓝牙是无线协议:规定两台设备怎么在空中找到对方、怎么分组、丢了怎么重发。它是一段看不见的路。

两者能凑到一起,是因为中间站着一个转换模块。HC-05 一头挂蓝牙,一头挂串口——它把空气当成线用。

在单片机这边,“用串口”和“用无线”可以同时成立。大多数无线模块,对单片机来说就是一个串口设备:

无线方案 模块常见长什么样 单片机这头看到的是什么
经典蓝牙(SPP) HC-05 / HC-06 一个串口设备,用 AT 指令配置
BLE JDY-08、HC-08 一类透传模块 一个串口设备,用 AT 指令配置
Wi-Fi ESP8266、ESP32 串口设备(AT 固件),也可能走 SPI
ZigBee XBee、CC2530 一类模块 一个串口设备,用 AT 指令配置
LoRa E220、Ra-01 一类模块 串口设备,或者 SPI 上的裸射频
2.4G 点对点 nRF24L01 不是串口设备:SPI 接口,自带地址、通道和 FIFO
蜂窝网络 4G Cat.1、NB-IoT 模块 一个串口设备 + 一张 SIM 卡,用 AT 指令配置

只有 nRF24L01 那一栏是例外,要单说一句:它不说“串口”,而是让程序通过 SPI 读写它的寄存器,自己定义地址、通道和有效载荷。它有六个接收通道,每个包最多 32 字节载荷,收齐了给一个中断通知你。地址怎么分、丢了怎么补、谁来应答,全归程序自己决定。

(GPS 那种是单向“接收”,不算通信,另算一类;北斗还能发短报文,是另一条路。)

一张大表:它们各自解决什么

方案 距离量级 速率量级 功耗 拓扑 另一端是谁
经典蓝牙 SPP 十米级 受串口波特率限制,115200 下约 11 KB/s,提到 460800 能到四十多 中 点对点 手机、电脑
BLE 十米级 低,几 KB/s 级 很低 点对点、星型 手机
Wi-Fi 室内几十米 高,几百 KB/s 到 MB/s 级 高 基础设施(路由器) 路由器、云
ZigBee 十米到上百米,可组网延伸 低 低 网状,节点能互相转发 网关/协调器
LoRa 公里级,看环境 极低,几百 bps 到几 KB/s 极低 星型,一个网关收很多节点 网关
2.4G 点对点 十米到上百米(带功放更远) 低到中,空中速率可到 2Mbps,但一包只 32 字节 低 点对点、一主多从 另一块同款模块
蜂窝网络 有信号就行,几公里到全国 按制式:NB-IoT 几十 kbps 级,4G Cat.1 到 Mbps 级 高,发射瞬间更高 运营商基站 云平台

表里的数字都是量级,不是承诺。同一种方案换一个模块、换一根天线、隔一面墙,差十倍都不奇怪——上一回那个“手机慢慢远离、看错误帧数什么时候开始涨”的实验,量的就是这个东西。

还有三句要补在表外:

  • 距离、速率、功耗三者互相拉扯。 想让距离远,速率就得低、发一次就得等;想要带宽大,电流和发热一起上来。没有哪一栏是全面更好的。
  • 频段决定谁跟谁抢。 蓝牙、BLE、Wi-Fi、ZigBee、nRF24L01 都挤在 2.4GHz 那一带,所以它们会互相干扰;LoRa 和一部分遥控模块在 433/470/868/915MHz 这些频段上;蜂窝网络走的是运营商的频段。
  • 蜂窝是唯一“不需要你自己架另一端”的方案。 别的基本上都得有个手机、路由器或网关在另一头等着。

每一种为什么存在

经典蓝牙解决的是“手机就在旁边,但我懒得插线”。手机原生支持,SPP 让一堆老设备不用改程序就能无线化——上一回走的就是这条路。代价是距离短、速率被串口波特率卡住,还有平台差异:iOS 不给 SPP。

BLE 是蓝牙的省电版本,为“一颗纽扣电池跑几个月”设计的。它把速率和连接频率都压下来换功耗,适合每隔一会儿报几十个字节的状态,不适合连续传波形和图像。手机同样原生支持。

Wi-Fi 是“要直接上互联网”时的默认答案:带宽大,能跑网页、视频、摄像头,路由器现成。代价是功耗大、配网麻烦(SSID 和密码得想办法告诉它)、离了路由器就没有网。

ZigBee 为“很多个节点自己组网”设计。节点不只是终端,还能替别人转发,覆盖范围随着节点增多而延伸,所以智能家居和工业传感里常见。代价是要有一个协调器/网关,而且各家协议栈并不完全通用。

LoRa 用极低的速率换极远的距离和极低的功耗:一个网关能收几公里外几十上百个节点,每个节点几分钟发一条小数据。它传不了图,传的是“温度 23.5”这种事。它占的是免许可频段,功率和发送时长都要守当地的规矩。

2.4G 点对点不经过任何标准协议栈,直接拿裸射频做遥控。延迟低、模块便宜、代码全在自己手里;代价是地址分配、通道选择、重传和配对都得自己写,而且和 Wi-Fi、蓝牙抢同一段频率。

蜂窝网络不用你架网络,插一张卡就能到云。远程设备——共享单车、农机、水表——大多是它。代价也清楚:流量费、功耗高、依赖运营商信号;老制式在退网,新设计要在 NB-IoT 和 Cat.1 这类里面挑。

选型的四个问题

选无线不需要背参数表,按顺序问四个问题就行:

  1. 另一端是谁? 手机 → 蓝牙或 BLE;路由器和云 → Wi-Fi 或蜂窝;另一台自己做的设备 → 2.4G 点对点、ZigBee、LoRa。没有另一端,就没有无线方案可选。
  2. 一次要传多少、多久传一次? 几十个字节、几分钟一次 → BLE、ZigBee、LoRa 都够;连续波形或图像 → 只有 Wi-Fi 和蜂窝撑得住。
  3. 要多远? 一张桌子 → 蓝牙;一个屋子 → BLE 或 Wi-Fi;一个厂区、一片农田 → LoRa 或 ZigBee 组网;跨城市 → 蜂窝。
  4. 电从哪来,能撑多久? 纽扣电池还要跑几个月 → BLE、ZigBee、LoRa;车上有 12V 电池和降压模块,可以不在意 → Wi-Fi 也上得了。

同样是“无线”,落在这辆小车上的四种典型需求,答案差得很远:

你想做的事 顺手的选择 为什么
手机遥控一辆小车 经典蓝牙或 BLE 手机原生支持,距离和带宽都够
让电脑看小车上的画面 Wi-Fi 只有它带宽够
几辆小车之间互通位置 2.4G 点对点或 ZigBee 不经过手机和路由器,自己就能组
把车放到远处回传数据 LoRa 或蜂窝 一个靠距离,一个靠“不用自己架网”

换模块,换掉的到底是什么

这一层要记住的是:换模块时,什么东西会变,什么东西不会变。

不会变的:

  • 帧协议。AA 55、长度、校验和、状态机,一个字都不用改——它们描述的是“一串字节里的结构”,跟字节怎么飞过来的没有关系。
  • 业务层。前进、停止、差速、PID,不知道命令是从哪来的。
  • 解析的入口。把字节一个接一个喂进状态机这件事,无论字节来自中断、DMA 还是无线模块,做法都一样。

会变的:

  • 模块管理。 AT 指令集、配对流程、断线重连、配网、SIM 卡和流量——每种方案一套,同一种方案不同固件还可能不一样。
  • 供电和功耗。 从“多几毫安”变成“发射瞬间几百毫安甚至更多”,电池和降压模块要重新算一遍。
  • 上位机那一头。 VOFA+ 能通过蓝牙生成的 COM 口继续用,因为那头还是个串口;换成 Wi-Fi 之后,对面通常变成一个 TCP 连接,工具得跟着换。

所以“串口”和“蓝牙”必须分开看:串口是接口,这一层基本不变;蓝牙和别的无线方案是链路,这层整体换掉。 混在一起说,就会得出“换个模块得重写整个程序”这种吓人的结论——实际要重写的只是中间那一层。

功耗这笔怎么算

讲缓冲的时候写过“用空间换时间”,无线这里要算的是“用占空比换电池寿命”。

平均电流大约等于待机电流乘上待机时间的占比,加上发射电流乘上发射时间的占比。一个 LoRa 模块待机可能只有几微安,发射时上百毫安,但一天只醒几十次、每次几十毫秒——平均下来小得可以忽略。反过来,一个 Wi-Fi 模块光是保持连接就可能要几十毫安,一直连着,电池是按小时算的。

所以“这个模块功耗多少”问得并不完整。要问的是:它多久醒一次、每次醒多久。 低功耗方案的设计重点从来不是把发射电流压低一点,而是尽量少醒。

一个屋子里十几个模块:频段、名字和波特率

一个人调试的时候,无线链路很干净。一个实验室里十几个同学同时调试的时候,它会突然变脏——偶发丢帧、延迟忽大忽小、连不上,甚至连到别人的车上。这些现象大多不是程序写错了,而是同一件事:空气是公共资源。

2.4GHz 是一块公共场地。 蓝牙、BLE、Wi-Fi、ZigBee、nRF24L01 都在这块场地里,再算上无线键鼠、无线耳机、微波炉。蓝牙的跳频只在同一个连接内部协调:你的手机和你的模块会一起跳,可隔壁那组的手机和模块也在跳,两组的节奏没有谁统一安排。碰撞是必然的,只是多少的问题——表现出来就是延迟抖动、偶发丢帧、连接建立变慢。Wi-Fi 更霸道一些:它占住一段带宽不挪窝,蓝牙的自适应跳频会尽量避开它,但 Wi-Fi 满载时,避让的效果会明显变差。

名字和密码是教室里最实际的两个旋钮。 出厂模块的名字几乎都是同一串字符,密码也几乎都是 1234 或 0000。手机列表里出现十几个同名设备时,你没法确定哪个是自己的;更糟的是,密码一样,别人也能连你的车。给每个模块改一个带编号的名字(CAR-07 这种)、每组用不同的密码,各自只要一条 AT 指令(上一回的指令表里有),能一次性解决“连错”和“被别人连走”。

一个从机同时只能被一个主机连着。 经典蓝牙的串口链路是一对一的。同学连不上你的模块,常见原因不是它坏了,而是它已经被你的手机占着;反过来你连不上,可能是它还在别人的手机里连着。把那一头断开,再连。

波特率不是空中速率,这一点最容易搞混。

  • 串口波特率描述的是模块和单片机之间那一段的速度,115200 就是每秒 115200 位;
  • 空中速率由协议、距离、干扰和重传共同决定,是另一件事;
  • 两者之间隔着一个模块内部缓冲:单片机按 115200 往里灌,模块按自己能达到的节奏往空中发。灌得比发得快,缓冲迟早满,多出来的字节就丢在模块里。 这种丢,单片机的计数看不见——它以为自己已经发出去了。

所以在干扰大、距离远的场合,把波特率降下来反而更稳:9600 给模块留出喘息时间,重传和缓冲都不那么紧张。反过来,在干净环境里把波特率提到 460800 是提速,在嘈杂环境里只是把丢字节换了个地方发生。

能改频点的方案,就把频点分掉。 这是多人同场时最有效的办法:

方案 能调的旋钮 同场地怎么分
经典蓝牙 / BLE 只能改名、改密码;频点由协议自动跳 靠名字和密码区分,错开使用时间
Wi-Fi 可以指定 1/6/11 这类互不重叠的信道 每组一个信道,别都挤在默认那个
nRF24L01 一类 2.4G 模块 有一百多个 1MHz 频点,还能配地址 每组一个频点加一个地址,互不打扰
LoRa 可以改频点和扩频参数 按当地规矩挑频点,同组错开
ZigBee 可以选信道和网络号 同场地给每组不同网络号

经典蓝牙这一栏只能“靠名字和密码区分”,是因为它的跳频由协议规定、不能指定。这不是缺陷,而是它抗干扰付出的代价:你放弃了指定频道的自由,换来的是自动避开坏频道的能力。 只有一个网络时,这是优势;一屋子网络时,它就不够用了。

多人同场调试,按这个顺序做:

  1. 每个模块改唯一名字(带组号),每组用不同密码;
  2. 需要绑定的场合,把对方地址记下来绑死,别让它随便连;
  3. 能分频点、信道或网络号的方案,先分好再开调;
  4. 避开 Wi-Fi 满载的时段和位置,尤其是有人在推视频流的时候;
  5. 干扰明显时,先把波特率降到 9600 或 38400 试一次,再怀疑别的;
  6. 协议层留一手:上一回那套帧有校验和,能发现坏帧;要真正做到“丢了会重来”,还得靠序号加重发(应答帧已经在了,缺的是序号和重发规则);
  7. 现象用数字记,不靠感觉——错误帧数、超时次数、断开次数,各自算一个数。

三个常见误会

“蓝牙最远十米。” 那是标称值。实际取决于天线摆放、遮挡和 2.4G 有多挤;上一回让手机逐步远离、盯着错误帧数的实验,量的就是这个数。

“频段一样就能互通。” 蓝牙、Wi-Fi、ZigBee、nRF24L01 都在 2.4GHz,可它们说的话完全不同,谁也听不懂谁。同频只意味着互相干扰。

“模块就是协议。” 买到的东西常常是“一颗射频芯片加一块固件”,协议栈由固件实现,AT 指令集由厂家定。上一回那句“AT 指令不能只背一张网上的表”,根子就在这里。

最后橘猫说

“串口”和“蓝牙”不在一个层面上:串口是接口,是 PA9/PA10 上的电平与时序约定;蓝牙是无线协议,是空气里的一段路;两者能凑到一起,是因为中间站着一个转换模块,HC-05 把空气当成了线用。实际接线和编程时,大多数无线模块对单片机来说就是一个串口设备——BLE 透传、Wi-Fi 的 AT 固件、ZigBee、LoRa 都是,唯一的例外是 nRF24L01 那种挂在 SPI 上、自带地址与 32 字节包长、要自己写驱动的裸射频。选型的四个问题按顺序问:另一端是谁、一次传多少多久传一次、要多远、电从哪来能撑多久;落到小车上就是手机遥控用蓝牙、传画面用 Wi-Fi、多车互通用 2.4G 或 ZigBee、远程回传用 LoRa 或蜂窝。换模块时,帧协议、业务层和解析入口一个字都不用改,真正要重写的只有“模块管理”那一层,外加供电和上位机。最后要算的是占空比,不是峰值:低功耗的关键不是发射电流小,而是少醒。还有件事一个人调试时永远遇不到:空气是公共资源——2.4GHz 上挤着蓝牙、Wi-Fi、ZigBee 和一堆无线外设,跳频只在自家网络内协调,所以一屋子模块必然互相碰撞;这时候最管用的旋钮是改名字、改密码、分频点,而波特率要用对——它描述的是模块和单片机之间那一段,不是空中速率,灌得比发得快,字节就丢在模块的缓冲里,单片机的计数器还看不见。

最后蜘蛛说

所以你问我该选哪个?——板子上焊的是网线

posted @ 2026-11-05 09:39  Zw-awa  阅读(56)  评论(0)    收藏  举报