第2章 物理层基础:LoRa调制技术原理
各位同学,欢迎来到物理层这一章。说实话,很多做LoRaWAN应用的朋友,对物理层都是一知半解。他们觉得「反正有现成的模块,调个参数就能用」。嗯,这话没错,但如果你不懂物理层,遇到信号差、距离近、功耗高的问题时,就只能瞎猜了。
我个人习惯是,先搞懂底层原理,再去调参数。这样出了问题,心里有数。今天我们就来聊聊LoRa的物理层,也就是它最核心的调制技术。
2.1 LoRa调制技术原理
LoRa调制,说白了是一种扩频技术。它用的是CSS(Chirp Spread Spectrum,啁啾扩频)。你想想看,传统的FSK调制,是把数据调制到固定的频率上。而LoRa不一样,它把数据调制到一个连续变化的频率上——这个频率随时间线性变化,就像鸟叫声一样,所以叫「啁啾」。
为什么会这样设计?因为这种信号抗干扰能力极强。我在项目中遇到过,在同一个频段上,FSK信号被Wi-Fi干扰得完全没法用,但LoRa信号却能正常通信。这就是扩频的魅力。
核心要点:LoRa调制本质上是将数据信息编码到 chirp 信号的起始频率偏移上。接收端通过检测 chirp 的起始位置来解调数据。
2.2 扩频因子与数据速率
扩频因子(Spreading Factor,SF)是LoRa最关键的参数。它表示每个数据比特用多少个 chirp 符号来传输。
举个例子:SF7表示每个比特用2^7=128个chirp符号;SF12表示每个比特用2^12=4096个chirp符号。你想想看,同样的数据,SF12用了更多的符号来传输,自然就更抗干扰、传得更远。但代价是什么?速度慢了。
| 扩频因子 | chirp符号数/比特 | 相对数据速率 | 典型应用场景 |
|---|---|---|---|
| SF7 | 128 | 最快 | 近距离、高数据量 |
| SF8 | 256 | 较快 | 中等距离 |
| SF9 | 512 | 中等 | 一般覆盖 |
| SF10 | 1024 | 较慢 | 远距离 |
| SF11 | 2048 | 慢 | 超远距离 |
| SF12 | 4096 | 最慢 | 极限距离、穿透场景 |
我记得有一次做智慧农业项目,传感器在田里,网关在几百米外的机房。一开始用了SF7,数据包丢失率高达30%。后来改成SF10,丢包率降到1%以下。但代价是,同样的数据量,发送时间从原来的0.1秒变成了0.8秒。这就是典型的「用时间换距离」。
实战建议:不要固定使用一个SF值。LoRaWAN标准支持自适应数据速率(ADR),让网关根据信号质量自动调整SF。我建议你开启ADR,除非你的应用场景非常固定。
2.3 带宽与编码率
带宽(Bandwidth)决定了chirp信号的频率变化范围。LoRa常用的带宽有125kHz、250kHz和500kHz。
带宽越大,chirp变化越快,数据速率越高。但带宽大了,噪声也进来了更多,灵敏度会下降。这是个典型的取舍问题。
编码率(Coding Rate,CR)是另一个参数。它表示数据中冗余校验位的比例。LoRa支持4/5、4/6、4/7、4/8四种编码率。
- CR=4/5:每4个数据比特加1个校验比特,开销最小,速率最高
- CR=4/8:每4个数据比特加4个校验比特,纠错能力最强,速率最低
我曾经在工厂环境部署LoRa网关,现场有大量电机产生的电磁干扰。一开始用CR=4/5,误码率很高。后来改成CR=4/8,虽然速率降了一半,但通信稳定多了。嗯,这里要注意:编码率不是越高越好,要根据实际干扰情况来选。
避坑指南:我曾经犯过一个错误——为了追求速率,把带宽设成500kHz,编码率设成4/5。结果在郊区部署时,距离稍微远一点就断连。后来才意识到,带宽越大,接收灵敏度越差。远距离场景,老老实实用125kHz带宽。
2.4 灵敏度与链路预算
接收灵敏度,说白了就是接收机能识别的最小信号强度。LoRa的灵敏度可以做到-130dBm甚至更低,这比传统的FSK(-110dBm左右)强太多了。
灵敏度跟扩频因子、带宽直接相关:
- SF每增加1,灵敏度提升约2-3dB
- 带宽减半,灵敏度提升约3dB
链路预算(Link Budget)是衡量整个通信链路能承受的最大衰减。计算公式很简单:
链路预算 = 发射功率 + 发射天线增益 - 发射馈线损耗 + 接收天线增益 - 接收馈线损耗 - 接收灵敏度
举个例子:发射功率20dBm,发射天线增益2dBi,接收天线增益2dBi,接收灵敏度-130dBm,馈线损耗忽略不计。那么链路预算 = 20 + 2 + 2 - (-130) = 154dB。
这个154dB意味着什么?在自由空间传播模型中,154dB的链路预算大约对应10-15公里的通信距离(视距)。当然,实际环境有建筑物、树木遮挡,距离会大打折扣。
关键公式:链路预算每增加6dB,理论通信距离翻倍。所以,把SF从7提升到12(灵敏度提升约15dB),距离可以提升约2.5倍。
我建议你在做项目规划时,先算一下链路预算。别等到设备装好了才发现信号不够。我曾经有个客户,在山区部署水位监测,按理论计算链路预算够用,结果实际安装时发现山体遮挡严重,信号衰减比预期多了20dB。最后不得不加中继器。
2.5 各参数之间的权衡关系
LoRa物理层的这几个参数——SF、BW、CR——不是独立存在的。它们共同决定了三个关键指标:数据速率、通信距离、功耗。
数据速率公式(简化版):
数据速率(bps) = SF × (BW / 2^SF) × CR
你看,SF在分子和分母里都出现了。SF越大,分母增长更快,所以速率反而下降。这就是为什么SF12的速率比SF7慢很多。
我个人的经验是:
- 城市密集区:用SF10-SF12,125kHz带宽,CR=4/6。牺牲速率,保证穿透力
- 郊区开阔地:用SF7-SF9,125kHz或250kHz带宽,CR=4/5。追求速率和距离的平衡
- 工业现场(强干扰):用SF9-SF11,125kHz带宽,CR=4/8。抗干扰优先
小技巧:如果你不确定怎么配参数,先用LoRaWAN的默认配置(SF12,125kHz,CR=4/5)跑起来。等实际测试数据出来了,再根据信号强度和误码率慢慢优化。别一上来就想调到最优,那是不现实的。
好了,物理层的基础知识就讲到这里。下一章我们会进入MAC层,看看数据是怎么在设备和网关之间可靠传输的。记住,物理层是地基,地基打不牢,上层建筑再漂亮也没用。