2. LoRa调制原理:扩频因子(SF)、带宽(BW)、编码率(CR)的概念与影响
好,咱们进入正题。这一节可以说是LoRa技术的灵魂所在。很多朋友刚接触LoRa时,看到SF、BW、CR这几个参数就头大,觉得是玄学。其实说白了,它们就是三个旋钮,你拧来拧去,就是在调通信的距离、速度和抗干扰能力。
我个人习惯把LoRa的调制比作「在嘈杂的酒吧里喊话」。你想想看,酒吧里人声鼎沸,你要让远处的人听清你说什么,怎么办?要么你喊得慢一点、清楚一点(扩频),要么你扯着嗓子喊(提高功率),要么你找个安静点的角落(降低噪声)。LoRa的这三个参数,干的就是类似的事。
2.1 扩频因子(SF)—— 喊话的「慢速模式」
扩频因子,英文叫Spreading Factor。它的取值范围是6到12,最常用的是7到12。
概念:SF决定了每个数据比特被扩展成多少个「码片」(chirp)来发送。SF=7时,一个比特用2^7=128个码片表示;SF=12时,一个比特用2^12=4096个码片表示。
对性能的影响:
- 灵敏度提升:SF越大,接收灵敏度越高。我记得有一次在郊区做测试,SF=7时只能传2公里,换成SF=12后,同样的功率传了将近8公里。说白了,就是用时间换距离。
- 速率下降:代价也很明显——传输速率直线下降。SF每增加1,速率大约减半。SF=12的速率只有SF=7的几十分之一。
- 抗干扰能力:SF越大,越能抵抗同频干扰。我在一个工业现场遇到过,电机启动时电磁干扰特别大,SF=7时丢包率高达30%,换成SF=10后基本稳定了。
关键点:不同SF的信号是正交的。也就是说,SF=7和SF=12的信号可以在同一个频率上同时传输,互不干扰。这是LoRa多用户接入的基础。
我的经验:实际项目中,我一般默认用SF=9作为「甜点值」。距离和速率比较均衡。只有在需要极限距离时,才上SF=12。
2.2 带宽(BW)—— 喊话的「嗓门宽度」
带宽,Bandwidth,单位是kHz。LoRa常用的带宽有125kHz、250kHz、500kHz。
概念:带宽决定了chirp信号扫频的范围。带宽越大,chirp从低频扫到高频的范围越宽。
对性能的影响:
- 速率提升:带宽越大,传输速率越高。500kHz带宽的速率大约是125kHz的4倍。
- 灵敏度下降:带宽越大,接收灵敏度越差。因为带宽大了,噪声功率也跟着进来了。我曾经对比过,同样的SF=9,125kHz带宽比500kHz带宽的灵敏度好大约6dB。
- 抗频偏能力:带宽越大,对晶振频偏的容忍度越高。嗯,这里要注意,如果你用便宜的晶振,带宽选太小的话,信号可能就跑偏了。
| 带宽(kHz) | 相对速率 | 灵敏度损失 | 适用场景 |
|---|---|---|---|
| 125 | 1x | 0 dB(基准) | 远距离、低速率 |
| 250 | 2x | 约 -3 dB | 中等距离、中等速率 |
| 500 | 4x | 约 -6 dB | 近距离、高速率 |
避坑指南:我曾经在一个项目中,为了追求速率把带宽设成500kHz,结果发现通信距离从3公里掉到了不到1公里。后来才意识到,带宽和距离是直接冲突的,不能既要又要。
2.3 编码率(CR)—— 喊话的「纠错冗余」
编码率,Code Rate,取值范围是4/5到4/8。
概念:CR表示有效数据比特与总传输比特的比例。CR=4/5表示每5个传输比特中有4个是有效数据,1个是纠错冗余。CR=4/8表示每8个传输比特中只有4个是有效数据,另外4个都是冗余。
对性能的影响:
- 抗干扰能力:CR越小(分母越大),冗余越多,纠错能力越强。我在一个地下室停车场测试过,CR=4/5时误码率很高,改成CR=4/8后,数据基本都能正确解调。
- 速率下降:CR从4/5降到4/8,速率直接减半。因为有一半的比特是冗余信息。
- 对距离的影响:CR对距离的影响不如SF那么明显,但在干扰严重的环境中,合适的CR能让你多传几百米。
实际建议:我一般默认用CR=4/5。只有在确认环境干扰严重时,才降到4/6或4/7。CR=4/8很少用,除非是极端恶劣环境。
2.4 三者如何协同工作?
这三个参数不是孤立的,它们共同决定了LoRa通信的「铁三角」:距离、速率、抗干扰。
我给大家一个经验公式(简化版):
数据速率 (bps) = SF * (BW / 2^SF) * CR
从这个公式能看出什么?
- SF在分母的指数上,所以它对速率的影响最大。
- BW在分子上,增大BW能提升速率,但代价是灵敏度下降。
- CR是线性因子,影响相对温和。
我的调参策略:
- 先定SF:根据目标距离选SF。需要远距离就选大SF。
- 再选BW:在满足速率要求的前提下,尽量选小带宽,以换取灵敏度。
- 最后调CR:如果现场干扰大,适当降低CR。
一个小技巧:如果你不确定怎么配,可以用Semtech官方的LoRa Calculator工具算一下链路预算。我每次做新项目,都会先用这个工具跑一遍,心里有个底。
好了,这一节的内容就到这里。SF、BW、CR这三个参数,你只要记住一句话:距离和速率是死对头,抗干扰能力靠冗余来换。下一节我们会讲链路预算的具体计算方法,到时候这些参数都会用上。