物联网LoRa系列-25:LoRa终端--LoRaWAN协议简介与LoRa WAN终端软件选择

article/2025/3/16 11:26:07

前言:

从本篇文章开始:

从通信节点的角度度看,将从Lra终端对点对通信转到LoRa终端与LoRa网关的通信、LoRa终端LoRa云服务器的通信;

从协议栈的角度看,将从物理层上升到LoRa的MAC层, 即LoRaWAN;

从软件项目的角度看,将由pingpong程序转向Class A-Class C程序。

本文主要探讨,LoRa WAN终端与网关通信所需要知道的一些宏观技术点。


1. 软件工程文件的转型

默认的PingPong软件工程不再使用,必须转到Class A和 Class C的软件工程项目。

主要原因是模拟的PingPong应用程序发送的物理层的裸帧,没有MAC层的头,不符合LoRaWAN网关的设置规范,会被LoRa网管直接丢弃。


2. LoRa与LoRaWAN

LoRa:低功耗无线通信技术

是一种低功耗远程无线通信技术, 它是由法国一家公司Cycleo研发一种创新的半导体技术-LoRa,后面被美国一家公司Semtech(升特)收购.后续由Semtech公司基于这个LoRa技术,开发一种套LoRa通信芯片解决方案. LoRa后续通过LoRa联盟来开始覆盖推广普及。因此狭义的LoRa主要是指LoRa射频层与LoRa物理层。

LoRaWAN:LoRa广域网

LoRaWAN是基于LoRa远距离无线通信技术设计的一套广域网协议,包括MAC层通讯协议和网络系统架构。

如果按协议分层来说,LoRaWAN重点在MAC层,LoRa重点在物理层。

当然,广义上的LoRa也包括LoRaWAN。


3. LoRaWAN与LoRa MAC层

应该说,LoRaWAN(LoRa广域网)的概念比LoRa MAC层更广。LoRaWAN不仅仅包括LoRa MAC层协议,还包括LoRa应用层和LoRa的整个网络架构。


4. LoRAN(LoRa广域网)的网络架构

LoRaWAN的网络实体分为四个部分: 终端节点、网关、LoRaWAN服务器和用户服务器。

  • End Node: 终端节点一般是各类传感器,进行数据采集,开关控制等 。
  • Gateway: LoRa网关,对收集到的节点数据进行封装转发 。
  • NetworkServer: 主要负责上下行数据包的完整性校验。
  • ApplicationServer: 主要负责OTAA设备的入网激活,应用数据的加解密 。
  • CustomerServer: 从AS中接收来自节点的数据,进行业务逻辑处理,通过AS提供的API接口向节点发送数据。

后续的几篇文章,依然把重点放在终端节点上,但终端节点的软件协议需支持LoRa MAC层协议和应用层协议,而不仅仅是物理层协议。这样的LoRa终端,称为LoRaWAN终端。


5. LoRaWAN终端设备分类

根据协议规定有, LoWAN的终端分为Class A/B/C 三类终端设备,这三类设备基本覆盖了物联网所有的应用场景。

CLASSA/B/C的应用和区别可见下表:


6. LoRa物理层的帧结构

遵循此层的消息格式,可以实现LoRa终端点对点的通信。

这个结构需要深入探究,因为这涉及到LoRa终端之间是否能够通信、LoRa终端是否能够与LoRa进行通信的关键。

物理层的帧结构是有LoRa的射频芯片完成的,软件治只能设置模式。

(1)Preamble:用于保持接收机发射机的数据流同步。

Preamble的每个符号是0和1的交替,即0101

LoRa SX1261/2 芯片默认的符号个数是12,即0101 0101 0101,LoRaWAN中默认的符号符号个数是8,即0101 0101。

前导长度是一个可以通过编程来设置的变量,所以前导码的长度可以扩展。接收机的前导码长度应与发射机一致。如果前导码长度为未知或可能会发生变化,应将接收机的前导码长度设置为最大值。????接收的前导码小于还是大于发射机?

注意:这里的长度的单位是bit,而不是byte。即多少位。

(2)物理层头的类型

LoRa物理层帧的头包括两种模式,显性模式和隐形模式。这是由程序设定的。

隐性模式:没有物理帧的头部信息,即Preamble之后,直接是MAC层的帧。因此这种模式,物理层Payload的长度必须是确定的固定的,且需要通信的双方事先约定好,如果实际数据帧的长度不足预定的长度,需要添加填充域。

