2、LoRa调制技术:扩频因子(SF)、带宽(BW)、编码率(CR)详解、LoRa调制解调原理、链路预算与灵敏度计算

各位同学,欢迎来到第二章。上一章我们聊了LoRaWAN的整体架构,算是打了个底。这一章,咱们要钻进物理层,看看LoRa最核心的看家本领——调制技术。

说实话,我第一次接触LoRa调制时,也被那些参数搞得有点晕。扩频因子、带宽、编码率,每个都能调,调完效果还不一样。但搞懂了之后你会发现,这其实就是一套“用时间换距离”的精妙把戏。

2.1 扩频因子(SF):决定“嗓门”大小的关键

扩频因子,英文叫Spreading Factor,简称SF。它决定了每个数据比特被扩展成多少个“码片”(chips)来发送。

你可以这么理解:
假设你要跟对面的人喊一句话。SF小,就像你正常说话,对方离得近能听清,离远了就听不见。SF大,就像你拿着大喇叭,一个字一个字慢慢喊,每个字都拖长音,对方哪怕隔着一公里也能听清。

LoRa的SF取值范围是7到12。每个SF值对应一个固定的扩频增益:

扩频因子 (SF) 码片数/符号 扩频增益 (dB) 典型应用场景
SF7 128 21.1 近距离、高速率
SF8 256 24.1 中等距离
SF9 512 27.1 中等偏远距离
SF10 1024 30.1 较远距离
SF11 2048 33.1 远距离
SF12 4096 36.1 极限距离、穿透复杂环境

这里有个关键点:SF每增加1,灵敏度提升约3dB,但数据速率直接减半。我在做智慧农业项目时,田里的传感器距离基站有3公里,中间还有一片小树林。用SF7根本连不上,换成SF12后,信号稳稳的。代价是什么?一个数据包从原来0.5秒发完,变成了4秒多。

核心公式:数据速率 ≈ SF × (BW / 2^SF) × (4 / (4 + CR))

从公式可以看出,SF在分母上是指数级的,所以SF越大,速率下降非常明显。

我的经验:实际项目中,不要一上来就用SF12。先试试SF9或SF10,如果丢包率能接受,就别用更高的SF。我曾经有个项目,为了追求“绝对可靠”全用了SF12,结果网关一天只能处理几百个节点,完全不够用。

2.2 带宽(BW):信号占用的“马路宽度”

带宽,Bandwidth,单位是Hz。LoRa常用的带宽有125kHz、250kHz和500kHz三种。

带宽决定了信号占用的频谱宽度。你可以把它想象成一条马路:
125kHz是单车道,车走得慢但能走很远;
500kHz是四车道,车跑得快但跑不远。

带宽对系统的影响体现在两个方面:

  • 数据速率:带宽翻倍,速率也翻倍。500kHz比125kHz快4倍。
  • 灵敏度:带宽越宽,噪声功率越大,灵敏度越差。500kHz比125kHz灵敏度差约6dB。

我个人习惯,在大多数场景下优先使用125kHz。原因很简单:
第一,125kHz是LoRaWAN标准中最常用的带宽,兼容性最好;
第二,它提供了最好的灵敏度,能覆盖更远的距离。

什么时候用250kHz或500kHz?
当你的节点离网关很近(比如几百米内),而且你需要更高的吞吐量时。比如一些固件升级的场景,用500kHz能大大缩短升级时间。

2.3 编码率(CR):给数据加一层“防弹衣”

编码率,Code Rate,表示有效数据在总传输数据中的占比。LoRa支持4/5、4/6、4/7、4/8四种编码率。

编码率4/5的意思是:每5个传输的比特中,有4个是有效数据,1个是纠错码。编码率4/8则是每8个比特中只有4个有效数据,纠错码占了4个。

你可能会问:为什么不用4/5?效率最高啊!
嗯,这里要注意:编码率越低,纠错能力越强,但有效数据速率也越低

编码率 (CR) 有效数据占比 纠错能力 速率损失
4/5 80% 0%
4/6 66.7% 中等 20%
4/7 57.1% 较强 33%
4/8 50% 最强 40%

