LoRa协议学习总结

简介: 因项目的需要而接触Lora,为什么会有Lora这样一门技术呢,大多应用在什么样的场景中?故此学习了一番,通过查找各方资源,总结了一下,如若有什么错误的地方,望各位读者批评指正。

简介

LoRa是什么?LoRa是LongRange的简称,是应用在物联网的低功耗广域网的一种传输技术。具有远距离通讯、低功耗等特点,代价就是传输速率,速率越低,传输的距离就会越远。基于线性调频扩频技术,保持了FSK调制相同的低功耗特性,额外增加了通信距离。因此使用LoRa技术,能够以低的发射功率获得更远的传输距离。

1、应用举例

LoRa是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线技术。主要在全球免费频段运行,包括433/470/868/915MHz。由于LoRa技术具有远距离、低功耗、低成本、多节点的特性。多数应用在智能建筑、智慧城市等应用领域。

例如智能水表的应用就很好的利用了LoRa技术。

下面就来介绍一下智能水表的抄表,大致分为三个部分:水表、LoRa模块、网关。

水表的功能是正转流量统计、倒转流量统计、磁干扰检测、应急关阀和无线传输数据。LoRa模块通过与水表的对接将水表采集的数据进行转发。LoRa网关的主要工作是接收服务指令,对水表进行管理、数据采集以及上传,主要作用是用于读取水表数据,水表收到抄表指令后会将采集的数据返回到网关中,网关再将数据返回到服务器,从而实现无线抄表的流程。大致的通讯过程见下图(引用)。

image.png

2、工作频段

LoRa在中国部署的最佳免费频段有两个:CN779-787(最大发射功率仅10dBm)、CN470-510(最大发射功率可达17dBm)。

96路上行,470.3 MHz 每 200 kHz递增一个到 489.3 MHz,SF7~SF12 4/5
48路下行,500.3 MHz 每 200 kHz递增一个到 509.7 MHz,SF7~SF12 4/5

image.png

3、扩频技术

由于LoRa采用了线性扩频技术,不同传输速率的通信之间不会互相干扰。网络服务器通过一种速率自适应ADR方案控制终端设备的传输速率。

Chirp的特点是信号的频率以一定的规律变化,而FSK的信号只会在两个频点切换。Chirp的信号时域图如下(引用):

image.png

这种线性扩频技术能极大限度地共享相同的频道资源。每套系统都具有与众不同的扩展序列来减少来自其他设备的干扰,只有具有与发射者相同扩展序列的接收者才可以重组或压缩扩频传输信号来获得其中加载的有效信息。即使是多套扩频设备使用同一个频道在同一地区进行信号传输,只要采用不同的扩频序列,就不会相互干扰。

LoRa调制的核心思想是使用这种频率的变化的模式来调制基带信号,Chirp变化的速率称之为扩频因子。扩频因子越大,传输的距离越远,代价是数据速率。

4、数据通讯

LoRaWAN网络架构是一个典型的星形拓扑结构,在这个网络架构中,LoRa网关是一个透明传输的中继,连接终端设备和服务器。

4.1入网过程

LoRa设备支持两种入网方式,OTAA(Over-The-Air Activation)无线激活和ABP(Activation By Personaliztion)手动激活。

OTAA入网:

入网的过程中涉及两类消息,join-request、join-accept;

join-request入网请求由终端设备发起,在设备发起请求前,需要配置好设备的三要素(AppEUI、DevEUI、AppKey),由服务端开发商提供,其中AppEUI是应用的EUI,DevEUI是节点的长地址,AppKey服务器与终端设备事先存好,用于对join-accept消息解密使用。

入网请求消息格式如下:

| MHDR  | APPEUI | DevEUI | DevNonce | MIC   |
| ----- | ------ | ------ | -------- | ----- |
| 1字节 | 8字节  | 8字节  | 2字节    | 4字节 |

务器收到join-request入网请求的消息后在服务器端会产生一个随机的AppNone,与NetID、DevAddr一起通过join-accept消息下发给终端设备。
注意的是下行的join-accept消息数据是加密的,需要存于终端与服务器两边的AppKey对其进行解密。
保存在服务端的DevNone与解密后的AppNone和NetID经过加密计算后产生NwkSkey和AppSkey两个会话密钥,用于网络通信的安全。
另外,DLSettings字段是设置RX1和RX2的下行接收串口的速率的,CFList是网络的频率信道列表选项。

ABP入网:

ABP入网是将DevAddr、NwkSkey和AppSkey直接存放在终端设备中,跳过了join-accept的过程。相对安全性比较低。

4.2数据收发

入网成功后,终端设备就可以向服务器进行数据的收发,支持的数据帧类型有两种Confirmed与Unconfirmed,前者需要应答,后者不需要应答。

指令 解析
010 Unconfirmed Data Up 上行非确认帧
011 Unconfirmed Data Down 下行非确认帧
100 Confirmed Data Up 上行确认帧
101 Confirmed Data Down 下行确认帧