显性模式:包含物理层的帧头部分。LoRaWAN使用的是显性模式,

(3)显性模式下物理层的P_Header

包含的信息

  • Payload的字节数:

软件通过如下的寄存器告诉射频芯片,需要发送的物理层的payload的长度:

数据净荷的最大长度为255字节。

在隐性模式下,需要通信双方约定数据净荷的长度。

发送端,一旦已发送的数据帧的长度等于设定的长度,就停止发送,添加CRC.

接受端,一旦接收到的数据帧的长度等于设定的长度,就停止接收,检查CRC.

因此,如果发送的数据帧的长度与接收端的预先设定不一致,就会导致出错。

在显性模式下,不需要通信双方约定数据净荷的长度。

发送端,paylaod的实际数据长度,会添加到P_Header中,并通过此域把数据净荷的长度信息传递给接收端。

接收端,从P_Header中获取数据净荷的长度,并根据此长度域进行数据净荷的接收。

增加了通信双方的适应性。

  • 数据净荷的前向纠错码的编码率CR(Coding Rate)

FEC编码的冗余部分允许接收方检测可能出现在信息任何地方的有限个差错,并且通常可以纠正这些差错而不用重传。

FEC使接收方有能力纠正错误而不需要反向请求数据重传,不过这是以一个固定的更高转发的带宽为代价的。

因此FEC被应用在重传开销巨大或者不可能重传的情况下,比如单向通信链接的时候以及以多路广播的形式传送数据给多个接收方时。FEC信息通常被添加到大量存储设备中,以保障受损数据的恢复。FEC也被广泛应用在调制解调中。

添加的冗余比特越多,就纠错的能力越强,但需要的带宽就越大,因此冗余编码率会影响信息传输所需要的带宽。

冗余编码率是通过软件设定的:

4/5表示:有效数据是4比特,编码后是5比特。编码率为0.8,或者说溢码率是1.25.

注意:

纠错编码是LoRa modem的功能,不是物理帧头的设置。

在隐性模式下,没有物理层的帧头信息,只能通过通信双方人为的约定,如果通信双方设置不一样,这会导致译码错误。

在显性模式下,有物理层的帧头信息承载发送端端的纠错编码的编码率。接收端就可以根据此域对数据净荷进行纠错性解码。不需要通信双方提前人为约定了。

增加了通信双方的适应性。

  • 是否打开Payload CRC。

对Payload的CRC校验,2个字节。这个CRC是由射频芯片计算和添加,不是由软件来完成的。

但是否需要添加CRC是由软件设置的,即Payload CRC的使能是由软件控制的。

需要添加CRC是由软件设置的,即Payload CRC的使能是由软件控制的。

在隐性模式下,没有物理层的帧头信息,就需要通信双方约定,数据帧最后的2个字节是否是CRC。

在显性模式下,可以通过物理层的帧头,传递此信息,不需要人为的预先约定。

增加了通信双方的适应性。

(4)P_Header CRC

对Header域进行单独的CRC校验,确保物理层帧头部的正确性,当然,不包括Preamble。

在隐性模式下,不需要该域,因为隐性模式下,没有物理层的帧头信息,因此就没有物理层帧头的CRC.

在显性模式下,是由LoRa的射频芯片自动添加的,软件不可设置。

(5)Payload

物理层的真正发送的数据,在LoRaWAN协议中,该payload就是LoRaWAN的MAC层帧。

(6)Payload CRC

对Payload的CRC校验,2个字节。这个CRC是由射频芯片计算和添加,不是由软件来完成的。


7. LoRaWAN MAC层的帧结构

遵循此层的消息格式,可以实现LoRa终端与网关之间的通信(网关路由合法的LoRaWAN的消息净荷)

MAC层的帧结构是由LoRaWAN Class A-C的终端软件程序完成的。整个MAC的帧作为物理层帧的payload存在。

MAC有MAC层的帧头MHDR+MAC payload + MIC组成。

(1)MHDR:MAC层的帧头(7..0)

  • MType:LoRa消息的类型(7..5)

LoRa消息的类型分类:

a) Join request和Join Accept:是终端请求加入到LoRa网络中的消息。

b) Unconfirmed Data up & down:这种是单向,不需确认的消息, 没有确认与超时重发机制。

