LoRa作为IOT的技术实现中的一种,伴随着使用该技术的产品和项目逐渐增多,其优势已逐步被人们所熟知 -- 长距离与低功耗。比较适用于对数据传输量较少,传输频率不高的场合。
LoRa原理简单的说就是因为采用了扩频调制技术,从而在同等的功耗下取得更远的通信距离。具体请看其他文章介绍,本文主要偏向于实际应用。
说明:本人经验有限,此文仅供参考,如有错误请谅解。
目前实现LoRa的硬件有Semtech的SX1272/76/78/79系列,通常作为节点端使用,还有SX1301 SX1255通常作为网关端使用。
SX127x原理框图
Semtech拥有LoRa 的IP,目前似乎只能他们自己生产,除非他们授权给其他公司,例如HopeRF.。市场上也有大量的模组,封装了SX12xx的芯片,方便客户快速开发产品原型和验证。在一些对体积成本不敏感的项目上可以直接使用。
如果需要读datasheet,建议大家读英文原版的,中文翻译的资料有些部分有问题。
如果产品比较简单,例如只用来进行点对点通讯,或者一对几个节点这种情况,就不需要网关端了。几个SX1278通过外部MCU实现简单的通讯协议,进行数据交互。
相关的技术参数信息,比如链路预算,灵敏度,功耗这些可以看datasheet。
注意一下不同芯片对应的频率是不同的,在中国主要使用CN470和CN780标准,对应的芯片建议使用SX1278。
在使用SX1278的过程中,会发现它的寄存器非常多,而且还分为FSK/OOK和LoRa两部分互相独立的寄存器。下面根据本人的经验就LoRa模式下的几个关键寄存器给予说明,这几个寄存器如配置错误会导致通讯失败。
频率设置在0x06~0x08寄存器:RegFrMsb、RegFrMid、RegFrLsb
计算公式为:
比如需要设置频率到470M,那么Frf= 470*2(19次幂)/32=0x758000,设置寄存器RegFrMsb = 0x75;RegFrMid=0x80;RegFrLsb=0x00
输出功率的配置寄存器有两个,一个是RegPaConfig(0x09);另一个是RegPaConfig(0x4D)
如果想设置到最大20dBm的话,参考下面的设置。
SX1276Write( REG_LR_PADAC, 0x87); //high power
SX1276Write( REG_LR_PACONFIG, 0x8F);
根据原理图,控制GPIO对发送和接收进行配置,保证在芯片发送期间PA_BOOST输出到天线,接收时RFI_LF连接到天线
lora和lorawan两种情况下,SynvWord寄存器对应0x12和0x34
sx1278在接收数据期间会先接收前导码,如果在设置的时间内接收不到变进入睡眠,如果接收到前导码则开始接收后面的数据。设置该寄存器确定接收前导码的查长度。
在lorawan的模式下一般设置到8
设置接收的窗口时间长度,最长是1023个symbols时间,在这个时间内如果接收不到前导码,RxTimeout产生中断,芯片进入休眠。调试期间可以尽量设置大一些,如果芯片定时精度不够有可能会错过接收窗口导致数据无法接收。后期系统稳定后应当尽可能缩小该值以达到降低功耗的目的。
其他寄存器例如,BW,coderate,datarate等,接收发送双方保持一直即可。
Sx1278有6个中断输出,最少需要使用Dio0和Dio1两个中断,注意中断是高电平有效。
低电平有效