在数据帧头中含有自适应数据速率控制字段ADR,ADR被置位,网络就会通过对应的MAC命令来控制设备的数据速率。ADR位可以通过终端以及网络来设置或取消。能帮助终端延长电池寿命和扩大网络容量。

终端发送confirmed类型的消息,接收端收到消息后需要回复一条ACK应答消息,且ACK置位。

在下行的数据消息中有个帧挂起位FPending,帧挂起位为1表示网关还有挂起数据等待下发,需要终端尽快发送上行数据来打开一个接收窗口。

每个终端设备都有两个计数器,一个上行链路计数器(由终端在每次上行数据给网络服务器时累加)和一个下行链路计数器(由服务器每次下行数据给终端设备时累加)。设备入网成功后,帧计数器都会置0。每次发送消息后,FCntUp或FCntDown都会加1,接收方会同步保存数据的帧计数。

5、物理帧结构

LoRa的数据报文分为两种:上行数据报文与下行数据报文。上行的数据报文是从节点设备将传感器数据经过网关传到服务端。下行是将服务端的配置经过网关传输到设备中,下行仅仅是作为一种回复。

下面分别是上行数据报文与下行数据报文:

Uplink PHY:

| Preamble | PHDR | PHDR_CRC | PHYPayload | CRC  |
| -------- | ---- | -------- | ---------- | ---- |


Downlink PHY:

| Preamble | PHDR | PHDR_CRC | PHYPayload |
| -------- | ---- | -------- | ---------- |

图3:上下行报文

其中Preamble前导码的值为0x34;
PHYPayload是用户数据段;
其他的字段由lora radio硬件填充;

Radio PHY layer:

image.png
图4:Radio PHY layer

​ CRC:CRC校验位,保护数据的有效性,只出现在上行消息中 ;
​ PHDR:LoRa物理帧头;
​ PHDR_CRC:报头校验码;
​ PHYPayload:用户数据段

MAC层(PHYPayload)

image.png
图5:MAC层

MHDR:MAC头;
​ MACPayload的长度与区域有关。
​ MIC:消息一致码。

MAC头(MHDR)

image.png
图6:MAC头

MType表示消息类型;
​ RFU:预留字段;
​ Major:表示的是LoRaWAN主版本号;

消息类型有以下几种:

MType 说明 备注
000 Join Request 请求入网
001 Join Accept 同意入网
010 Unconfirmed Data Up 不需要确认的上行消息,接收者不需要做回复
011 Unconfirmed Data Down 不需要确认的下行消息,接收者不需要做回复
100 Confirmed Data Up 需要确认的上行消息,接收者必须回复
101 Confirmed Data Down 需要确认的下行消息,接收者必须回复
110 RFU 保留
111 Proprietary 用来实现自定义的消息

表1:消息类型

MACPayload

image.png
图7:MACPayload

​ Fport:端口,Fport=0表示的是FRMPayload中只有MAC命令。
​ FRMPayload:负载数据。
​ FHDR:帧头

FHDR由终端短址DevAddr、FCtrl控制字段、FCnt报文计数器、以及用来传输MAC命令的配置字段Fopts组成。Fopts(0–15Bytes)。

FHDR

image.png
图8:FHDR

上行报文的控制字段FCtrl:

ADR ADRACKReq ACK RFU FOptslen
7 6 5 4 3...0

表2:上行FCtrl

下行报文的控制字段FCtrl:

ADR RFU ACK FPending FOptslen
7 6 5 4 3...0

表3:下行FCtrl

ADR:数据自适应速率,等于1表示会根据环境对网络速率进行优化,等于0,表示自使用关闭,需要用户配置好。
ADRACKReq:ADR请求响应位,如果 ADR_ACK_LIMIT (ADR_ACK_CNT >=ADR_ACK_LIMIT)次上行之后没有收到下行回复,就会设置ADR 请求响应位(将 ADRACKReq 设为1)。
ACK:消息确认位。
FPending:只出现在下行的消息中,表示帧挂起,网关有数据等待下发。
FOptslen:表示的是FOpts的实际长度,等于0,表示FOpts字段为空,不等于0,表示FOpts中存放的是MAC指令。MAC指令是不能同时出现在FOpts与FRAMPayload中的。
RFU:Class B与Class A上行数据报文一样,使用了未使用的RFU字段。

协议详解

上行报文MACPayload:

image.png
图9:上行报文MACPayload

入网请求Join-Request:

image.png
​ 图10:Join-Request

下行报文MACPayload:

image.png
图11:下行MACPayload

同意入网Join-accept:

image.png
​ 图12:Join-accept

6、终端设备类型

image.png
​ 图13:设备类型

A类设备的上下行传输:

image.png
图14:A类设备工作模型

双向通信终端设备,允许双向通信,每一个终端设备上行传输的时候会伴随着两个下行的接收窗口,终端设备的传输槽是基于其自身通信需求,其微调是基于一个随机的时间基准(ALOHA协议),开窗时间误差要求为+/- 20us。A类设备的功耗最低,设备在上行数据的时候,服务器能迅速地进行下行通信。任何时候,服务器的下行数据通信都只能在上行数据之后。

