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的物理层帧结构,我画个图给大家看:
帧结构里,有几个关键点我要强调:
- 前导码长度:默认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越大,速率越快 |
这三个参数怎么配?我一般遵循这个原则:
- 先定带宽:大多数场景用125kHz。250kHz和500kHz留给需要高速率的场景。
- 再定SF:根据距离需求选。保守点就SF10,激进点SF7。
- 最后调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的原理、对比、帧结构、参数配置,这些是后面所有调优的基础。搞懂了这些,后面讲天线匹配、阻抗调谐、组网策略,你才能听得明白。