Lora超全知识归纳,对于lora和lorawan的详细介绍

2023-05-16

目录

LORA介绍

LoRa通讯技术

网关信道

 网关负载

LoRa模块信道

节点入网

终端LoRa应用方案

设备唤醒

 终端LoRa应用实践

 网关详情

Lora和loraWAN

LoRaWAN 概貌

LoRaWAN体系结构

LoraWAN getway 核心代码解析

1体系结构

2 文件组织

3 数据结构

4 算法

局域网和广域网内多网关组网


LORA介绍

LoRa全称远距离无线电(Long Range Radio),是一种扩频调制技术。LoRa作为长距离射频技术采用了直序扩频技术,用户数据的原始信号与扩展编码位流进行XOR(异或)运算,生成发送信号流,使得扩频调制后的信号所占有的频带宽度远大于所传信息必需的最小带宽。

LoRa跳频通信FHSS跳频方式的工作原理是,各LoRa分组的内容的一部分在MCU管理中设定的跳频信道中发送,而所需的“跳频”频率(基于跳频表)在规定的跳频周期中发送。前导码和报头部分首先在信道0上发送。每次开始发送包时,信道计数器的读取值增加,生成实现跳频的中断信号。在扩频技术中,宽带无用信号与本地码序列不相关,因而不能被解扩,仍为宽带信号,可以被后续窄带滤波器滤除无关信号。

扩频技术强大的抗干扰能力能够显著的提高接收灵敏度,这一能力使得LoRa实现了比其他调制技术更远的通信距离。针对能量限制传感器的LoRa网络协议的优化,因为上行链路流量通常超过物联网的下行链路量。在这种环境下,LoRa技术规范为不同的应用场景定义了三种不同的数据接收窗口模式。

LoRa无线通信采用直序扩频技术,具有通信距离远、功率密度集中,抗干扰能力强的优势。同时具有软件FEC前向纠错算法,其编码效率较高,纠错能力强,在突发干扰的情况下,能主动纠正被干扰的数据包,大大提高可靠性和传输距离。目前,LoRa主要在全球免费频段运行,包括433、868、915MHz等。LoRa是物联网应用中的无线技术有多种,可组成局域网或广域网。

LoRa定义了物理层,而LoRaWAN定义了通信协议和系统架构。LoRaWAN使用远程星形架构。其中网关用于在终端设备和中央核心网络之间中继消息。在LoRaWAN网络中,节点不与特定网关关联。相反,节点发送的数据通常由多个网关接收。每个网关都会通过一些回程(蜂窝、以太网、卫星或Wi-Fi)将收到的数据包从终端节点转发到基于云的网络服务器。

终端设备(即传感器和应用程序)通过单跳LoRa通信与一个或多个网关通信,而所有网关通过标准IP连接到核心网络服务器。网络服务器具有过滤来自不同网关的重复数据包,检查安全性,向网关发送ACK以及将数据包发送到特定应用程序服务器所需的智能。由于网络可以在不同网关传输的信息中选择最优质的信息,因此不需要切换。如果节点是移动的,则从网关到网关不需要切换,这是启用资产跟踪应用程序的关键特性,这是垂直物联网的主要目标应用。通过使用网状网络,系统可以以设备电池寿命为代价来增加网络的通信范围。

LoRa通讯技术

 ChipStack

ChipStack是目前使用最广泛的一个开源的LoRaWAN®服务器。它提供非常简洁、友好的Web界面,方便用户对设备进行管理。

Chirpstack架构:

图3- 1 Chirpstack架构

 

主要分为网关(gateway),网络服务器(NS),应用服务器(AS),这几部分。

其中网关部分不仅需要跑packet_forwarder这个基于udp协议的lora包收发软件,同时需要跑chirpstack gateway bridge来将udp格式转变为mqtt格式,从而获得mqtt的认证/授权层(authentication / authorization layer),和可选的传输层安全协议(TLS)。

为了协调packet_forwarder和chirpstack gateway bridge,packet_forwarder内必须配置global_conf.json和local_conf.json使其地址与端口号和chirpstack gateway bridge统一。

Packet_forwarder

