LoRa 扩频通信
之前在学习蓝牙的时候,我了解到了蓝牙的物理层是基于 2.4GHz 频段的 80M 带宽内分割出来很多个信道,把比特调制到信道的载波频率上,进行基本的链路通信,同时为了增强抗干扰性,蓝牙还是用跳频机制,也就是通信的双方约定好,先在哪个信道通信,下一个时段在另一个信道上通信。
什么是扩频通信呢?
LoRa 的调制与解调也就是如何在物理波形和比特数据之间进行转换。LoRa 使用 CSS (Chirp Spread Spectrum)线性扩频调制,频率线性扫过整个带宽,因此抗干扰极强,对多径和多普勒效应的抵抗也很强。
LoRa 的基本通信单元是 linear chirp,也即频率随时间线性增加(或减小)的信号。我们将频率随着时间线性增加的 chirp 符号叫做 upchirp,将频率随着时间线性减小的 chirp 符号叫做 downchirp。
我们知道了线性扩频就是一个线性递增的频率,那么回到最初的问题,符号 0 和 1 是怎么来表示的呢?LoRa 的做法是在固定带宽内容,通过在频域循环平移 chirp 进行数据的编码,不同的起始频率代表不同的数据。如在带宽 B 内四等分标定四个起始频率,我们可以得到 4 种类型的符号,分别表示 00,01,10,11。将从最低频率扫频到最高频率的 chirp 符号称为 basic upchirp。所以在接收端,只需要将这个起始频率计算出来,就可以计算出每一个 chirp 对应的比特数据。
LoRa 规定了一个参数 SF(Spreading Factor,扩频因子)。当 SF = 2 时,我们获得 4 个起始频率,编码为 00,01,10,11。那么如果 SF = 3,就可以得到 8 个起始频率了。因此,SF 越大,我们在整个带宽上分出的起始频率点就越多,当然也不能无限多,频率的分辨率会不够。如果我们固定的选择一个带宽 BW,那么 SF 越大,也就意味着 T 越大,也就是发送一个符号的时间越长。因此 SF 用于调节传输速率和接收灵敏度,越大的 SF 速率越小但支持更远的通讯距离。
用声音来打个比方,蓝牙的调制方式就是把不同的声音定义成 0 和 1 来进行传递。而 LoRa 的扩频就相当于我们通过唱一首歌来通信,把符号分成多个,把从不同的段开始唱来表示不同的符号。