2、LoRa射频基础:扩频通信原理、SF扩频因子、BW带宽、CR编码率、链路预算与灵敏度

各位同学,咱们今天聊点硬核的。LoRa 这个名字,做物联网的应该都不陌生。但很多人只是把它当成一个「能传得远」的模块来用,调几个参数就完事了。我个人习惯是,先把底层的射频原理摸透,再去调参数,这样心里才有底。

这一节,咱们就掰开揉碎,把 LoRa 射频的五个核心概念讲清楚:扩频通信、SF、BW、CR,还有链路预算和灵敏度。嗯,内容不少,但都是干货。

2.1 扩频通信:为什么 LoRa 能「抗干扰」?

先问大家一个问题:为什么 Wi-Fi 和蓝牙在嘈杂环境里容易断,而 LoRa 却能稳稳地传几百米?

答案就是——扩频通信。

说白了,扩频就是把一个窄带信号,扩展到很宽的频带上去发送。你想想看,原本只有 1kHz 宽的信号,我把它展宽到 125kHz、250kHz 甚至 500kHz。这样做的好处是什么?

  • 抗干扰能力强:窄带干扰只影响一小部分频谱,大部分信号还是完整的。
  • 功率谱密度低:信号像「噪声」一样散布在频带上,不容易被截获。
  • 多径衰落不敏感:频率分集带来的天然优势。

LoRa 用的是 CSS(Chirp Spread Spectrum,啁啾扩频) 技术。它不像传统 DSSS(直接序列扩频)那样用伪随机码去调制,而是用频率随时间线性变化的「啁啾」信号。我在一个工厂项目里遇到过,现场有大量变频器和电机产生的电磁干扰,普通 2.4G 方案根本没法用。换成 LoRa 之后,数据包几乎没丢过——这就是扩频的魅力。

核心要点:扩频通信的本质,是用带宽换信噪比。带宽越宽,抗干扰能力越强,但代价是传输速率下降。

2.2 SF 扩频因子:决定「距离」和「速率」的关键

SF(Spreading Factor,扩频因子)是 LoRa 最重要的参数之一。它决定了每个符号能携带多少比特信息。

公式很简单:SF = log2(每个符号的码片数)。比如 SF=7,表示每个符号用 2^7=128 个码片来表示。

SF 的取值范围是 7 到 12。数值越大,扩频增益越高,接收灵敏度越好,传输距离越远。但代价也很明显——传输速率变慢

SF 值 码片数/符号 相对速率 典型应用场景
7 128 最快 近距离、高吞吐量
9 512 中等 一般距离、平衡
12 4096 最慢 超远距离、低速率

我建议你在实际项目中,不要一上来就用 SF=12。我曾经在一个智慧农业项目里,为了追求最远距离,所有节点都设成 SF=12。结果呢?数据上报间隔太长,网关处理不过来,还造成了严重的空中碰撞。后来我把靠近网关的节点改成 SF=7,远处的保持 SF=12,整个系统的吞吐量提升了 3 倍。

实战技巧:SF 值不同的节点可以同时传输,因为 LoRa 的 SF 之间是准正交的。利用这一点,你可以实现「多速率并行传输」,大幅提升网络容量。

2.3 BW 带宽:影响灵敏度和速率的「双刃剑」

BW(Bandwidth,带宽)指的是 LoRa 信号占用的频率宽度。常见的有 125kHz、250kHz、500kHz 三种。

带宽越大,传输速率越快,但接收灵敏度会下降。为什么?因为带宽越宽,噪声功率也越大,信噪比要求就更高。

举个例子:

  • BW=125kHz,SF=12 时,灵敏度可以做到 -137dBm 左右。
  • BW=500kHz,SF=12 时,灵敏度大概只有 -131dBm。

差了 6 个 dB,换算成距离,可能就是几百米的差距。

我个人习惯是:能选 125kHz 就不选 250kHz。除非你对速率有硬性要求,否则窄带宽带来的灵敏度优势太明显了。记得有一次做地下管廊的温湿度监测,信号要穿过好几层混凝土墙,我果断选了 125kHz + SF=12,最终实现了 800 米的穿透距离。