Packet_forwarder是在LoRa网关的主机上运行的程序,该程序将集中器接收的RF数据包通过IP / UDP链接转发到服务器,并发出服务器发送过来的的RF数据包。它还可以发出网络范围的GPS同步信标信号,用于协调网络的所有节点。

图3- 2

 

以上是配置packet_forwarder配置主要需要的参数,gateway_ID是唯一标识符,服务器用来区分网关的。Server_address是服务器地址,然后serv_port_up,serv_port_down分别是上行和下行端口号。

 Gateway bridge

为了将udp数据格式转变为mqtt数据格式,我们需要在网关上运行gateway bridge。在配置文件内我们需要选择semtech_udp也就是前面packet_forwarder的数据格式作为backend,然后选择本地的ip地址和端口。

图3- 4

 

使用mqtt还需在gateway bridge设置类型:

 

网关信道

网关信道选择配置文件,基准频率是471.4MHz,下面8个分别是频率的偏移量,可以知道网关能同时监听8个不同的信道。

 网关负载

一般情况下,LoRa物联网络采用的是LoRaWAN协议,从而其组网方式一般采用的是协议中的星形拓扑网络,星形拓扑网络示意图如图X所示。

 

图3- 20 星形拓扑结构

从图3-20中可以看出,该组网方式属于单跳网络,传感器终端与网关直接通信,再由网关将数据透传至服务器。在这个网络架构中,LoRa网关是一个透明传输的中继,连接终端设备和后端中央服务器。终端设备采用单跳与一个或多个网关通信所有的节点与网关之间均是双向通信。

星型拓扑结构的优点是:网络结构简单,组网容易,方便管理与控制,网络延迟短,传输误码率低.。星型拓扑结构的主要缺点是:由于采用中央节点集中控制,因而资源共享能力差,而且一旦中央节点出现问题,将导致整个网络瘫痪。然而,在地质灾害监测应用领域,或是监测范围覆盖广泛,或是安装环境复杂危险、或是两者兼具,因此一旦出现网络瘫痪,常常需要耗费大量的人力物力进行设备的维护,这就在相当程度上增加了监测成本、也降低了监测效果的持续性与稳定性。

因为星形组网里网关是最重要的一环,如果网关超负荷,那么整个网络系统将瘫痪,所以要重点关注网关的负载量,也就是单网关能容纳的节点数量。

1、理论值

假设单个网关每天最多可以接收a个数据包,每个节点的应用发包频率是每小时b个数据包的话,那么,单个网关最多可以容纳的节点的数目的理论值的计算式如下:

S=a/(24*b)。

比如,单个LoRaWAN网关如果搭载一个SX1301芯片的话,其每天最多可以接收150万个数据包,如果应用发包频率是每小时1包的话,那么理论上该LoRaWAN网关可以接入的节点的数目 S = 1500000/(24*1) = 62500个。

2、实际值

单个网关可以容纳的节点的数目的实际值比理论值的计算要复杂的多。对于确定的某个网关来说,其每天最多可以接收的数据包也是确定的,难就难在每个节点到底每天发多少个包。

在同一个应用场景下,我们每天需要该节点发送的总的数据长度是确定的,但是,确定长度的数据到底要以怎样的封包长度、发送速率来发送,就不确定了。封包长度如果不同,势必需要发送的包的数量也就不同。

比如,在不同的信号强度下,所用到的扩频因子SF也不同,那么,能发送的数据的长度也就不同,每次能发送的数据的长度不同就会导致需要分成的包的数量也不相同,从而导致即使使用同样的网关、同样的节点,但在节点的不同业务模式下,也会出现单个网关容纳节点的最大数目并不相同的情况。

对于有8个信道的网关来说,在没有LBT(发包前监听信道)的前提下,具体的计算公式为:

信道容量(即节点数量)S=8T/2et0

其中,8代表8个信道,T代表发送间隔,跟封包长度、速率有关系,1/2e 是基本Aloha算法最大吞吐量,e是常数,等于2.718,t0代表单包的ToA(Time on Air)。

在10字节负载的前提下,速率与ToA的关系如下表所示。

 

图3- 21

 

