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
点击查看原文

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Web App开发 人工智能 Android开发
iconfont.cn 阿里出品的矢量图标库
Iconfont.cn是阿里巴巴推出的矢量图标库,其中涵盖了1000多个常用图标,并在持续更新中。(目前已有7000+图标,部分图标为用户上传,因此默认不公开,但是可以搜索到。)
11192 0
iconfont.cn 阿里出品的矢量图标库
|
11月前
|
物联网
Chirpstack配合网关与lora设备通信
这篇文章详细介绍了如何配置Chirpstack与LoRa网关及设备进行通信,并设置设备上报数据的流程,以便实现LoRaWAN网络的数据传输功能。
510 1
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
250695 0
|
3月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
329 2
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
246985 2
|
11月前
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
1216 5
|
传感器 监控 供应链
介绍LoRA技术
介绍LoRA技术
558 2
阿里云服务器怎么开发票?刚开完,跟着教程一步步操作!
在阿里云,用户可在用户中心的发票管理中开具发票。首次开票需设置发票抬头,支持个人或企业,可选增值税普通或专用发票。开票时选择所需订单,按提示操作。个人账号无法开具企业发票,需变更实名认证。发票税率因产品而异,通常为6%或13%。发票抬头可修改,电子发票可报销。纸质专用发票邮寄免费,普通发票电子化。更多详情见官方帮助文档。
1129 0
正则表达式中的否定字符集
正则表达式中的否定字符集
269 4
|
tengine 网络协议 应用服务中间件
WAF-HTTPS [Encrypted Alert]断开连接
WAF-HTTPS [Encrypted Alert]断开连接
15864 0
WAF-HTTPS [Encrypted Alert]断开连接