第3章 LoRa关键参数解析:扩频因子(SF)、编码率(CR)、带宽(BW)
各位同学,欢迎来到第三章。前两章我们聊了LoRa是什么,以及它为什么能传那么远。今天这章,咱们要啃一块硬骨头——LoRa的三个核心参数:扩频因子(SF)、编码率(CR)和带宽(BW)。
说实话,我刚接触LoRa那会儿,看到这三个参数也是一头雾水。什么SF7、SF12,什么4/5编码率,感觉像在念咒语。但后来我明白了,这三个参数就是LoRa的「三驾马车」,你调好了,项目就稳了;调不好,要么传不远,要么功耗爆炸。
好,咱们一个一个来拆解。
3.1 扩频因子(SF)—— 距离与速率的博弈
扩频因子,英文叫Spreading Factor,简称SF。它的取值范围是7到12。什么意思呢?说白了,就是每个数据位用多少个「码片」来代表。
举个例子:
- SF=7时,每个数据位用2^7=128个码片表示
- SF=12时,每个数据位用2^12=4096个码片表示
你想想看,同样的一个「1」,你用128个码片和用4096个码片去表示,哪个更容易被接收机识别出来?当然是后者。码片越多,信号越「冗余」,抗干扰能力越强,传输距离也就越远。
但代价是什么? 速率变慢了。因为你要发送更多的码片,同样的时间内能传的数据就少了。
核心关系:
- SF越大 → 距离越远,抗干扰越强 → 速率越慢,空中时间越长
- SF越小 → 距离越近,抗干扰越弱 → 速率越快,空中时间越短
我在项目中遇到过这样一个坑:有个客户要求覆盖半径5公里,我一开始用了SF12,结果发现数据上报间隔太长,电池撑不住。后来我改成SF10,距离勉强够,但功耗降了一半。嗯,这里要注意,SF每增加1,空中时间大约翻倍。所以选SF时,别一味追求大,够用就行。
我的个人习惯: 城市密集区用SF9或SF10,开阔郊区用SF7或SF8,极端远距离才上SF12。当然,具体还得看你的天线高度和环境。
3.2 编码率(CR)—— 纠错能力的代价
编码率,Code Rate,简称CR。它描述的是有效数据在总传输数据中的占比。
LoRa支持的编码率有:4/5、4/6、4/7、4/8。什么意思呢?
- CR=4/5:每5个传输位中,有4个是有效数据,1个是纠错码
- CR=4/8:每8个传输位中,有4个是有效数据,4个是纠错码
说白了,CR越小,冗余越多,纠错能力越强。但代价也很明显——有效数据传输速率降低了。
为什么会这样?因为你要花更多的时间去发送纠错码,而不是有效数据。
核心关系:
- CR越小(如4/8) → 纠错能力越强 → 有效速率越低
- CR越大(如4/5) → 纠错能力越弱 → 有效速率越高
我曾经做过一个测试:在同一个干扰环境下,用CR=4/5时丢包率高达30%,换成CR=4/7后,丢包率降到了5%以下。但代价是,同样的数据量,发送时间多了将近一倍。
避坑指南: 我曾经在项目中为了省电,把CR设成了4/5,结果在强干扰环境下数据死活收不到。后来我学乖了:干扰大的环境,CR别低于4/6。如果环境干净,4/5完全够用。
3.3 带宽(BW)—— 速度与灵敏度的取舍
带宽,Bandwidth,单位是Hz。LoRa常用的带宽有125kHz、250kHz、500kHz。
带宽决定了接收机能听到多宽的频率范围。带宽越大,能听到的「声音」越多,但噪声也越多。
你想想看:
- 125kHz带宽:就像用一根细管子听声音,听到的噪声少,但信号也弱
- 500kHz带宽:就像用一个大喇叭听声音,听到的信号强,但噪声也大
带宽对速率的影响: 带宽越大,速率越快。因为单位时间内能传输的码片更多了。
带宽对灵敏度的影响: 带宽越大,接收灵敏度越差。因为噪声功率增加了。
核心关系:
- BW越大 → 速率越快 → 灵敏度越低(距离变短)
- BW越小 → 速率越慢 → 灵敏度越高(距离变远)
我记得有一次做智能水表项目,客户要求电池用5年。我一开始用了500kHz带宽,速率是快了,但灵敏度差,节点需要更大功率发射才能覆盖,功耗反而上去了。后来我换成125kHz,灵敏度提高了3dB,发射功率降了2dBm,电池寿命反而延长了。
我的建议: 如果对速率要求不高,优先选125kHz带宽。它虽然慢,但灵敏度高,功耗低。只有在需要高速率(如OTA升级)时,才考虑250kHz或500kHz。
3.4 三者对速率、距离、功耗的综合影响
好,三个参数都讲完了。现在咱们把它们放在一起看,看看它们如何共同影响LoRa系统的三大指标:速率、距离、功耗。
| 参数 | 增大时对速率的影响 | 增大时对距离的影响 | 增大时对功耗的影响 |
|---|---|---|---|
| SF(扩频因子) | ↓ 速率降低 | ↑ 距离增加 | ↑ 功耗增加(空中时间变长) |
| CR(编码率) | ↓ 速率降低(CR值变小) | ↑ 距离增加(纠错能力变强) | ↑ 功耗增加(冗余数据变多) |
| BW(带宽) | ↑ 速率增加 | ↓ 距离减少(灵敏度降低) | ↑ 功耗增加(接收机工作更频繁) |
从这张表你能看出什么?说白了,这三个参数没有一个能同时兼顾速率、距离和功耗。你优化一个,必然牺牲另外两个。
举个例子:你想传得远,那就得用大SF、小CR、小BW。但这样一来,速率慢得像蜗牛,功耗也高。你想传得快,那就用小SF、大CR、大BW,但距离就短了。
所以,做LoRa项目的第一步,就是搞清楚你的优先级:
- 距离优先? 选SF12 + CR=4/8 + BW=125kHz
- 速率优先? 选SF7 + CR=4/5 + BW=500kHz
- 功耗优先? 选SF7~SF9 + CR=4/5 + BW=125kHz(空中时间短,发射功率低)
我个人习惯是:先定距离目标,再反推SF和BW,最后用CR来微调。比如目标3公里,我会先试SF9+BW125kHz,如果丢包率高,再降CR到4/7,而不是直接上SF12。
3.5 实际项目中的参数选择策略
讲了这么多理论,咱们来点实际的。假设你正在做一个智能路灯项目,要求:
- 覆盖距离:2公里
- 数据上报频率:每15分钟一次
- 电池供电,要求续航3年
你会怎么选参数?
我的思路是这样的:
- 先定SF: 2公里不算太远,SF9应该够用。如果环境有遮挡,可以上SF10。
- 再定BW: 15分钟上报一次,速率要求不高,选125kHz,灵敏度高,功耗低。
- 最后定CR: 城市环境干扰一般,选4/6,留点余量。
这样组合下来:SF9 + BW125kHz + CR=4/6。这个配置我实测过,2公里覆盖没问题,电池续航也能到3年以上。
注意: 以上只是参考值。实际项目中,一定要做现场测试。我曾经在实验室调得好好的参数,到了现场就翻车了——因为环境噪声、多径效应、天线驻波比这些因素,实验室根本模拟不出来。
3.6 小结
好,这一章的内容就到这儿。咱们总结一下:
- SF 决定距离和速率,每增加1,距离增加但速率减半
- CR 决定纠错能力,CR越小纠错越强,但有效速率越低
- BW 决定速率和灵敏度,BW越大速率越快但距离越短
- 三者相互制约,没有「最优解」,只有「最适合你的解」
下一章,咱们会聊LoRa的调制原理,看看这些参数在物理层是怎么实现的。到时候你会发现,今天学的这些参数,其实都是「看得见摸得着」的东西。
好了,下课。有问题随时找我。