举一个例子,假如使用SX1301芯片,在没有LBT(发包前监听信道)的情况下,并且平均每个包空中飞行时间t0=100ms(因此t0=0.1s),平均每个包一分钟发一次(因此T=60s),那么可以容纳多少这样的平均节点呢?S=8*60/(2*2.718*0.1)=883 ,因此,可以容纳883个节点。

而且,采用不同算法,也会导致最大吞吐量的变化,从而引起理论容量的变化。

比如,如果前提条件修改成每个节点都带有LBT功能,采用时隙Aloha算法而不是之前的基本Aloha算法来评估,则由于算法不同,导致最大吞吐量不同,此时最大吞吐量是1/e,因此信道容量(即节点数量)S=8T/et0 ,从而 ,则理论容量增加一倍,即883*2=1766个节点。

LoRa模块信道

由以上网关设置可以知道,与网关通讯需要和网关处于同一频段,本节点通过配置可使用全频段,但为了与网关匹配,将几点信道设置为CN470中国频段的信道1(470.5MHz)。需要将模块设置为跳频模式,即终端联网模式,然后再配置接收及发送频率符合网关的信道范围,如图,将LoRa模块信道配置为470.5MHz。

1、首先使能中国地区频段CN470:

 

2、其次固定通讯频率为信道1:

 

节点入网

设备为了与服务器通讯并加入LoRaWAN网络,需要将设备独一无二的注册信息填入服务器,用于服务器对节点进行判认,使被允许的设备入网,这个过程就叫节点入网或者说时设备激活。通常有两种激活设备的方式。一种是OTAA (Over-The-Air Activation) 激活方式也叫空中激活方式,是在部署设备或者重置设备时使用的激活方式。另一种是ABP入网方式 (Activation By Personalization)也叫作独立激活方式,这种入网方式的特点是设备的初始化和激活是一并完成的。

在激活之后,终端设备会将DevAddr(节点地址),AppEUI(应用程序ID),NwkSKey (网络安全密码),AppSKey (应用安全密码)存储在自己的运行空间内。

终端LoRa应用方案

设备唤醒

当服务器需要更新数据时,向网关发送信号,网关再向LoRa模块发送唤醒信号,继而通过MCU唤醒终端设备。具体终端通讯连接图和空中唤醒流程图如图3-10和图3-11

 

图3- 30 中唤醒流程图

2)数据发送

LoRa数据传输是无线核辐射监测系统的第二个环节,选定合适的探测设备后,将探测设备与终端连接,将前端探测设备测量的数据传输至终端中,当需要更新数据时,网关发送Beacon信号,Lora模块和终端继而被唤醒,有一段Ping slot接收窗口接收到来自服务器的信息,接收到信息后,节点被唤醒,继而发送数据至网关和服务器。

 

 终端LoRa应用实践

1、硬件连接部分

通过以上分析,不难实现终端通过LoRa发送数据给网关或服务器。

 

图3- 31 终端数据传输应用图

 

图3- 36 终端连接示意图

2、应用软件部分

    终端从待机模式中唤醒后应重新使能PWR时钟,然后通过检查以及退出待机模式后,由于需要执行发送数据等操作,因此先无效化唤醒引脚,完成要求操作后再重新使能唤醒引脚,进入待机模式等待下一次唤醒。

 

关键函数:

LmHandlerJoin(ActivationType_t mode):mode=0——ABP方式入网,mode=1——OTAA方式入网

LmHandlerSend(LmHandlerAppData_t *appData, LmHandlerMsgTypes_t isTxConfirmed, TimerTime_t *nextTxIn, bool allowDelayedTx):appData——数据包,isTxConfirmed——接收确认,nextTxIn——下一次发送延迟,allowDelayedTx——发送延迟使能

LoRa协议

当今4G技术已经非常成熟了,人们也体验到了无线网络的各种便宜。5G网络也在普及的过程中。但在物联网领域,这些高速率高稳定性的无线通讯技术的应用是不现实的。我们需要一种低功耗并且传输距离远的通讯网络。这种网络统称为LPWAN,LP就是指Low-Power。LoRaWAN就是这种低功耗网络的一种。这种技术凭借其灵活性获得了物联网开发人员及用户的认可(Drăgulinescu et al.,2020)