c) confirmed Data up & down:这种消息是需要确认回复的,如果没有回复,就会启动超时重发

注意:

收到confirmed类型的消息时,接收者要回复一条设置了确认位的消息(ACK 设为1)。

如果发送者是终端,网络就把确认消息发送到该终端打开的接收窗口。

如果发送者是网关,确认消息的发送由终端就自行判断。

d) RFU, Proprietary:保留或自定义

  • RFU(Reserved for future use):保留域(4..2)
  • Major:协议版本(1..0)

(2)MAC payload:MAC层净荷

MAC净荷,就是LoRa WAN各种类型消息的实体。

(3)MIC:一致性校验码(安全性加密功能)

LoRaWAN中的MIC是CMAC的四个最低有效字节,这一点在LoRaWAN协议中有说明:

The MIC is calculated as follows [RFC4493]:

msg = MHDR | FHDR | FPort | FRMPayload
cmac = aes128_cmac(NwkSKey, B 0 | msg)

MIC = cmac[0..3]

 CMAC则是AES中的一个算法,开发人员直接调用AES库函数即可,而AES在openssl中有实现。

7. LoRaWAN协议层的消息结构

遵循此层的消息格式,可以实现LoRa终端与LoRa服务器之间的通信。

所谓LoRaWAN协议层的消息,在上图中,就是指“数据帧”

LoRaWAN协议层的消息组成:

(1)FHDR

  • DevAddr:4字节的终端设备的地址

表明该消息的终端标识(双向,LoRa不需要设备地址)

  • FCTR:1个字节的消息控制

  • FCnt:

  • FOpts:消息操作类型

(2)FPort:上层应用程协议类型,类似与TCP/IP协议中的端口号。

0:表示FRMPayload中只有MAC命令。

1…223(0x01…0xDF)范围内的FPort由应用指定;

FPort = 224 专门为LoRaWAN Mac层测试协议服务。

(3)FRM Payload:应用层协议数据。

8. LoRaWAN消息交互


参考:

LoRa WAN的官方协议

LoRa WAN协议中文翻译:https://legacy.gitbook.com/book/twowinter/lorawan-specification_zh_cn/details

LoRa及LoRaWAN简介: LoRa及LoRaWAN简介_o倚楼听风雨o的博客-CSDN博客_lorawan


http://chatgpt.dhexx.cn/article/HNylqCfx.shtml

相关文章

lora三层服务器协议,LoRa以及LoRa包含的几种协议

为何LoRa成为“一夜爆红”的新技术呢?一定是因为它具有非常显著的特点: 长距离:1~20km 节点数:万级,甚至百万级 电池寿命:3~10年 数据速率3~50kbps LoRa作为一种无线技术,基于Sub-GHz的频段使其更易以较低功耗远距离通信,可以使用电池供电或者其他能量收集的方式供电。…

Lora如何组网?有哪些简单的Lora组网协议?

我从事物联网设计10余年,对无线通讯技术的ASK、FSK、Zigbee、Z-Wave、NB-Iot、Lora及LoraWan等都有一些或多或少的接触。 其中Lora无线通讯技术对我影响比较深刻,了解也相对比较透彻。 我在2016年接触的Lora无线通讯技术,但是,在…

什么是LoRa协议?

1 开场白 这篇文章给读者分享LoRa和LoRaWAN相关的技术简介, Low-Power, Wide-Area Networks(LPWAN)为实现数十亿的万物互联设备而生, LoRaWAN专为LPWAN网络优化更长的电池寿命,更长的距离和更低的代价。 [欢迎大家关注公众号:LoRa万物互联,获取更多LoRa资讯] 2 LoRa是什…

物联网LoRa系列-2:LoRa系统架构与协议栈详解

主要内容 1. 什么是Lora? 2. LoRa的主要特点? 3. LoRa的系统架构? 4. LoRa终端节点的网络连接方式? 5. LoRa终端节点的三种工作模式? 6. LoRa的协议栈? 1. 什么是LoRa LoRa是semtech公司创建的低功耗…

LoRa协议