注意:不同国家和地区对 LoRa 的带宽使用有法规限制。比如中国 470-510MHz 频段,建议使用 125kHz 带宽,避免干扰其他合法业务。

2.4 CR 编码率:纠错能力与有效速率的权衡

CR(Coding Rate,编码率)是 LoRa 前向纠错(FEC)的参数。它表示有效数据比特与总传输比特的比例。

LoRa 支持 4 种编码率:4/5、4/6、4/7、4/8。数值越小,冗余越多,纠错能力越强,但有效速率越低。

CR 值 冗余比例 纠错能力 有效速率损失
4/5 20% 最小
4/6 33% 中等 中等
4/7 43% 较强 较大
4/8 50% 最强 最大

你可能会问:是不是 CR 越大越好?不一定。我曾经在实验室里做过对比测试,在信噪比良好的环境下,CR=4/5 和 CR=4/8 的误包率几乎没有差别。但在强干扰环境下,CR=4/8 的优势就体现出来了。

我的建议是:默认用 CR=4/5,只有在链路余量不足或者误包率偏高时,才考虑增大 CR。毕竟,速率也是宝贵的资源。

2.5 链路预算与灵敏度:算清楚你的「通信距离」

链路预算,说白了就是算一笔账:发射端能发出多少信号,经过空间损耗后,接收端还能收到多少。

公式很简单:

链路预算 (dB) = 发射功率 (dBm) + 发射天线增益 (dBi) - 路径损耗 (dB) + 接收天线增益 (dBi)

接收灵敏度,就是接收机能正确解调的最小信号强度。LoRa 的灵敏度可以做到 -130dBm 到 -148dBm,这取决于 SF、BW 和 CR 的组合。

举个例子:

  • 发射功率:20dBm(100mW)
  • 发射天线增益:2dBi
  • 接收天线增益:2dBi
  • 路径损耗(1km 视距):约 100dB(取决于频率和环境)
  • 接收灵敏度:-137dBm(SF=12, BW=125kHz)

链路预算 = 20 + 2 - 100 + 2 = -76dBm。这个值远高于 -137dBm 的灵敏度,说明链路余量很充足,通信完全没问题。

经验公式:链路余量 = 接收信号强度 - 接收灵敏度。余量大于 10dB 才算可靠。我曾经在山区项目里,链路余量只有 5dB,结果一下雨信号就断断续续。后来加了高增益天线,余量提到 15dB,问题才解决。

2.6 四个参数的协同配置

SF、BW、CR 这三个参数不是孤立的。它们共同决定了 LoRa 的 空中速率

空中速率 (bps) = SF * (BW / 2^SF) * (4 / (4 + CR))

你看,SF 在分子和分母里都出现了,所以它和速率的关系不是线性的。SF 每增加 1,速率大约减半。

我整理了一个常用的配置组合,供你参考:

应用场景 SF BW (kHz) CR 空中速率 (bps) 典型距离
室内短距离 7 500 4/5 ~5468 100m
一般室外 9 250 4/5 ~976 500m
远距离/穿透 12 125 4/8 ~293 2km+

嗯,看到这个速率,你可能觉得 LoRa 好慢。没错,LoRa 的设计哲学就是「用速率换距离和可靠性」。如果你的应用需要高速率,那 LoRa 可能不是最佳选择。但如果你需要的是「一颗电池用三年,传遍整个园区」,那 LoRa 就是你的不二之选。

避坑指南:我曾经在调试一个 LoRa 网关时,发现某些节点总是丢包。排查了半天,发现是 SF 和 BW 配置不一致。记住:通信双方的 SF、BW、CR 必须完全一致,否则无法解调。

好了,这一节的内容就到这里。下一节咱们会深入 LoRa 的帧结构,看看数据包是怎么组装和解析的。到时候我会带大家手写一个 LoRa 数据包的解析器,敬请期待。