LoRa是被包含在LoRaWAN中的,是一种物理上的无线电调制技术,使用了线性调制无线电并扩充通讯频率的方法,这使得它的无线电接收更加灵敏,这样相比传统的调制技术在传输距离更远的情况下可以获取的信息也更多。

大部分网络采用的网络连接方法是由各种不相关的节点相互转发消息,这样虽然易于扩大网络覆盖范围,但是信息传递迂回,这样的系统会变得复杂且功耗变高。LoRa 采用星状组网方式,如图5-1,单个网关一对多连接末端节点,但这并不代表节点始终连接这个网关,这是因为节点向上发送的数据会同时发给几个网关。这样的通讯方式提高了设备与网关组网的灵活性。

 

图 51 LoRaWAN网络架构

LoRa的通讯频段都在全球的免费频段,这些频段是不必经过授权使用的,这些频段包含CN470、EU868等。通常LoRa网络由终端设备节点、网关、网络和应用服务器四个子集组成,通讯数据可由设备向服务器发送也可以由服务器下设备发送,即可上行也可下行。

传统的 FSK 技术是一种稳定性和安全性不足的射频技术,并且传输距离短。LoRa调制技术是基于 CSS调制技术(Chirp Spread Spectrum:线性调频扩频),这样的调制技术可以工作在低功耗并且可以显著得扩大通讯距离。除此之外,LoRa组网技术可以不用通过基站来通讯,单个网关就可以与多个设备通讯,布网组网方式较灵活,可以降低组网成本(李信希,2019)

基于上述LORA组网的特点,对于此次环境辐射监测系统的低功耗数据传输,以及多个设备联网通讯的要求是非常合适的。

 网关详情

网关就是不同网络之间的连接器,英文名叫Gateway它能使工作在不同协议的两个高层网络进行通讯。它主要的功能就使翻译功能,可以转换不同通讯协议所传输数据内容,用一种通讯协议、数据结构、体系系统接收到信息,在网关内部解析并打包成以另一种通讯协议、数据结构、体系系统信息并将它传输给与之适配的网络设备。这些是它与普通的转发设备如网桥所不同的。

在LORAWAN中,网关的作用就是将节点设备(盖格计数器节点)的数据通过4G网络转发到服务器(腾讯云服务器)。

Lora和loraWAN

要说LoRaWAN网关,我们要先来了解一下它的技术原理。我们都知道LoRaWAN网关使用的是LoRa技术,那为什么我们又叫“LoRaWAN网关”呢?LoRa®和LoRaWAN®有什么区别?

LoRa其实是低功耗广域网系列的一部分,它是从chirp 扩频技术中衍生出来的扩频调制技术。目前是Semtech公司的专利技术。而LoRaWAN则是建立在LoRa技术之上的媒体访问控制(MAC,Media Access Control)协议。

一般来说,一个网关由很多的部件组成。其中有两个东西尤其关键,即LoRa集中器和主机MCU。网关从终端节点收集LoRa数据帧,并将这些数据重传到LoRaWAN网络服务器,该服务器负责认证和数据帧去重。反之亦然,网络服务器也可通过网关向终端节点发送下行指令集。所以说,在某种程度上,网关是终端节点和LoRaWAN服务器之间的桥梁/协议转换。

LoRaWAN 概貌

LoRaWAN是什么

LoRaWAN是基于LoRa的低功耗广域网,它主要包括2个部分:通信协议和体系结构。它能提供一个:低功耗、可扩展、高服务质量、安全的长距离无线网络。

 

LoRaWAN体系结构

借助于LoRa长距离的优势,LoRaWAN采用星型无线拓扑,有效延长电池寿命、降低网络复杂度和后续轻易扩展容量。它将网络实体分成4类:End Nodes(终端节点)、Gateway(网关)、LoraWAN Server(LoRaWAN服务器)和Applicaton Server(用户服务器)。

  

 

 LoRaWAN通信协议

