我基于以下几点考虑设定LORA通信模块的配置参数,
1) 带宽(BW),扩频因子(SF)与接收灵敏度的关系
根据SX1278的规格书,带宽越低,扩频因子越大,接收灵敏度越高,通信距离越远。
当带宽为7.8kHz,扩频因子为12时,接收灵敏度可以达到最大的-148dBm。
dBm是相对于1mW的相对单位,-148dBm对应的功率为10^(-148/10)*1mw;
而当带宽为125kHz,扩频因子为7时,接收灵敏度仅为-123dBm;
根据空间传播损耗公式:L(dB)=32.45+20logD(km)+20logF(MHz)
当发射功率为20dBm,即10^(20/10)=100mW时,
如果接收灵敏度为-123dBm,则在空旷环境的最远接收距离约为:
10^{[20+123-32.45-20*log(433)]/20}=778km。
BW=7.8kHZ, SF=12时的通信距离比BW=125kHZ, SF=7时的距离增加了
10^((148-123)/20)=17.8倍;
2) 定时唤醒检测信道的待机功耗
符号时间Ts与带宽BW、扩频因子SF的关系为:
Ts=2^SF/BW
LORA模块在进入CAD检测模式之后,一旦检测完成CAD的检测,立即自动进入低功耗的模式,在CAD检测过程分为两个阶段,第一阶段为接收无线信号,第二阶段为信号处理分析,
第一阶段的消耗的电流即为接收状态的工作电流IRx,大概为12mA,第二阶段电流稍低,大概为8mA;
而整个CAD检测过程大概执行1-2个符号时间;
如果定时唤醒周期为T,在睡眠状态下MCU和LORA模块的待机电流为Istandby,
则平均待机电流约为:(IRX*2*Ts)/T+Istandby;
MCU的待机电流约为20uA, LORA模块的待机电流约为1uA;
如果唤醒周期为3s时,
当BW=7.8kHZ, SF=12时,符号时间为Ts=525ms,此时,平均待机电流为4.2mA;
当BW=125kHZ, SF=7时,符号时间为Ts=1.024ms,此时,平均待机电流为29uA;
如果使用5Ah的电池供电,前者的待机时间为49天,而后者的待机时间为7096天;
3) 常供电的LORA网关的前导码的长度
当LORA网关往用电池供电的分控发射数据时,分控是以T为周期自动唤醒检测信道占用,双方并没有收发时钟的同步,有可能在分控进入睡眠之后,网关立即开始发送数据,分控在T秒之后唤醒检测信道占用,此时LORA网关还需要发射前导码,否则分控检测不到信道占用。
所以网关发射的前导码长度必须要大于分控的睡眠周期,
另外,由于网关并不进入睡眠,分控往网关发送数据时,前导码的长度只要能大于网关程序调度的周期即可,而为了避免接收到检测接收其它分控的数据,导致分控频繁被唤醒而消耗过多电量,
在唤醒检测CAD,可以通过检测连续检测到多次的空中信道被占用之后才唤醒MCU进入运行数据接收和逻辑处理程序。
网关发射的前导码长度需要>分控的睡眠时间+n次CAD检测去抖动*分控前导码长度;
综合考虑,取网关的前导码长度为4s,分控的睡眠时间为3s,CAD检测去抖动次数为10,分控的前导码长度约为10ms;