第二章 扩频通信基础:从原理到实战

各位同学,欢迎来到第二章。这一章我们聊聊扩频通信的基础。说实话,很多做LoRa开发的朋友,对扩频的理解停留在「知道这个词」的层面。但如果你真想调好LoRa的参数,这部分内容绕不开。

我个人习惯是,先搞懂原理,再动手配置。这样遇到问题才不会慌。好,我们开始。

2.1 扩频通信原理(DSSS)

扩频通信,说白了就是把信号的能量「摊开」到更宽的频带上去发送。为什么要这么做?

想象一下,你在一个嘈杂的房间里跟人说话。如果你用正常音量,对方可能听不清。但如果你用同样的总能量,换成一种「高频短促」的方式喊话,对方反而能听清。这就是扩频的直觉理解。

DSSS(直接序列扩频)是其中最常见的一种方式。它的做法很简单:

  • 原始数据比特(比如1和0)
  • 乘以一个高速的伪随机码(PN码)
  • 结果信号的带宽被展宽了

接收端用同样的PN码做相关运算,就能把原始信号「挤」回来。

核心要点:DSSS的本质是用带宽换信噪比。你占用的频带越宽,抗干扰能力就越强。

我在项目中遇到过一种情况:两个LoRa设备在同一个频点附近工作,按理说会互相干扰。但因为用了不同的扩频码,它们居然能「和平共处」。这就是扩频的魅力。

2.2 扩频增益与处理增益

扩频增益,英文叫Processing Gain,是衡量扩频系统性能的关键指标。它的计算公式很简单:

Gp = 10 * log10( 扩频后带宽 / 原始信号带宽 )

单位是dB。举个例子:

  • 原始信号带宽:1 kHz
  • 扩频后带宽:1 MHz
  • 扩频增益 = 10 * log10(1000) ≈ 30 dB

这意味着什么?意味着系统可以容忍比原始信号低30dB的信噪比,依然能正确解调。

实战经验:我刚开始做LoRa项目时,总以为扩频增益越大越好。后来发现,增益大了,传输速率就下来了。这是个典型的「鱼和熊掌」问题。

处理增益和扩频增益其实是一回事,只是叫法不同。有些文档里叫「处理增益」,有些叫「扩频增益」。你只要记住:它代表了系统对抗噪声和干扰的能力。

2.3 扩频因子(SF)的概念

扩频因子,英文是Spreading Factor,简称SF。它是LoRa里最核心的参数之一。

SF的定义很简单:每个数据比特用多少个扩频码片(chip)来表示。

  • SF = 7:每个比特用 2^7 = 128 个码片表示
  • SF = 12:每个比特用 2^12 = 4096 个码片表示

你想想看,同样的一个比特,用128个码片和用4096个码片,哪个更抗干扰?当然是后者。但代价是什么?

关键理解:SF越大,扩频增益越高,灵敏度越好,但传输速率越慢。这是LoRa参数配置中最基本的权衡。

嗯,这里要注意:SF不是随便选的。LoRa协议规定了SF的取值范围是7到12。有些芯片支持SF5、SF6,但那属于非标模式,我不建议你在产品中使用。

2.4 扩频因子对速率和灵敏度的影响

这部分是实战中最常遇到的问题。我们直接看数据:

扩频因子(SF) 码片/比特 相对速率 灵敏度提升(约)
7 128 1x(基准) 0 dB
8 256 0.5x +2.5 dB
9 512 0.25x +5 dB
10 1024 0.125x +7.5 dB
11 2048 0.0625x +10 dB
12 4096 0.03125x +12.5 dB

看到这个表,你应该能明白为什么LoRa能做到远距离通信了。SF12比SF7的灵敏度高了约12.5dB,这意味着在同样的发射功率下,通信距离可以翻倍甚至更多。

但代价也很明显:SF12的速率只有SF7的3%左右。发送同样长度的数据包,SF12需要花30多倍的时间。

避坑指南:我曾经在一个项目中,为了追求最远的通信距离,把所有节点都设成了SF12。结果发现,数据上报间隔太长,系统根本没法用。后来我改成动态SF:近距离用SF7,远距离用SF12,才解决了问题。

所以我的建议是:

  • 近距离(< 1km):用SF7-SF9,速率快,省电
  • 中距离(1-3km):用SF9-SF10,平衡速率和距离
  • 远距离(> 3km):用SF11-SF12,牺牲速率换距离

当然,具体数值还要看你的天线高度、环境遮挡等因素。但这条经验法则,我用了好几年,基本靠谱。

小结

这一章我们讲了扩频通信的核心概念。DSSS的原理、扩频增益的计算、SF的定义,以及SF对速率和灵敏度的影响。这些都是LoRa参数配置的基础。

下一章,我们会深入LoRa的调制解调过程,看看这些理论是怎么在芯片里实现的。到时候我会拿实际波形出来讲,更有意思。

好,今天就到这里。有问题欢迎在课程群里讨论。