在LoRaWAN的星型网络中, End Nodes使用单跳无线与一个或多个Gateway通信;Gateway通过标准IP链路(Ethernet、3G/GPRS和WiFi)与LoRaWAN Server通信;Gateway负责End Nodes和LoRaWAN Server信息的中继。

LoraWAN getway 核心代码解析

1体系结构

 

2 文件组织

 

数据结构

 

4 算法

 

局域网和广域网内多网关组网

一、局域网内多网关组网

局域网场景是指,主网关和组网网关位于同一个局域网,相互可通过IP地址直接访问情况。本场景同样适用于OpenVPN 虚拟局域网。

这种方式的特点是网络配置简单,同一个局域网内网络环境相对稳定、安全,组网网关和主网关之间使用UDP方式通信。

二、广域网多网关组网

由于广域网下主网关和组网网关之间无法直接通信,因此,需要LoRaWAN网关将报文发布到MQTT Broker,再由其它网关进行订阅。因此需要在公网部署一台MQTT服务器(所有参与组网的LoRaWAN网关都可直接访问的服务器),将主网关和组网网关都连接到这台MQTT服务器进行通信。

这种方式的特点是所有终端需要同一个server管理,但是网关以及终端在地理位置上分布较广。所有组网网关通过MQTT协议将数据发布到MQTT服务器,相比于UDP传输数据更加的稳定、安全。主网关通过订阅MQTT服务器完成终端数据的处理。该方式使处于任意地域任意网络的网关都可以加入到主网关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lora超全知识归纳,对于lora和lorawan的详细介绍 的相关文章

  • MySQL 表中数据的增删改查操作

    文章目录 一 在表中插入数据 xff08 1 xff09 单条数据插入 xff08 2 xff09 插入多条数据 二 删除表中数据 三 修改表中数据 四 查询表中的数据 xff08 单表查询 xff09 1 去重查询 distinct 2
  • MySQL中多表查询、表连接(内连接和外连接)

    文章目录 表与表的关系 一对一关系 一对多关系 多对多关系 表与表之间的连接 笛卡尔积 什么是笛卡尔积 xff1a 内连接 xff1a 1 通过where关键字进行关联 2 通过inner join on进行关联 外连接 xff1a 1 左

