3、LoRa调制原理:扩频因子(SF)的作用、带宽(BW)与码率(CR)的关系、链路预算计算实例
好,咱们直接进入正题。LoRa 这东西,说白了就是靠「扩频」吃饭的。你想想看,为什么同样的功率,LoRa 能传几公里,而普通 FSK 几百米就歇菜了?秘密就在这三个参数里:SF、BW、CR。
我当年第一次调 LoRa 模块时,看着数据手册上那堆公式也头疼。后来在野外做测试,发现调错一个参数,通信距离直接砍半。嗯,今天就把这些坑一次性讲清楚。
3.1 扩频因子(SF)—— 距离与速率的博弈
扩频因子,英文叫 Spreading Factor。它的作用很简单:把原始数据「稀释」到更宽的频谱上。
怎么理解?打个比方:
- SF=7:相当于你对着一个人喊话,速度快,但距离近。
- SF=12:相当于你对着山谷喊,回声绕三圈,速度慢,但传得远。
LoRa 的 SF 取值范围是 7 到 12。每增加 1,信噪比(SNR)要求降低约 2.5 dB。什么意思?
SF 每提高 1,灵敏度提升约 2.5 dB,但数据速率减半。
我在项目中遇到过这种情况:一个水表抄表项目,要求每天上报一次数据。我直接用了 SF=12,虽然速率只有 300 bps 左右,但电池用了三年没换。如果是 SF=7,可能半年就得换电池——因为重传次数太多了。
核心结论:
- SF=7:速率高(约 5.5 kbps),距离近,适合密集部署
- SF=12:速率低(约 300 bps),距离远,适合广覆盖
- SF 值不同,信号之间是正交的——这意味着不同 SF 可以同时传输而不互相干扰
3.2 带宽(BW)与码率(CR)—— 一对欢喜冤家
带宽 BW 和码率 CR,这两个参数经常被放在一起讨论。为什么?因为它们共同决定了链路的「吞吐量」和「鲁棒性」。
带宽(BW)
LoRa 常用的带宽有 125 kHz、250 kHz、500 kHz。带宽越大,数据速率越高,但灵敏度越差。
公式很简单:
数据速率 (bps) = SF * (BW / 2^SF) * CR
你看,BW 在分子上,所以带宽翻倍,速率也翻倍。但代价呢?灵敏度会下降约 3 dB。说白了,就是用距离换速度。
我个人习惯:城市环境用 125 kHz,郊区或空旷地用 250 kHz。500 kHz 很少用,除非你真的不在乎距离。
码率(CR)
CR 是编码率,取值范围 4/5 到 4/8。它表示有效数据占传输数据的比例。
- CR = 4/5:冗余最少,速率最高,但抗干扰能力弱
- CR = 4/8:冗余最多,速率最低,但抗干扰能力强
我曾经在工厂里做测试,现场有大量电机噪声。用 CR=4/5 时,丢包率高达 30%。换成 CR=4/8 后,丢包率降到 2% 以下。代价是速率从 1.2 kbps 降到了 600 bps——但至少数据能传上来。
实战建议:
如果你不确定环境噪声,先保守一点:SF=10,BW=125 kHz,CR=4/6。这个组合在大多数场景下都能工作。等测试稳定了,再慢慢调优。
3.3 链路预算计算实例 —— 纸上谈兵不如动手算
好了,理论讲完了,咱们来算一笔账。链路预算,说白了就是算「信号从发射机到接收机,到底还剩多少能量」。
公式:
链路预算 (dB) = 发射功率 (dBm) + 发射天线增益 (dBi) - 路径损耗 (dB) + 接收天线增益 (dBi) - 接收机灵敏度 (dBm)
注意:结果必须大于 0,而且最好留 10-15 dB 的余量。
实例:城市环境下的 LoRa 链路预算
假设我们有一个智能路灯项目:
| 参数 | 数值 | 说明 |
|---|---|---|
| 发射功率 | +20 dBm | 100 mW,符合大多数国家法规 |
| 发射天线增益 | 2 dBi | 普通鞭状天线 |
| 接收天线增益 | 2 dBi | 网关端同样用鞭状天线 |
| 接收机灵敏度 | -137 dBm | SF=12, BW=125 kHz 时的典型值 |
| 路径损耗(2 km) | 约 128 dB | 城市环境,使用 Okumura-Hata 模型 |
计算过程:
链路预算 = 20 + 2 - 128 + 2 - (-137)
= 20 + 2 - 128 + 2 + 137
= 33 dB
33 dB 的余量,相当充裕。这意味着即使遇到下雨、树叶遮挡,信号也能稳定传输。
但注意:如果换成 SF=7,灵敏度会降到约 -124 dBm。重新算一下:
链路预算 = 20 + 2 - 128 + 2 - (-124) = 20 dB
20 dB 也还行,但余量少了 13 dB。如果遇到高楼遮挡,可能就掉线了。
另一个实例:郊区农业传感器
假设距离 5 km,用 SF=12,BW=125 kHz:
| 参数 | 数值 | |
|---|---|---|
| 发射功率 | +14 dBm | 电池供电,降低功耗 |
| 路径损耗(5 km) | 约 140 dB | 郊区,自由空间损耗 + 地面反射 |
| 接收机灵敏度 | -137 dBm |
链路预算 = 14 + 2 - 140 + 2 - (-137) = 15 dB
15 dB 的余量,勉强够用。但我会建议把发射功率提到 +17 dBm,或者换成定向天线(增益 5 dBi),这样余量能到 20 dB 以上。
避坑指南:我曾经在农业项目中,以为 15 dB 余量够了。结果到了夏天,玉米长高了 2 米,信号直接断了。后来不得不加中继节点。所以,链路预算至少留 20 dB 余量,尤其是植被会变化的场景。
3.4 三个参数的协同调优
最后,我总结一下这三个参数怎么配合:
- 先定距离目标:需要 3 km 以上?直接用 SF=12。1 km 以内?SF=7 或 8 就够了。
- 再选带宽:城市密集区用 125 kHz,空旷地用 250 kHz。500 kHz 除非你只传几十米。
- 最后调码率:如果环境干净,用 CR=4/5。有干扰,用 CR=4/7 或 4/8。
你想想看,这三个参数就像调音台:SF 是音量大小,BW 是音域宽度,CR 是降噪强度。调好了,一首交响乐;调不好,就是噪音。
嗯,今天就到这里。下一章咱们讲 LoRa 的帧结构和空中唤醒技术,那个更有意思。