第2章:LoRa通信基础:技术原理、扩频因子、带宽、编码率对通信的影响

各位同学,咱们今天聊聊LoRa通信的底层逻辑。说实话,我刚接触LoRa那会儿,也被一堆参数搞得头晕——扩频因子、带宽、编码率,这些到底怎么调?调了之后会怎样?

别急,咱们一个一个拆开看。搞懂了这些,你就能像调音师一样,把LoRa通信调到最适合你项目的状态。

2.1 LoRa技术原理:为什么它能传那么远?

LoRa的全称是Long Range,长距离。它凭什么能传几公里甚至十几公里?核心秘密就四个字:扩频技术

传统无线通信,比如Wi-Fi、蓝牙,用的是窄带传输。信号窄,功率集中,但抗干扰能力弱。LoRa不一样,它把信号扩展到很宽的频带上,像撒网一样。

我打个比方。你站在操场上喊一句话,别人能听到,但如果有噪音,可能就听不清了。LoRa的做法是:把这句话重复说很多遍,每次用不同的频率说。接收端把这些碎片拼起来,哪怕有些被噪音盖住了,也能还原出原话。

这就是扩频技术的精髓——用带宽换信噪比

核心公式(理解即可):

LoRa的灵敏度 ≈ -148 + 10×log10(扩频因子) + 10×log10(带宽) + 编码率增益

说白了,扩频因子越大、带宽越窄、编码率越低,灵敏度就越高,传得就越远。

我在做第一个浮标项目时,测试距离只有500米就丢包了。后来发现是扩频因子设成了7,默认的。改成12之后,直接干到3公里。嗯,这就是扩频因子的威力。

2.2 扩频因子(Spreading Factor, SF):距离与速率的博弈

扩频因子是LoRa最核心的参数。它决定了每个符号用多少个码片(chip)来表示。

SF的取值范围是7到12。SF7表示每个符号用2^7=128个码片,SF12就是2^12=4096个码片。

你想想看,码片越多,信号冗余度越高,抗干扰能力越强,传得就越远。但代价是什么?传输速率变慢了。

扩频因子 码片数 相对速率 典型距离
SF7 128 最快 近(1-2km)
SF9 512 中等 中(3-5km)
SF12 4096 最慢 远(8-15km)

实际项目中怎么选?

  • 近距高速:用SF7。比如浮标离基站只有几百米,数据量大,用SF7最合适。
  • 远距低速:用SF12。比如浮标在湖中心,离岸几公里,数据量小,用SF12保证通信。
  • 自适应:LoRaWAN协议支持ADR(自适应数据速率),会根据信号质量自动调整SF。我个人习惯在浮标上开启ADR,省心。

避坑指南:我曾经在一个项目中,所有浮标都设成SF12,结果数据上报间隔太长,导致数据丢失。后来改成SF9,距离和速率都平衡了。记住:不是SF越大越好,够用就行。

2.3 带宽(Bandwidth, BW):宽还是窄?

带宽决定了LoRa信号占用的频率范围。常见的有125kHz、250kHz、500kHz。

带宽越宽,传输速率越快,但灵敏度会下降。带宽越窄,速率慢,但能传得更远。

为什么会这样?因为噪声是均匀分布在频带上的。带宽越宽,接收到的噪声功率就越大,信噪比就低了。

实际选择建议:

  • 125kHz:最常用。平衡了速率和距离。我90%的项目都用这个。
  • 250kHz:需要更高速率时用。比如浮标要上传图片(虽然LoRa传图片很慢,但偶尔有人这么干)。
  • 500kHz:极少用。除非你确定信号质量非常好,且需要高速率。

注意:不同地区的法规对带宽有限制。比如中国470-510MHz频段,常用125kHz。如果你用500kHz,可能超出允许范围。做产品前一定要查当地法规。

2.4 编码率(Coding Rate, CR):纠错能力与开销

编码率是LoRa的前向纠错(FEC)参数。它表示有效数据在总传输数据中的占比。

编码率有4种:4/5、4/6、4/7、4/8。4/5表示每5个传输位中有4个是有效数据,1个是纠错码。4/8就是一半是纠错码。

编码率越低,纠错能力越强,但有效数据传输速率越低。

编码率 纠错能力 有效速率 适用场景
4/5 最高 信号质量好
4/6 中等 中等 一般环境
4/7 较强 较低 干扰较多
4/8 最强 最低 恶劣环境

我的经验:浮标在水面上,环境相对开阔,干扰不大。我一般用4/5或4/6。但如果浮标在港口、工业区附近,电磁干扰大,我会用4/7甚至4/8。

记得有一次,浮标靠近一个大型变电站,数据丢包率高达30%。我把编码率从4/5改成4/7,丢包率降到5%以下。代价是速率慢了,但数据能传回来,值了。

2.5 三个参数的协同:如何调出最佳组合?

扩频因子、带宽、编码率不是孤立的。它们共同决定了LoRa通信的速率、距离、可靠性

我总结了一个简单的调参思路:

  1. 先定距离:根据浮标到基站的实际距离,选扩频因子。近用SF7,远用SF12。
  2. 再定带宽:默认125kHz。如果速率不够,可以试试250kHz,但要确认信号强度。
  3. 最后调编码率:先设4/5,如果丢包严重,逐步降到4/8。

举个例子。一个浮标离基站3公里,环境一般。我会这样设:

// LoRa参数配置示例(基于SX1278)
LoRa.setSpreadingFactor(9);    // SF9,平衡距离和速率
LoRa.setSignalBandwidth(125E3); // 125kHz,标准带宽
LoRa.setCodingRate4(5);        // 4/5,先试试,不行再降

如果测试发现丢包,我会先降编码率到4/6。还不行,就升扩频因子到SF10。带宽一般不动。

记住这个口诀:

距离不够升SF,干扰太多降CR,速率不够加BW。

但每次只改一个参数,改完测试,别一次全改。

2.6 实际项目中的参数选择案例

我参与过一个湖泊水质监测项目,浮标分布在湖面各处,最远的离岸基站约5公里。

一开始,所有浮标统一用SF12、125kHz、4/5。结果发现近处的浮标数据上报太慢,因为SF12速率太低。

后来我做了优化:

  • 近岸浮标(<1km):SF7、125kHz、4/5。速率高,数据实时性好。
  • 中间浮标(1-3km):SF9、125kHz、4/6。平衡距离和速率。
  • 远岸浮标(3-5km):SF12、125kHz、4/7。保证通信,牺牲速率。

这样调整后,系统整体性能提升明显。近处数据不丢,远处也能稳定传回来。

嗯,这就是LoRa参数调优的魅力。你不需要一个参数打天下,而是根据实际情况灵活配置。

2.7 本章小结

咱们这一章讲了LoRa通信的三个核心参数:

  • 扩频因子(SF):决定距离和速率,7到12可选。
  • 带宽(BW):影响速率和灵敏度,常用125kHz。
  • 编码率(CR):控制纠错能力,4/5到4/8可选。

这三个参数共同决定了LoRa通信的性能。调参时记住:一次只改一个,改完测试,逐步优化。

下一章,咱们会讲LoRa模块的硬件选型和电路设计。到时候我会分享一些选型踩过的坑,保证让你少走弯路。