第2章:LoRa物理层基础
各位同学,今天我们来啃LoRa物理层这块硬骨头。说实话,很多人做LoRaWAN开发,上来就调参数,结果设备部署出去,要么连不上,要么功耗高得吓人。我当年也踩过这个坑——有一次在郊区部署了200个节点,全部用的SF12,结果网关直接撑爆了。后来才明白,物理层这些参数,真不是随便设的。
2.1 扩频因子(SF)—— 信号在噪声中「游泳」的本事
扩频因子,说白了就是每个数据比特被扩展成多少个「码片」来传输。SF=7,就是1个比特用2^7=128个码片来发;SF=12,就是1个比特用4096个码片来发。
你想想看,同样的信息,用更多码片去「稀释」它,信号就更容易从噪声里捞出来。这就是扩频通信的核心思想。
关键点:SF每增加1,接收灵敏度大约提升2.5dB,但数据速率直接减半。
我在项目中遇到过最典型的场景:一个地下车库的传感器,SF12才能勉强连上,SF11就掉线。但代价是什么?一个数据包要发将近2秒,电池半年就得换一次。
2.2 带宽(BW)—— 信号占用的「马路宽度」
带宽决定了信号占用的频谱宽度。LoRa常用的带宽有125kHz、250kHz、500kHz三种。
带宽越大,数据速率越高,但接收灵敏度会下降。为什么?因为更宽的带宽会引入更多噪声。我习惯用一个比喻:带宽就像马路,路越宽,能同时跑的车越多(速率高),但路上的噪音也越大(灵敏度低)。
| 带宽(kHz) | 相对数据速率 | 灵敏度损失 |
|---|---|---|
| 125 | 1x(基准) | 0 dB |
| 250 | 2x | -3 dB |
| 500 | 4x | -6 dB |
嗯,这里要注意:带宽的选择不是越大越好。我曾经在一个工厂项目里,为了追求速率选了500kHz带宽,结果干扰源太多,误码率直接飙到30%。后来老老实实换回125kHz,虽然慢了点,但至少数据能收上来。
2.3 编码率(CR)—— 给数据穿上「防弹衣」
编码率是前向纠错(FEC)的参数。LoRa支持4种编码率:4/5、4/6、4/7、4/8。
什么意思?CR=4/5,就是每4个有效数据比特,实际发送5个比特(多出来的1个是纠错码)。CR=4/8,就是每4个有效比特,发8个比特,冗余度最高,抗干扰能力最强。
我的经验:大多数场景用CR=4/5就够了。只有在极端恶劣的干扰环境下,才需要用到4/7或4/8。但代价是数据速率会下降,因为有效载荷占比变小了。
我曾经在港口做项目,龙门吊的电机干扰特别大,CR=4/5根本扛不住,数据包丢失率超过50%。后来改成4/7,丢包率降到5%以下。但速率也降了将近一半,这就是trade-off。
2.4 链路预算与接收灵敏度
链路预算,说白了就是算算信号从发射端到接收端,一路「损耗」了多少,还剩多少「余量」。
公式很简单:
链路预算 = 发射功率 + 发射天线增益 - 路径损耗 + 接收天线增益
接收灵敏度,就是接收机能识别的最小信号强度。LoRa的接收灵敏度可以做到-130dBm甚至更低(SF12、125kHz带宽下)。
我习惯用这个经验值:
- SF7 + 125kHz:约 -123dBm
- SF9 + 125kHz:约 -129dBm
- SF12 + 125kHz:约 -137dBm
避坑指南:我曾经以为灵敏度越高越好,结果在城区部署时,SF12的节点把远处基站的干扰信号也收进来了,导致网关处理不过来。后来我学乖了:灵敏度够用就行,别盲目追求极限。
2.5 数据速率与覆盖范围的权衡
这是LoRa物理层最核心的trade-off。说白了,就是「快」和「远」不可兼得。
数据速率公式:
DR = SF * BW / (2^SF) * CR
举个例子:
- SF7 + 125kHz + CR=4/5:约5.47 kbps
- SF12 + 125kHz + CR=4/5:约0.29 kbps
你看,SF12的速率只有SF7的5%左右。但SF12的覆盖距离可能是SF7的2-3倍。
我个人的习惯是:
- 城区密集部署:优先用SF7-SF9,速率高,网关密度大,覆盖不是问题
- 郊区或农村:用SF10-SF11,平衡速率和覆盖
- 地下室或深井:只能用SF12,别犹豫
核心结论:SF每增加1,覆盖距离大约增加20-30%,但数据速率减半。带宽翻倍,速率翻倍,但灵敏度损失3dB。编码率越冗余,抗干扰越强,但有效速率越低。
好了,物理层这些参数,是后面理解ADR算法的基础。你想想看,ADR要做的,就是在这些参数之间找到最优组合。下一章我们开始讲ADR的核心逻辑,到时候你会回来感谢今天打下的基础。