1、LoRa技术基础:LoRa是什么?LoRa的物理层原理、扩频因子与带宽的关系

大家好,我是你们的讲师。今天咱们正式开讲LoRa低功耗策略的第一章。

说实话,我最早接触LoRa是在一个智慧农业的项目里。客户要求把传感器丢到田里,电池撑三年。当时我第一反应是——这不可能吧?后来深入研究LoRa,才发现它确实有两把刷子。

好,咱们先搞清楚最基础的问题:LoRa到底是什么?

1.1 LoRa是什么?

LoRa,全称是Long Range,长距离无线通信技术。它由法国公司Cycleo开发,后来被Semtech收购。嗯,现在市面上绝大多数LoRa芯片都是Semtech家的。

你可能会问:它和Wi-Fi、蓝牙有什么区别?

说白了,LoRa就是为远距离、低功耗、低速率场景设计的。它不追求传得快,追求传得远、省电。我做过一个测试,在开阔环境下,LoRa能传5-10公里。Wi-Fi呢?几十米就歇菜了。

LoRa工作在免授权频段,比如中国的470-510MHz,欧洲的868MHz,美国的915MHz。这意味着你不用申请频谱牌照,直接就能用。

核心特点总结:

  • 传输距离:城市1-3公里,郊区5-10公里,开阔地15公里以上
  • 功耗:接收电流约10mA,休眠电流低至2μA
  • 速率:0.3kbps - 50kbps,看扩频因子和带宽配置
  • 频段:Sub-1GHz免授权频段

1.2 LoRa的物理层原理

LoRa的物理层用的是扩频技术,具体来说是CSS(Chirp Spread Spectrum,啁啾扩频)。

什么是啁啾?我打个比方。你听过鸟叫吧?鸟叫声的频率是变化的,从低到高或者从高到低。LoRa的信号就是这种频率连续变化的波形,叫chirp信号。

为什么用这种技术?

原因很简单:抗干扰能力强。传统的FSK(频移键控)信号,遇到同频干扰就完蛋。但LoRa的chirp信号,因为频率一直在变,干扰信号很难把它完全压住。我在一个工厂项目里测试过,旁边有大功率电机在转,FSK通信直接断连,LoRa还能稳定收发数据。

LoRa的物理层帧结构是这样的:

| 前导码 | 同步字 | 物理层头部 | 净荷 | CRC |
  • 前导码:接收机用来检测信号、同步时钟的。长度可配置,默认12个符号。
  • 同步字:区分不同网络的标识。比如公共网络用0x34,私有网络可以自定义。
  • 物理层头部:包含净荷长度、编码率等信息。
  • 净荷:你要传的数据。
  • CRC:循环冗余校验,检测数据有没有传错。

个人经验:前导码长度不是越长越好。我见过有人把前导码设成20个符号,结果接收机每次唤醒都要花很长时间去检测,功耗反而上去了。一般场景12个符号就够用。

1.3 扩频因子与带宽的关系

好,这部分是重点。扩频因子(SF,Spreading Factor)和带宽(BW,Bandwidth),是LoRa最核心的两个参数。

扩频因子(SF)

扩频因子表示每个数据位用多少个chirp符号来编码。SF的取值范围是7到12。

  • SF7:每个bit用2^7=128个符号编码
  • SF12:每个bit用2^12=4096个符号编码

你想想看,SF越大,每个bit用的符号越多,信号就越容易被接收机从噪声里捞出来。所以SF越大,灵敏度越高,传得越远。

但代价是什么?速率变慢。因为传一个bit需要更多时间。

带宽(BW)

带宽就是chirp信号扫过的频率范围。常见的有125kHz、250kHz、500kHz。

  • 带宽越大,chirp信号变化越快,速率越高
  • 带宽越大,噪声也越多,灵敏度会下降

它们的关系:

数据速率(DR)的计算公式:

DR = SF * (BW / 2^SF) * (4/4+CR)

其中CR是编码率,通常取1(即4/5)。

我直接给你一个速查表:

扩频因子 带宽(kHz) 数据速率(bps) 灵敏度(dBm) 典型距离
SF7 125 5468 -123
SF9 125 976 -131
SF12 125 293 -137
SF7 500 21875 -117
SF12 500 1172 -131

注意:我曾经在一个项目中,为了追求最远距离,把SF设成12,带宽设成125kHz。结果数据速率只有293bps,传一个100字节的包要将近3秒。节点功耗反而上去了,因为发射时间太长。所以不是SF越大越好,要权衡。

实际选型建议:

  • 近距离(几百米内):用SF7,带宽250kHz或500kHz,速率高,省电
  • 中距离(1-3公里):用SF9,带宽125kHz,平衡速率和距离
  • 远距离(5公里以上):用SF12,带宽125kHz,但要做好功耗预算

嗯,这里要注意一点。LoRa有个特性叫正交性。不同SF的信号之间是近似正交的,也就是说SF7的信号不会干扰SF12的信号。这在组网时很有用,可以同时接收不同SF的数据。

我个人习惯,在设计节点时,先把SF和BW的配置做成可调的。这样在现场测试时,可以根据实际环境灵活调整。我遇到过好几次,理论计算觉得SF9就够了,结果现场有遮挡,不得不改成SF11。

好,第一章的内容就到这里。LoRa的基础原理搞清楚了,下一章咱们聊聊LoRaWAN协议栈,看看数据是怎么从节点传到服务器的。