LoRa协议学习总结

简介: 本文介绍 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字节 |

消息中的另外两个字段MHDR是数据包头,包含了消息的类型,从包头中可以知道这是一个join-request消息。DevNone是一个设备端产生的随机数,每次入网请求的时候这个随机数都会改变,保存在服务器中,防止重放机制,当检测到某次的值在历史值中会判定为发生安全问题,就会拒绝本次的join请求。

同意入网请求消息格式如下:

| MHDR  | AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList   |
| ----- | -------- | ----- | ------- | ---------- | ------- | -------- |
| 1字节 | 3字节    | 3字节 | 4字节   | 1字节      | 1字节   | 0/16字节 |

服务器收到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,前者需要应答,后者不需要应答。

image.png

在数据帧头中含有自适应数据速率控制字段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主版本号;

消息类型有以下几种:

image.png

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:

image.png

下行报文的控制字段FCtrl:
image.png

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
备工作模型

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

C类设备的上下行传输:

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

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

7、参考资源

参考文献:

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

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

图表来源:
image.png

文章来源:芯片开放社区
文章链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.1b87180flWxVN5&id=656805496396709888

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
机器学习/深度学习 传感器 算法
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
|
5月前
|
存储 人工智能 缓存
AI应用爆发式增长,如何设计一个真正支撑业务的AI系统架构?——解析AI系统架构设计核心要点
本文AI专家三桥君系统阐述了AI系统架构设计的核心原则与关键技术,提出演进式、先进性、松耦合等五大架构法则,强调高并发、高可用等系统质量属性。通过垂直扩展与水平扩展策略实现弹性伸缩,采用多类型数据存储与索引优化提升性能。三桥君介绍了缓存、批处理等性能优化技术,以及熔断隔离等容灾机制,构建全链路监控体系保障系统稳定性。为构建支撑亿级业务的AI系统提供了方法论指导和技术实现路径。
662 0
|
传感器 监控 供应链
介绍LoRA技术
介绍LoRA技术
694 2
|
物联网
Chirpstack配合网关与lora设备通信
这篇文章详细介绍了如何配置Chirpstack与LoRa网关及设备进行通信,并设置设备上报数据的流程,以便实现LoRaWAN网络的数据传输功能。
753 1
|
网络协议 搜索推荐 应用服务中间件
网站开通后如何修改域名
网站开通后如何修改域名
|
人工智能 运维 自然语言处理
阿里云百炼
阿里云百炼支持多语言模型,适用于不同问答场景。初始内置问答基础上,用户可上传文档定制应用,针对每个项目“投喂”特定知识,优化答案检索,降低运维成本。模型管理允许关联不同知识库和设置敏感词以保护隐私。计费依据模型类型,大语言模型按Input和Output Token数,语音识别按时长计费。输入和输出分别计费,考虑资源消耗差异。
|
安全 API 数据安全/隐私保护
关于API安全设计5A原则
【6月更文挑战第1天】5A原则包括身份认证、授权、访问控制、可审计性和资产保护,是安全设计的核心要素。
|
JSON API 数据安全/隐私保护
如何使用Fastapi上传文件?先从请求体数据讲起
如何使用Fastapi上传文件?先从请求体数据讲起
645 2
|
缓存 算法 Linux
精选6个C++项目,推荐新人练手首选!(下)
精选6个C++项目,推荐新人练手首选!
【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络
【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络
622 0