注意:本页提供的信息来自LoRa™Alliance于2015年1月发布的LoRaWAN Specification V1.0。LoRa联盟负责随时更改规格,恕不另行通知。RF Wireless World不对任何与此相关的问题负责。请参阅LoRa Alliance(https://www.lora-alliance.org&#xf…

用命令:tar -zxvf,解压tar.gz包失败的问题解决。

问题描述: 主机上,使用tar -zxvf 解压tar.gz包的时候,出现以下错误: gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 问题办法: 开门见山,…

Liunx tar -zxvf 命令解压失败

使用tar -zxvf 命令解压mysql.tar报错 [rootiZ2ze8f0mv6pvfs1n3rpgaZ mysql]# tar -zxvf mysql.tar gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 解决方案 去掉z参数,使用 tar -xvf 解压正常 […

tar -zxvf是什么意思

先上DJ,先上DJ 含义:使用gzip工具(-z)解压(-x)由参数-f指定的文件,并显示压缩过程中详细信息(-v) 参数含义tarLinux压缩/解压缩命令-z代表gzip,使用gzip工具…

word标题设置级别

想要这样子: 点击标题1,标题1前面就带有级别. 新建word是这样的,没有带级别: 转自:https://blog.csdn.net/xtggbmdk/article/details/82591717 选择多级列表菜单 “2”级的右侧选“标题2” .在标题3的右侧选择标题3

NPOI Word 多级标题结构设置

通过NPOI实现以下功能 首先通过Word新建个样式模板,该样式模板包括你想要的几个标题样式,比如我这里就需要三个样式,标题、标题1、标题2 打开Word,新建文档,然后输入内容,更改样式,另存为word模板&#xf…

word:如何一键修改同一级别标题

word:如何一键修改同一级别标题 1.选中任意一个三级标题——开始——编辑——选择——选中格式相似的文本 2.修改字体样式:开始——样式——标题 3 ——右击——修改 样式名称不要修改——举例字体更改为:微软雅黑、五号、加粗、深红色——…

Word标题中按级别自动添加编号

一 大标题 1 标题1 1.1 标题1.1 1.1.1 标题添加 1.1.2 zaitian 1.2 新添加 1.2.1 在添加 1.3 标题1.2 2 标题2 2.1 标题2.1 2.2 添加新标题 3 标题2.2 3.1 标题天机 3.1.1 标题3 教程:为了实现上述的样式,即标题编号按照: 标题大级别.中级级…

Word文档标题自动增加序号

在编写Word文档时,经常需要使用到多级标题,为了可读性,一般需要给标题增加序号,该文档就是作者实际操作过程中遇到的问题和解决方法。 第一步: 选择“开始”-----》“段落”---》“多级列表”---》“定义新的多级列表…

word设置标题多个级别

https://jingyan.baidu.com/article/1876c852468dd8890b1376a9.html 1.在开始菜单里面看看标题 2.选择多级列表菜单 3.点击下面更多按钮,在”1“的右侧选”标题1“ 4.在“2”级的右侧选“标题2” 5.在标题3的右侧选择标题3

java生成word带多级标题,word自动生成多级标题的方法

毕业论文格式是一件很麻烦的事,通过修改各级标题来实现。如何快速地修改格式呢?接下来学习啦小编为你分享word自动生成多级标题的方法。希望对你有帮助! word自动生成多级标题的方法 使WORD里面的文章自动生成目录: 假如文章中标题格式为 第一节……大标题(一级) 1…

word@导航窗格@标题的大纲级别@章节导航

文章目录 项目符号编号多级列表项目符号编号多级列表🎈多级列表的定义多级列表(multilevel list)绑定标题样式(heading style)🎈重新自定义多级列表 补充:论文的章节结构论文写作中编号和多级列表的常见用途章节标题和子标题列表和条目参考文献图表和表格…

word设置生成目录显示的级别

作者:非妃是公主 专栏:《笔记》《C》 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 点击自定义目录,如下: 然后点击选项,如下: 在弹出的目录选…

Word设置标题以及自动编号——保姆级教程

前言 上学期间可能经常会用到Word来写一些报告、论文之类的文章,这个时候就需要用到分级标题,然而Word自带的标题往往不能符合我们要求的格式,这个时候就需要我们自己来设置了,以下方法都是我自己摸索出来的,不一定是…

word中怎么设置标题大纲级别

1 目标 新建一个word,能够提前设定好word的标题、正文格式,等到自己编辑文本的时候能够直接选中预先设置好的格式,直接修改。 2 解决办法 新建word文档。在样式中选中标题1,右击修改,进入编辑框。 修改好字体等格式…