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的扩频就相当于我们通过唱一首歌来通信,把符号分成多个,把从不同的段开始唱来表示不同的符号。