B类设备的上下行传输:

image.png
​ 图15:B类设备工作模型

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

C类设备的上下行传输:

image.png
​ 图16:C类设备工作模型

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

7、参考资源

参考文献:

[1]. 《lorawantm_specification_-v1.1.pdf》

[2]. 《lorawan_regional_parameters_v1.0.3reva_0.pdf》

图表来源:

名称 来源
图1:CN470-510频道频率 《lorawan_regional_parameters_v1.0.3reva_0.pdf》
图3:上下行报文 《lorawantm_specification_-v1.1.pdf》
图4:Radio PHY layer 《lorawantm_specification_-v1.1.pdf》
图5:MAC层 《lorawantm_specification_-v1.1.pdf》
图14:A类设备工作模型 《lorawantm_specification_-v1.1.pdf》
图15:B类设备工作模型 《lorawantm_specification_-v1.1.pdf》
图16:C类设备工作模型 《lorawantm_specification_-v1.1.pdf》

原文作者:GUOGUO
点击查看原文

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
机器学习/深度学习 算法 物联网
LoRA及其变体概述:LoRA, DoRA, AdaLoRA, Delta-LoRA
LoRA可以说是针对特定任务高效训练大型语言模型的重大突破。它被广泛应用于许多应用中。在本文中,我们将解释LoRA本身的基本概念,然后介绍一些以不同的方式改进LoRA的功能的变体,包括LoRA+、VeRA、LoRA- fa、LoRA-drop、AdaLoRA、DoRA和Delta-LoRA。
155 2
|
6月前
|
JSON 移动开发 网络协议
认识协议【网络基础】
认识协议【网络基础】
38 1
|
4月前
|
物联网 开发者
如何在StableDiffusionWebUI 中使用Civital网站的LoRA模型?
如何在StableDiffusionWebUI 中使用Civital网站的LoRA模型?
132 0
|
11月前
|
XML 编解码 应用服务中间件
软交换网络结构和协议
软交换网络结构和协议
|
11月前
|
存储 网络协议 物联网
LoRA转4G网关DLS11低功耗数据转发器工作原理
DLS11 是为 VS系列振弦采集仪研发的内置电池以及 LoRA、LTE(4G)无线的低功耗数据转发器。利用“实时在线”的 LoRA 收发器收集其它 LoRA 设备发送的数据并存储,定时启动将这些 存储的数据重新打包为标准的数据包经由 LTE 网络发送致远端服务器,数据发送方式有短信、TCP、邮件、FTP 等。DLS11 实 现了 VS振弦采集仪设备的现场组网,使用一张 SIM 卡即可实现多台 VS振弦采集仪设备的数据远传功能。
|
11月前
|
存储 网络协议 物联网
LoRA转4G网关DLS11低功耗数据转发器工作流程
DLS11 是为 VS系列振弦采集仪研发的内置电池以及 LoRA、LTE(4G)无线的低功耗数据转发器。利用“实时在线”的 LoRA 收发器收集其它 LoRA 设备发送的数据并存储,定时启动将这些 存储的数据重新打包为标准的数据包经由 LTE 网络发送致远端服务器,数据发送方式有短信、TCP、邮件、FTP 等。DLS11 实 现了 VS振弦采集仪设备的现场组网,使用一张 SIM 卡即可实现多台 VS振弦采集仪设备的数据远传功能。
|
数据采集 监控 物联网
LoRA转4G网关工作原理
什么是LoRa LoRa是低功耗局域网无线标准,低功耗一般很难覆盖远距离,远距离一般功耗高,LoRa的名字就是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。
LoRA转4G网关工作原理
|
存储 网络协议 物联网
LoRa中继的工作流程
DLS11 是为 VS系列振弦采集仪研发的内置电池以及 LoRA、LTE(4G)无线的低功耗数据转发器。利用“实时在线”的 LoRA 收发器收集其它 LoRA 设备发送的数据并存储,定时启动将这些存储的数据重新打包为标准的数据包经由 LTE 网络发送致远端服务器,数据发送方式有短信、TCP、邮件、FTP 等。DLS11 实 现了 VS振弦采集仪设备的现场组网,使用一张 SIM 卡即可实现多台 VS振弦采集仪设备的数据远传功能。
LoRa中继的工作流程
|
传感器 数据采集 消息中间件
LoRa 通信和 LinkWAN 平台介绍|学习笔记(一)
快速学习 LoRa 通信和 LinkWAN 平台介绍
662 0
LoRa 通信和 LinkWAN 平台介绍|学习笔记(一)
|
传感器 存储 弹性计算
LoRa 通信和 LinkWAN 平台介绍|学习笔记(二)
快速学习 LoRa 通信和 LinkWAN 平台介绍
410 0
LoRa 通信和 LinkWAN 平台介绍|学习笔记(二)