前言:

从本篇文章开始:

从通信节点的角度度看,将从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

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

  1. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)

    电信的天翼物联网平台CTWing(AIOT)原先是我们俗称的aep,主要用于接入nb-iot设备,当然也可以接入其他的设备,在熟悉AIOT平台后,做后端的我有时候急需终端样品(智能门禁,支付识别终端, ...

  2. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-应用订阅端(北向应用)

    之前实现了使用Springboot+Netty基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备),模拟设备发送的数据给到了AIOT平台,那么在第三方应用也需要去 ...

  3. 1.1 DICOM协议简介及应用

    以下链接是本系列文章,不足之处,可在评论区讨论: 系列文章 1.1 DICOM协议简介及应用 1.2 DICOM成像协议剖析 1.3 DICOM成像协议实现思路 1.4 DICOM图像CT值计算 1. ...

  4. 物联网LoRa系列-11:LoRa终端--基于物理层协议的PingPong应用程序的软件架构

    至此,我们已经搭建好LoRa终端的软硬件开发环境,接下来,将解构和实现LoRa终端的应用程序. LoRa终端的应用程序,(1)可以直接基于LoRa的物理层协议(LoRa芯片实现):(2)也可以基于Lo ...

  5. 物联网LoRa系列-32:LoRaWAN无线智能水表如何进行水量数据采集?脉冲采集、双干簧管、磁性元件、光电转换、霍尔元件

    目录 1. 无线远传智能水表概述 2. 常用智能水表的发展与类型 3. 智能水表数据的采集的基本原理 3.1 光电转换型原理 3.2 双干簧管数据采集的基本原理 3.3 霍尔元件型原理 4. 干簧管脉 ...

  6. 物联网LoRa系列-24:LoRa终端--PingPong应用程序常见问题解析

    前言: 前面对LoRa终端的各种技术的拆解, 从技术的内容角度看,主要是包括LoRa的SX1261/SX1262终端的硬件设计.SX1261/SX1262芯片资料的解读.以及PingPong应用程序的 ...

  7. 物联网LoRa系列-4:LoRa终端射频芯片SX1268、SX1278、SX1262对比与选择

    1. 产品简述 LoRa的射频芯片主要分两大类,一类是LoRa终端射频芯片,另一类是LoRa基站/网关射频芯片. LoRa终端射频芯片目前有三款:SX1278.SX12786.SX1262: LoRa ...

  8. 物联网LoRa系列-3:LoRa终端搭建的总体思路、步骤与架构

    搭建的LoRa终端的总体思路与步骤: 1. 搭建的LoRa终端的系统需求和目标 2. 设计LoRa终端的目标系统 3. 设计LoRa终端的主机开发环境 4. 设计LoRa终端的软件架构 5. 构建Lo ...

  9. 物联网LoRa系列-31:通过LoRa终端实现远程抄表的原理与系统框架(水、电、气、热等通用)

    LoRa终端远程抄表的系统架构图 抄表系统由:无线电表 + 线集中器 + 业务数据中心组成. (1)无线电表:又称为LoRa终端 内嵌LoRa模块,进行数据的采集,并LoRa WAN协议实现远程数据的 ...

  10. 物联网LoRa系列-19:LoRa终端--射频芯片SX1261 SX1262的6种操作模式及其设置

    本文根据SX1261/2芯片手册,阐述SX161/2射频芯片的8种操作模式及其设置. 目录: 一. MCU与射频芯片之间的操作接口 二.SX1261/2射频芯片的6种工作模式的含义 三. SX1261 ...

最新文章

  1. 【转载】Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
  2. nginx 内核优化参数
  3. LiveVideoStackCon 2020北京站-售票通道关闭倒计时1天
  4. 【PAT甲级 Date时间比较】1006 Sign In and Sign Out (20 分) Java版 5/5通过
  5. (四)代码优化 (快来看看怎样写出真正高性能的代码)
  6. 关于我,十九线程序员小 UP
  7. Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)
  8. uml 时序图_面向对象设计与统一建模语言UML
  9. java 反射类成员_java 反射(二)类成员
  10. labview列表框禁用鼠标单击_【跟我学LabVIEW】什么是局部变量?如何创建及使用局部变量?...
  11. 猛龙出击•东莞赛区新闻发布会隆重举行,粤港澳大湾区将迎来首场搏击盛宴...
  12. 图神经网络在生化医疗方面的相关应用
  13. 从难民到 Uber 首席技术官:一个亚裔幸存者的故事
  14. 设为首页加入收藏代码_兼容各浏览器ie系列Firefox
  15. BM3D(Block-Matching and 3D filtering)读后感
  16. SNN系列|学习算法篇(1)Tempotron
  17. 栈 java 什么意思_java stack什么意思
  18. Druid关闭监控页面及设置密码
  19. HDU 4507 吉哥系列故事——恨7不成妻(数位DP)
  20. 基于Vue实现的问卷调查平台

热门文章

  1. 23种设计模式之模板方法模式
  2. php 微信支付h5 referer,微信H5支付
  3. 用engineercms建立项目管理平台
  4. 手把手教你在VM虚拟机上安装windows11
  5. 计算机基础知识试题分值,计算机考试题分值分布.doc
  6. 项目管理知识体系指南(PMBOK 指南) 第6版——笔记
  7. SQL注入(SQL注入(SQLi)攻击)攻击-脱库
  8. 精选36道SQL练习题解析 from(原50道SQL练习题)
  9. 本地安装易邮邮箱服务器并用foxmail 连接测试
  10. 纯前端播放文件流视频并预览并截取视频第一帧