随机推荐

  • MySQL中索引与事务内容总结

    文章目录 x1f440 1 一 索引介绍 1 索引的优缺点 二 索引分类 三 索引的创建与删除 1 在创建表时创建索引 2 在已经存在的表上创建索引 第一种 xff1a 通过create语法创建索引 第二种 xff1a 通过alter语法创
  • Linux Ubuntu 命令行文件系统的创建,挂载,卸载

    我在刚开始操作的时候找不到 dev sdb 即使插入了U盘 xff0c 也没出现 经过翻阅网站 xff0c 才知道要创建新的硬盘 xff08 xff09 其余默认就行 文件系统的创建 1 查看新增硬盘的信息 sudo fdisk l 2 文
  • 408-数据结构-栈应用-括号匹配&表达式求值

    括号匹配 代码中的括号通常符合一下特性 xff1a 括号成对存在左右括号通常类型匹配 xff0c 大括号匹配大括号 如果存在括号序列 xff08 xff08 xff08 xff08 xff09 xff09 xff09 xff08 xff09
  • C语言学习笔记——编写求x的n次方的递归函数,在主函数调用并输出

    题目内容 xff1a 编写求x的n次方的递归函数 xff0c 在主函数调用并输出 x为double型 xff0c n为整型 xff0c 函数类型为double型 xff09 输入格式 lf d 输出格式 xff1a f 输入样例 xff1a
  • Python 输出Print( )函数用法

    目录 print 字符串格式化 格式化符号 format格式化函数 f string print objects sep 61 39 39 end 61 39 n 39 file 61 sys stdout flush 61 False o
  • RVIZ中的fixed frame选项以及“For frame [XX]: Fixed Frame [map] does not exist”

    RVIZ 使用的时候如果fixed frame选项设置不正确 xff0c 那么就会无法显示显示相应的数据信息 xff0c 并提示一下错误 xff1a For frame XX Fixed Frame map does not exist t
  • vim/vi 4种替换方法,批量替换,手动替换

    文件内全部替换 xff1a s abc 123 g 注 xff1a 把abc替换成123 如文件内有 xff0c 可用 替换 s abc 123 g 或者 s str1 str2 g 用str2替换文件中所有的str1 xff09 文件内局
  • C++枚举与字符串之间的转换

    template lt typename EnumType gt struct SEnumName static const char List enum ProgLang e cpp e java e csharp const char
  • kubeadm部署k8s集群

    1 准备环境 虚拟机操作系统 Centos7 角色 IP Master 192 168 150 140 Node1 192 168 150 141 Node2 192 168 150 142 2 系统初始化工作 在三台虚拟机上进行如下操作
  • docker部署redis集群+集群扩缩容

    1 集群规划 3主3从 xff1a nameipportredis node 1192 168 150 1106381redis node 2192 168 150 1106382redis node 3192 168 150 110638
  • ceph-deploy部署指定版本ceph集群

    注意 xff1a 16版本的ceph已经不支持ceph deploy xff0c 安装方法见我的博客 xff1a cephadm快速部署指定版本ceph集群 ggrong0213的博客 CSDN博客 1 集群规划 xff1a 主机名IP组件
  • k8s集群部署Java(springboot)项目

    1 java项目打成jar包 1 1 在IDEA开发工具中使用maven工具将开发完成的SpringBoot项目达成jar包 我自己的项目生成的jar为 xff1a demojenkins jar 1 2 将生成jar包上传到装有docke
  • Netty+MongoDB集群+Kafka集群解决高并发以及实现海量数据存储

    1 环境要求 准备一台安装有Docker的虚拟机 2 Netty简单介绍 Netty 是一个高性能 异步的 基于事件驱动的 NIO 框架 Netty简化和流线化了网络应用的编程开发过程 3 MongoDB简单介绍 MongoDB是一个高可用
  • C语言:从键盘随机输入10个整数,然后输出最大值和最小值

    本题有两种解决方法 xff1a 假设法和选择排序法 1 假设法找最值 include lt stdio h gt int main int a 10 i max mini for i 61 0 i lt 10 i 43 43 scanf s
  • MySQL开启ssl证书

    由于在主从复制中数据是明文的 xff0c 所以就大大降低了安全性 因此需要借助ssl加密来增加其复制的安全性 5 6版本之上 主默认含有证书 MySQL 5 7 18 加密连接mysql ssl rsa setup span class t
  • Vmware16安装(详细)

    目录 1 安装VMware 2 创建虚拟机 3 安装centos 3 IP和主机名称配置 1 安装VMware 之前为了学习Linux系统 xff0c 买了阿里云和腾讯云的服务器 xff0c 不奈什么都没干 xff0c 号就被封了 所有想了
  • mybatis-plus 分页插件

    目录 1 前言 2 配置分页插件 2 1 selectPage 测试 2 2 自定义分页功能 1 前言 大家之前肯定都用过PageHelper来进行分页 xff0c 其实mybatisplus中也提供了一个分页插件PaginationInn
  • STM32cubeIDE学习汇总(二)----外部中断控制LED和流水灯

    基于上篇我们已经基本了解了软件界面和如何创建一个项目了 接着我们看如何利用外部按键来控制LED灯的亮灭 xff0c 即外部中断 xff08 本文讲述的是外部中断控制led取反以及如何实现流水灯 xff09 xff08 如果想了解外部中断如何
  • 技术分享 | Frida 实现 Hook 功能的强大能力

    Frida 通过 C 语言将 QuickJS 注入到目标进程中 xff0c 获取完整的内存操作权限 xff0c 达到在程序运行时实时地插入额外代码和数据的目的 官方将调用代码封装为 python 库 xff0c 当然你也可以直接通过其他的语
  • Lora超全知识归纳,对于lora和lorawan的详细介绍

    目录 LORA介绍 LoRa通讯技术 网关信道 网关负载 LoRa模块信道 节点入网 终端LoRa应用方案 设备唤醒 终端LoRa应用实践 网关详情 Lora和loraWAN LoRaWAN 概貌 LoRaWAN体系结构 LoraWAN g