第1章:LoRa物理层基础 — 扩频因子、带宽、编码率
各位同学,咱们今天聊聊LoRa物理层的三个核心参数。说实话,我刚接触LoRa那会儿,也被SF、BW、CR这几个缩写搞得一头雾水。但搞懂了它们,你就掌握了LoRa调优的钥匙。
1.1 扩频因子(SF) — 距离的魔法
扩频因子,英文叫Spreading Factor,简称SF。它是个啥?说白了,就是每个数据位用多少个码片(chip)来传输。
LoRa用的是扩频技术。每个信息位被扩展成多个码片。SF值就是码片数量与信息位数量的比值。比如SF=7,表示1个信息位用2^7=128个码片来传输。
核心公式: 码片数 = 2^SF
SF=7 → 128个码片/位
SF=12 → 4096个码片/位
你想想看,同样的信息,用更多码片去表示,抗干扰能力自然更强。这就是为什么SF越大,通信距离越远。
SF对速率的影响: 码片多了,传输同样数据需要的时间就长。速率自然就降下来了。
| 扩频因子 | 码片数 | 相对速率 | 典型距离 |
|---|---|---|---|
| SF7 | 128 | 快 | 近(~2km) |
| SF9 | 512 | 中 | 中(~5km) |
| SF12 | 4096 | 慢 | 远(~15km) |
我的经验: 我在做智慧农业项目时,田里的传感器用SF7就够了,但山脚下的基站到山顶的节点,必须上SF12。有一次偷懒用了SF10,结果数据包丢失率高达30%。嗯,从那以后我再也不敢低估地形的影响了。
1.2 带宽(BW) — 速度的油门
带宽,Bandwidth,单位是Hz。它决定了LoRa信号占用的频率范围。
常见的LoRa带宽有125kHz、250kHz、500kHz。带宽越大,数据速率越快,但接收灵敏度会下降。
为什么会这样? 带宽宽了,噪声功率也跟着增加。信噪比(SNR)要求不变的情况下,灵敏度自然就差了。
| 带宽 | 速率 | 灵敏度损失 | 适用场景 |
|---|---|---|---|
| 125kHz | 慢 | 基准 | 远距离、低速率 |
| 250kHz | 中 | 约-3dB | 平衡型 |
| 500kHz | 快 | 约-6dB | 近距离、高速率 |
避坑指南: 我曾经在一个项目中,为了追求速率把BW设成了500kHz。结果节点离基站才1公里,数据就收不到了。后来查资料才发现,500kHz的灵敏度比125kHz差了6dB。这6dB,在复杂环境下可能就是生与死的区别。
1.3 编码率(CR) — 纠错的保险
编码率,Code Rate,表示有效数据与总传输数据的比例。LoRa支持4/5、4/6、4/7、4/8四种编码率。
CR=4/5,意味着每5个传输位中,有4个是有效数据,1个是纠错码。CR=4/8,则是一半数据一半纠错码。
编码率越低,纠错能力越强,但有效速率也越低。
| 编码率 | 有效数据占比 | 纠错能力 | 速率损失 |
|---|---|---|---|
| 4/5 | 80% | 弱 | 最小 |
| 4/6 | 66.7% | 中 | 中等 |
| 4/7 | 57.1% | 较强 | 较大 |
| 4/8 | 50% | 最强 | 最大 |
我的建议: 一般情况下,用CR=4/5就够了。只有在干扰特别严重的环境,比如工业现场或者城市密集区,才考虑用4/7或4/8。我个人习惯是,先跑一段时间看看丢包率,再决定要不要降编码率。
1.4 三者如何影响速率和距离?
好了,三个参数都讲完了。现在咱们把它们串起来看。
数据速率公式:
DR = SF * (BW / 2^SF) * CR
其中:
- SF — 扩频因子
- BW — 带宽(Hz)
- CR — 编码率
从这个公式能看出什么?
- SF越大,速率越慢 — 因为分母有2^SF,增长极快
- BW越大,速率越快 — 线性关系
- CR越小,速率越慢 — 因为有效数据占比降低
距离的影响:
- SF越大,距离越远 — 扩频增益高,抗干扰强
- BW越小,距离越远 — 噪声功率低,灵敏度高
- CR越小,距离越远 — 纠错能力强,能容忍更多误码
核心结论: 速率和距离是一对矛盾。想跑得远,就得牺牲速率;想跑得快,就得牺牲距离。没有免费的午餐。
1.5 实战中的参数选择策略
说了这么多理论,咱们来点实际的。我在项目中是怎么选参数的?
- 先确定通信距离 — 根据实际部署环境,估算最远节点到基站的距离
- 再确定数据量 — 每个节点上报多少数据?多久上报一次?
- 然后选SF — 距离远就上SF12,距离近就用SF7
- 接着选BW — 在满足速率要求的前提下,尽量用125kHz
- 最后调CR — 先默认4/5,看丢包情况再调整
避坑指南: 我曾经在一个项目中,为了省电把SF设成了7,结果节点距离基站3公里,数据根本传不回来。后来改成SF10,虽然速率慢了,但至少数据能回来了。记住,传不回来的数据,速率再快也没用。
好了,这一章的内容就到这里。下一章咱们聊聊LoRa数据包的结构,看看这些参数在数据包层面是怎么体现的。
课后思考: 如果你有一个应用,需要同时兼顾距离和速率,你会怎么平衡SF、BW、CR三个参数?试试用上面的公式算一算,看看不同组合下的速率差异。