第2章 LoRa射频基础:扩频通信原理、Chirp扩频技术、LoRa的调制与解调机制、LoRa的灵敏度与链路预算

好,咱们进入正题。这一章是LoRa技术的核心,也是很多初学者觉得最头疼的地方。我当年刚接触LoRa时,看到那些频谱图、数学公式,说实话也懵了一阵。但后来我发现,只要抓住几个关键点,这东西其实没那么玄乎。

2.1 扩频通信原理:为什么LoRa能传那么远?

先问个问题:为什么Wi-Fi传几十米,蓝牙传十几米,LoRa却能传几公里?

答案就在「扩频」这两个字上。

传统通信方式,比如FSK(频移键控),是把信号能量集中在一个很窄的频带里发射。好处是频谱利用率高,坏处是——抗干扰能力差。你想想看,如果有个同频干扰,信号直接就淹没了。

扩频通信的思路正好相反:把信号能量分散到一个很宽的频带上。就像你把一杯水泼到地上,面积大了,但深度浅了。接收端再用特殊方法把能量「收集」回来。

这样做的好处是什么?

  • 抗干扰强:窄带干扰只影响一小部分频谱,大部分信号还在
  • 低功率远距离:功率谱密度低,但通过处理增益把信号「捞」回来
  • 隐蔽性好:信号埋在噪声里,别人很难发现你在通信

核心概念:处理增益

处理增益 = 10 × log10(扩频后带宽 / 原始信号带宽)

举个例子:原始信号带宽1kHz,扩频后125kHz,处理增益就是10×log10(125) ≈ 21dB。这21dB就是LoRa比传统FSK多出来的「距离优势」。

我在项目中遇到过一件事:有个客户在工业现场部署LoRa,现场电机变频器干扰特别大。用FSK方案,通信距离不到200米就丢包。换成LoRa,同样的发射功率,距离直接拉到1.2公里。这就是扩频的威力。

2.2 Chirp扩频技术:LoRa的独门绝技

LoRa用的不是传统的直接序列扩频(DSSS)或跳频扩频(FHSS),而是Chirp扩频(CSS)

Chirp是什么?说白了就是一个频率随时间线性变化的信号。你可以想象成鸟叫声——从低到高或者从高到低。

LoRa用的是线性调频Chirp,频率随时间线性上升(up-chirp)或下降(down-chirp)。

为什么选Chirp?

  • 对频偏不敏感:传统FSK对频率偏差很敏感,LoRa的Chirp信号天生抗频偏
  • 同步简单:用up-chirp做前导码,接收端很容易检测到信号开始
  • 多径抗性好:Chirp信号在时延扩展环境下表现优异

我的经验:调试LoRa模块时,如果发现同步不稳定,先检查前导码长度。我曾经在长距离测试中,把前导码从8个symbol增加到12个,同步成功率从70%提升到98%。

2.3 LoRa的调制与解调机制

LoRa的调制方式,官方叫法叫「啁啾扩频调制」。但说白了,就是用Chirp信号的不同起始频率来表示不同的数据符号。

具体怎么做的?

LoRa把整个带宽分成2^SF个频率步进(SF是扩频因子)。每个符号对应一个起始频率。比如SF=7时,有128个可能的起始频率,每个符号可以表示7个bit。

调制过程:

  1. 把要发送的bit数据映射成一个频率偏移值
  2. 生成一个从该频率开始的up-chirp
  3. 发射出去

解调过程:

  1. 接收端用本地生成的down-chirp与接收信号相乘
  2. 做FFT变换
  3. 找到频谱峰值的位置,反推出原始数据
// 伪代码:LoRa解调核心步骤
// 1. 接收信号与本地down-chirp混频
mixed_signal = rx_signal * conj(local_down_chirp)

// 2. FFT变换
fft_result = fft(mixed_signal)

// 3. 找峰值位置
peak_index = argmax(abs(fft_result))

// 4. 映射回数据bit
data_bits = index_to_bits(peak_index, SF)

注意:SF值越大,每个符号携带的bit越多,但符号时间也越长。SF=12时,一个符号的传输时间是SF=7时的32倍。所以速率和距离是矛盾的,需要根据实际场景权衡。

2.4 LoRa的灵敏度与链路预算

LoRa的接收灵敏度,是它最亮眼的数据之一。我见过很多工程师第一次看到-148dBm的灵敏度时,都以为看错了。

灵敏度公式:

灵敏度 = -174 + NF + 10×log10(BW) + SNR_min

其中:

  • -174dBm/Hz:室温下的热噪声基底
  • NF:接收机噪声系数(典型值6dB)
  • BW:带宽(125kHz、250kHz、500kHz)
  • SNR_min:解调所需最小信噪比(SF=12时约-20dB)

算一下:SF=12,BW=125kHz时:

灵敏度 = -174 + 6 + 10×log10(125000) + (-20) = -174 + 6 + 51 - 20 = -137dBm

嗯,这是理论值。实际芯片能做到-148dBm,是因为用了更先进的解调算法。

扩频因子(SF) 灵敏度(dBm) 数据速率(bps) 典型距离
SF7 -123 5470 2-3km
SF9 -131 1760 5-8km
SF12 -137 293 10-15km

链路预算计算

链路预算 = 发射功率 + 发射天线增益 - 馈线损耗 + 接收天线增益 - 接收灵敏度

举个例子:

发射功率20dBm,天线增益2dBi,馈线损耗1dB,接收灵敏度-137dBm

链路预算 = 20 + 2 - 1 + 2 - (-137) = 160dB

这个数值意味着什么?在自由空间传播模型下,160dB的链路预算对应约15-20公里的通信距离。

我曾经帮一个客户做智慧农业项目,要求覆盖5000亩农田。我们算了一下链路预算,选了SF10、125kHz带宽,发射功率17dBm。实际测试下来,最远的一个节点距离网关4.3公里,RSSI在-125dBm左右,链路余量还有12dB。嗯,稳了。

避坑指南:我曾经犯过一个错误——只算了理论链路预算,没考虑天线高度。结果部署后发现,有些节点因为天线高度不够,被农作物遮挡,信号衰减比预期多了15dB。后来我把天线从1.5米升高到3米,问题就解决了。记住:天线高度对LoRa的影响,有时候比发射功率还大

好了,这一章的内容就到这里。扩频原理、Chirp技术、调制解调、灵敏度计算,这些都是LoRa的根基。下一章我们会讲LoRa的帧结构和数据包格式,到时候会用到今天讲的这些知识。

有什么问题,欢迎在课程群里讨论。我看到了会回复。