1. LoRa技术概述:从原理到实战

各位同学好。我是老张,做了十几年嵌入式无线通信。今天咱们聊聊LoRa。

LoRa这个词,做物联网的应该都不陌生。但说实话,很多人对它的理解停留在“远距离、低功耗”这六个字上。这没错,但不够。你想想看,如果只知道这些,你怎么做选型?怎么调优?出了问题怎么排查?

所以第一章,咱们把LoRa的底裤扒开看看。从原理到帧结构,从对比到实战,一次讲透。

1.1 LoRa技术原理:它凭什么能传那么远?

LoRa的全称是Long Range,长距离。它用的是扩频技术,具体来说是线性调频扩频(CSS,Chirp Spread Spectrum)。

传统FSK(频移键控)是把数据调制到载波频率的跳变上。LoRa不一样,它把信号能量“抹平”在一个很宽的频带里,用频率随时间线性变化的Chirp脉冲来承载信息。

这样做的好处是什么?

  • 抗干扰强:窄带干扰只影响一小部分扩频信号,整体还能解调。
  • 灵敏度高:信号可以淹没在噪声以下,接收机照样能解出来。
  • 多径容忍:Chirp信号对多径衰落不敏感。

核心指标:扩频因子(SF,Spreading Factor)

SF从7到12,每增加1,灵敏度提升约2-3dB,但传输时间翻倍。我一般建议:
近距离(<1km)用SF7,远距离(>5km)用SF12。别一上来就SF12,那是在浪费信道资源。

我记得有个项目,客户非要全用SF12,结果网关一天到晚碰撞丢包。我过去一看,最近的两个节点才200米。换成SF7,问题全解决了。嗯,这就是典型的不懂原理瞎配置。

1.2 LoRa与FSK/OOK对比:为什么选LoRa?

很多老工程师习惯用FSK或OOK,觉得简单可靠。没错,但场景不同。

我整理了一张对比表,大家一看就明白:

参数 LoRa (CSS) FSK OOK
灵敏度 -148dBm (SF12) -120dBm 典型 -110dBm 典型
链路预算 168dB (20dBm+148dBm) 140dB 典型 130dB 典型
抗干扰 强(扩频增益) 中 弱
功耗 低(但传输时间长) 低 最低
数据速率 0.3kbps - 50kbps 1kbps - 1Mbps 1kbps - 100kbps
距离(城市) 2-5km 0.5-1km 0.2-0.5km
成本 中高 低 最低

看到了吧?LoRa的灵敏度比FSK高了将近30dB。30dB是什么概念?功率差1000倍。也就是说,FSK收不到的信号,LoRa还能稳稳解调。

但LoRa也有短板:速率慢。传一个字节,SF12下可能要几百毫秒。所以它不适合视频、语音,只适合传感器数据——温度、湿度、开关量这些。

我的选型建议:

  • 距离<1km,数据量小:FSK够用,成本低。
  • 距离>1km,穿墙多:LoRa是唯一选择。
  • 超低功耗唤醒:OOK做唤醒接收机,LoRa做主通信。

1.3 LoRa物理层帧结构解析

搞通信的,不懂帧结构就是瞎搞。LoRa的物理层帧结构,我画个图给大家看:

LoRa物理层帧结构 LoRa物理层帧结构 前导码 Preamble 同步头 Sync Word PHDR 物理头 PHDR_CRC 头校验 Payload 数据载荷 各字段说明: • 前导码:用于接收机同步,长度可配置(6-65535个符号),默认12个符号。 • 同步头:用于区分不同网络,默认0x12,可自定义。 • PHDR:物理层头,包含编码率、载荷长度、CRC使能等信息。 • PHDR_CRC:物理层头的CRC校验,4字节。 • Payload:用户数据,最大长度取决于SF和编码率。

帧结构里,有几个关键点我要强调:

  • 前导码长度:默认12个符号。如果节点移动性强,可以加长到16-20个符号,给接收机更多同步时间。但代价是空中时间变长。
  • 同步字(Sync Word):公共频段用0x12,私有网络可以改。我见过有人不改同步字,结果两个不同网络互相干扰。改一下,成本为零,收益巨大。
  • PHDR和PHDR_CRC:显式模式下才有。如果载荷长度固定,可以用隐式模式,省掉这两个字段,提升传输效率。

避坑指南:

我曾经在一个项目中,为了省那几毫秒的传输时间,把前导码从12改成了6。结果在强干扰环境下,网关经常收不到数据。后来改回12,问题消失。前导码不是越长越好,但也不是越短越好。要根据实际环境测试。

1.4 关键参数:扩频因子、编码率、带宽

这三个参数决定了LoRa的性能。我直接给结论:

参数 取值范围 对距离的影响 对速率的影响
扩频因子 (SF) 7, 8, 9, 10, 11, 12 SF越大,距离越远 SF越大,速率越慢
编码率 (CR) 4/5, 4/6, 4/7, 4/8 CR越低,纠错越强 CR越低,有效数据越少
带宽 (BW) 125kHz, 250kHz, 500kHz BW越小,灵敏度越高 BW越大,速率越快

这三个参数怎么配?我一般遵循这个原则:

  1. 先定带宽:大多数场景用125kHz。250kHz和500kHz留给需要高速率的场景。
  2. 再定SF:根据距离需求选。保守点就SF10,激进点SF7。
  3. 最后调CR:干扰少用4/5,干扰多用4/8。

一个实用公式:

数据速率 (bps) = SF × (BW / 2^SF) × CR

举个例子:SF=7, BW=125kHz, CR=4/5
速率 = 7 × (125000 / 128) × 0.8 ≈ 5468 bps

嗯,不到6kbps。所以LoRa不适合传大包。

1.5 实际项目中的选型建议

最后,结合我自己的经验,给大家一些选型建议:

  • SX1276/SX1278:Semtech的经典款,稳定可靠,资料多。适合大多数项目。
  • SX1262/SX1268:新一代,功耗更低,支持更宽的电压范围。适合电池供电。
  • LLCC68:低成本的LoRa收发器,只支持SF5-SF9。适合近距离、低成本场景。

我个人习惯用SX1262。为什么?因为它有DIO2作为RF开关控制,省一个GPIO。而且它的CAD(信道活动检测)比SX127x快很多,适合低功耗监听。

好了,第一章就到这里。LoRa的原理、对比、帧结构、参数配置,这些是后面所有调优的基础。搞懂了这些,后面讲天线匹配、阻抗调谐、组网策略,你才能听得明白。