我在实际项目中,大部分时候用4/5就够了。只有在信号极差的环境下,比如地下停车场、金属罐体内部,才会考虑用4/7或4/8。但说实话,如果信号差到4/5都扛不住,我建议你先检查天线位置,而不是盲目降低编码率。

避坑指南:我曾经在一个项目中,为了“保险起见”把所有节点都设成了4/8。结果发现,空中时间变长了40%,导致网关的并发容量大幅下降。后来改回4/5,配合适当的天线调整,效果反而更好。记住:编码率不是越高越好,够用就行

2.4 LoRa调制解调原理:从比特到“啁啾”

LoRa调制用的是CSS(Chirp Spread Spectrum,啁啾扩频)技术。说白了,就是把数据编码成频率随时间线性变化的信号。

你可以想象一个“啁啾”声:
从低频率慢慢升到高频率,这叫“上行啁啾”;
从高频率慢慢降到低频率,这叫“下行啁啾”。

LoRa用不同的起始频率来表示不同的符号。比如SF=7时,一个符号可以表示7个比特(128种可能)。接收端通过检测这个啁啾信号的起始频率,就能解调出原始数据。

为什么CSS抗干扰能力强?
因为啁啾信号占用了整个带宽,能量是分散的。窄带干扰只能影响其中一小部分频率,接收端通过相关运算,依然能恢复出完整信号。这就像你在一张白纸上画了一条线,有人用笔点了一个点,你依然能看清那条线的走向。

调制过程简化为三步:

  1. 将数据比特映射为符号(比如SF7时,7个比特对应一个符号)
  2. 根据符号值计算啁啾的起始频率偏移
  3. 生成从起始频率到结束频率的线性调频信号

解调过程反过来:

  1. 接收信号与本地生成的啁啾模板做相关运算
  2. 找到相关峰值的位置,即得到起始频率偏移
  3. 将起始频率偏移映射回数据比特

2.5 链路预算与灵敏度计算:算清楚你的信号能跑多远

链路预算,Link Budget,是无线通信中最基础也最重要的计算。它回答一个问题:我的信号从发射端到接收端,到底还剩多少“力气”?

公式很简单:

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

接收灵敏度,则是接收机能正确解调的最小信号功率。LoRa的接收灵敏度可以用以下公式估算:

灵敏度 (dBm) = -174 + 10×log10(BW) + NF + SNR_min

其中:

  • -174 dBm/Hz:室温下的热噪声基底
  • BW:带宽(Hz)
  • NF:接收机噪声系数(典型值6dB)
  • SNR_min:解调所需最小信噪比(SF7约-7.5dB,SF12约-20dB)

举个例子,计算SF12、125kHz带宽下的灵敏度:

灵敏度 = -174 + 10×log10(125000) + 6 + (-20)
       = -174 + 50.97 + 6 - 20
       = -137.03 dBm

这个-137dBm是什么概念?
相当于一根针掉在足球场上,你站在球场另一端要听到它落地的声音。LoRa能做到这一点,靠的就是扩频增益带来的信噪比优势。

我的经验:理论计算出来的链路预算,在实际环境中通常要打8折。墙壁、树木、天气都会带来额外损耗。我一般会在理论值基础上预留10-15dB的余量。比如算出来能传5公里,实际部署时按3公里规划比较稳妥。

2.6 知识体系总览

为了让你更直观地理解这些参数之间的关系,我画了一张图:

LoRa调制技术核心参数关系图 LoRa调制技术 扩频因子 (SF) 带宽 (BW) 编码率 (CR) 数据速率 (DR) 接收灵敏度 抗干扰能力 链路预算 → 通信距离 SF↑ → 灵敏度↑、速率↓ | BW↑ → 速率↑、灵敏度↓ | CR↓ → 纠错↑、速率↓

这张图把SF、BW、CR三个参数以及它们对系统性能的影响串起来了。你仔细看会发现,这三个参数其实是在做同一个权衡:用速率换距离,用时间换可靠性

好了,这一章的内容就到这里。LoRa调制的核心就是这三个参数,搞懂了它们,你就掌握了LoRa物理层80%的精髓。下一章我们会聊LoRaWAN的MAC层,看看数据到了协议栈上层是怎么被处理的。


公众号:蓝海资料掘金营,微信deep3321