LoRA基础知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38134493/article/details/72724600

内容原创,未经本人同意请勿转载。联系本人:jianshu_kevin@126.com


1,什么是LoRa

LoRaWAN是LoRa Wide Area Network(LoRa广域网)的简称,是基于LoRa技术的一种通信协议。它主要包括三个层次的通信实体:LoRa终端、LoRa网关和LoRa服务器。

遵循Low-Rate Wireless Personal Area Networks(IEEE802.115.4-2011)协议

2,名词解析

MCPS

MAC Common Part Sublayer
作用:data transmissions and data receptions

MLME

MAC layer management entity
作用:manage the LoRaWAN network

MIB

MAC information base
作用:store important runtime information and holds the configuration of the LoRaMAC layer.

扩频因子(SF)

LoRa扩频调制技术采用多个信息码片来代表有效负载信息的每个位。扩频信息的发送速
度称为符号速率(Rs),而码片速率与标称符号速率之间的比值即为扩频因子,其表示每
个信息位发送的符号数量。LoRaTM调制解调器中扩频因子的取值范围见下表。
扩频因子为6时,LoRa的数据传输速率最快

扩频调制带宽(BW)

增加带宽,可以提高有效数据速率以缩短传输时间,但是会牺牲接收灵敏度。

纠错码率

提高纠错编码率,会产生额外的传输开销,但是会提高链路的可靠性。编码率可以随着信道条件的变化而变化。

针对特定的应用,可以通过调整扩频因子,调制带宽以及纠错码率这个三个关键参数,可在链路预算、抗干扰性、频谱占用度及标称数据速率之间达到平衡。
参考手册中的“LoRa调制技术”进行优化。《SX1276_DS_中文_v1.1.pdf》P28页

CAD

channle active deteact 信道活动检测器。
信道活动检车模式旨在以尽可能高德功耗,检测无线信道上的LoRa前导码。
CAD检测时长为扩频因子的函数

Class A Class B Class C工作模式

Class A B C介绍

  • Class A
    双向通信终端设备。这一类的终端设备允许双向通信,每一个终端设备上行传输会伴随着两个下行接收窗口。终端设备的传输槽是基于其自身通信需求,其微调是基于一个随机的时间基准(ALOHA协议)。A所属的终端设备在应用时功耗最低,终端发送一个上行传输信号后,服务器能很迅速地进行下行通信,任何时候,服务器的下行通信都只能在上行通信之后。

  • Class B
    具有预设接收槽的双向通信终端设备。这一类的终端设备会在预设时间中开放多余的接收窗口,为了达到这一目的,终端设备会同步从网关接收一个Beacon,通过Beacon将基站与模块的时间进行同步。这种方式能使服务器知晓终端设备正在接收数据。

  • Class C
    具有最大接收槽的双向通信终端设备。这一类的终端设备持续开放接收窗口,只在传输时关闭。

ADR

Adaptive Datarate

When ADR is off this setting is the fixed datarate that will be used by the application.
When ADR is on this setting is the initial datarate used by the application.
如果ADR打开,服务器可以通过MAC命令控制设备的速率,已匹配当前的网络情况,达到最优传输效果。如果ADR=0,服务器无视收到的信号质量,不对终端数据速率进行调整。

如果终端的数据速率经过服务器优化比默认值大,那节点就要定期检查保证服务器能够收到上传的数据。 终端上行的帧号每增加一次(重复发送不增加帧号)的同时,ADR_ACK_CNT + 1。ADR_ACK_DELAY 时间之内收到下行消息:ADR_ACK_CNT = 0(重置)。否则ADR_ACK_CNT 继续根据前面规则处理 。ADR_ACK_CNT >= ADR_ACK_LIMIT(一共用时:ADR_ACK_LIMIT + ADR_ACK_DELAY)就切换到更低的数据速率上(无线广播范围的距离更长)重复上述过程,每次终端设备达到 ADR_ACK_LIMIT 就会再次降低自己的数据速率。如果设备使用默认的数据速率就不需要设置 ADRACKReq ,这种情况下任何操作都不会改善连接范围(增加连接距离)。在此期间的下行数据不需设置ACK位,因为终端在等待接收期间收到任何应答都表示网关还能接收来自该设备的上行数据。

问题:如果终端和服务器的速率不匹配,那能否进行通信??

ALOHA
class A中用的传输间隔计算算法

3,LoRa建立连接过程

向MLME发送建立连接请求,等待应答
请求包含以下信息:

  • NetWork Indentifier
  • Device Address
  • NetWork session key
  • Application session key

4,协议中的问题

  • 计算传输时间

    符号速率:Rs=BW2SF
    BW 带宽
    SF 扩因子
    传输时间: Ts=1Rs
    前导码传输时间:Tpreample=(npreample+4.25)Tsym
    npreample表示前导码长度

  • 接收方在前导码长度未知的情况下,如何判断前导码已经接受完成

  • 前导码中包含哪些信息
  • 接收到有效前导码后,接收通路增益就被设定。为什么?前导码包含通路增益配置?
  • 会有物理分包吗,如何分包的?
  • 连续读取模式下,如果整包长度超过了软件设置的FIFO长度,会如何?
  • CAD检测和接收模式,有何区别?
  • 如何设置监听模式中接收前导码的时间T2
  • 如何解决多个局域网之间的相互干扰?

    commnuication between end-devices and getways is spread out differnt frequence and data rates

  • ALOHA算法是什么?

  • 如果终端和服务器的速率不匹配,那能否进行通信??
  • 什么时候使用跳频(FHSS)
    单个包传输时间可能超过相关法规允许的最大传输时间,就需要跳频。433MHZ,没有跳频
    // Duty cycle
#if defined( USE_BAND_433 )
    DutyCycleOn = false;
#elif defined( USE_BAND_780 )
    DutyCycleOn = false;
#elif defined( USE_BAND_868 )
    DutyCycleOn = true;
#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID )
    DutyCycleOn = false;
#else
    #error "Please define a frequency band in the compiler options."
#endif

5,协议重点

  • 单一接收模式,只有在数据包到达时间窗口已知的情况下才使用

    是不是就说,如果接收窗口被设置过小,还没来得及全部接收完成就产生RxDone中断了??

  • 支持软件设置有效数负载的前几个字节过滤,如果被成功过滤,那么芯片将切换回睡眠模式。

6,顶级定续器 (监听模式)

定时唤醒,电路大部分时间处于空闲模式,即仅开启RC振荡器。定时唤醒后寻找输入信号,如果检测到有效信号则保持开启状态,并对数据进行分析。相反,则会关闭,直到下个周期唤醒

T1 空闲模式
T2 接收模式
为了最大限度的降低功耗,T2必须能够刚好满足检测前导码的要求
为确保数据包检测顺利并最大限度降低接收机功耗,接收到的数据包前导码长度应为 T 定时器
1 +2xT 定时器 2 。

7,接收相应时间

接收间隔设置的时间设置的比较长,有可能导致数据收不到,因为从实测结果看,就是定时检查寻导码。如果不是正好接收的时候发送,就可能收不到。

9,基于STM8的lora透传代码

代码经过测试,可以实现透传。索要代码请联系博主本人

8,参考文献

中文规格书连接

Firmware Driver V3.3 and LoRaWAN Stack
LoRa标准以及代码解读
LoRa代码
各种mesh网络性能比较
Wave Mesh网络比较靠谱
LoRa全面解析–推荐阅读
OpenLoRa–协议和应用
LoRaWan协议中文版
lora比特率计算方法

没有更多推荐了,返回首页