目录
LORA介绍
LoRa通讯技术
网关信道
网关负载
LoRa模块信道
节点入网
终端LoRa应用方案
设备唤醒
终端LoRa应用实践
网关详情
Lora和loraWAN
LoRaWAN 概貌
LoRaWAN体系结构
LoraWAN getway 核心代码解析
1体系结构
2 文件组织
3 数据结构
4 算法
局域网和广域网内多网关组网
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以及将数据包发送到特定应用程序服务器所需的智能。由于网络可以在不同网关传输的信息中选择最优质的信息,因此不需要切换。如果节点是移动的,则从网关到网关不需要切换,这是启用资产跟踪应用程序的关键特性,这是垂直物联网的主要目标应用。通过使用网状网络,系统可以以设备电池寿命为代价来增加网络的通信范围。
ChipStack是目前使用最广泛的一个开源的LoRaWAN®服务器。它提供非常简洁、友好的Web界面,方便用户对设备进行管理。
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同步信标信号,用于协调网络的所有节点。
以上是配置packet_forwarder配置主要需要的参数,gateway_ID是唯一标识符,服务器用来区分网关的。Server_address是服务器地址,然后serv_port_up,serv_port_down分别是上行和下行端口号。
Gateway bridge
为了将udp数据格式转变为mqtt数据格式,我们需要在网关上运行gateway bridge。在配置文件内我们需要选择semtech_udp也就是前面packet_forwarder的数据格式作为backend,然后选择本地的ip地址和端口。
网关信道选择配置文件,基准频率是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的关系如下表所示。
举一个例子,假如使用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个节点。
由以上网关设置可以知道,与网关通讯需要和网关处于同一频段,本节点通过配置可使用全频段,但为了与网关匹配,将几点信道设置为CN470中国频段的信道1(470.5MHz)。需要将模块设置为跳频模式,即终端联网模式,然后再配置接收及发送频率符合网关的信道范围,如图,将LoRa模块信道配置为470.5MHz。
2、其次固定通讯频率为信道1:
设备为了与服务器通讯并加入LoRaWAN网络,需要将设备独一无二的注册信息填入服务器,用于服务器对节点进行判认,使被允许的设备入网,这个过程就叫节点入网或者说时设备激活。通常有两种激活设备的方式。一种是OTAA (Over-The-Air Activation) 激活方式也叫空中激活方式,是在部署设备或者重置设备时使用的激活方式。另一种是ABP入网方式 (Activation By Personalization)也叫作独立激活方式,这种入网方式的特点是设备的初始化和激活是一并完成的。
在激活之后,终端设备会将DevAddr(节点地址),AppEUI(应用程序ID),NwkSKey (网络安全密码),AppSKey (应用安全密码)存储在自己的运行空间内。
当服务器需要更新数据时,向网关发送信号,网关再向LoRa模块发送唤醒信号,继而通过MCU唤醒终端设备。具体终端通讯连接图和空中唤醒流程图如图3-10和图3-11。
图3- 30 中唤醒流程图
(2)数据发送
LoRa数据传输是无线核辐射监测系统的第二个环节,选定合适的探测设备后,将探测设备与终端连接,将前端探测设备测量的数据传输至终端中,当需要更新数据时,网关发送Beacon信号,Lora模块和终端继而被唤醒,有一段Ping slot接收窗口接收到来自服务器的信息,接收到信息后,节点被唤醒,继而发送数据至网关和服务器。
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网络转发到服务器(腾讯云服务器)。
要说LoRaWAN网关,我们要先来了解一下它的技术原理。我们都知道LoRaWAN网关使用的是LoRa技术,那为什么我们又叫“LoRaWAN网关”呢?LoRa®和LoRaWAN®有什么区别?
LoRa其实是低功耗广域网系列的一部分,它是从chirp 扩频技术中衍生出来的扩频调制技术。目前是Semtech公司的专利技术。而LoRaWAN则是建立在LoRa技术之上的媒体访问控制(MAC,Media Access Control)协议。
一般来说,一个网关由很多的部件组成。其中有两个东西尤其关键,即LoRa集中器和主机MCU。网关从终端节点收集LoRa数据帧,并将这些数据重传到LoRaWAN网络服务器,该服务器负责认证和数据帧去重。反之亦然,网络服务器也可通过网关向终端节点发送下行指令集。所以说,在某种程度上,网关是终端节点和LoRaWAN服务器之间的桥梁/协议转换。
LoRaWAN是什么
LoRaWAN是基于LoRa的低功耗广域网,它主要包括2个部分:通信协议和体系结构。它能提供一个:低功耗、可扩展、高服务质量、安全的长距离无线网络。
借助于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信息的中继。
一、局域网内多网关组网
局域网场景是指,主网关和组网网关位于同一个局域网,相互可通过IP地址直接访问情况。本场景同样适用于OpenVPN 虚拟局域网。
这种方式的特点是网络配置简单,同一个局域网内网络环境相对稳定、安全,组网网关和主网关之间使用UDP方式通信。
二、广域网多网关组网
由于广域网下主网关和组网网关之间无法直接通信,因此,需要LoRaWAN网关将报文发布到MQTT Broker,再由其它网关进行订阅。因此需要在公网部署一台MQTT服务器(所有参与组网的LoRaWAN网关都可直接访问的服务器),将主网关和组网网关都连接到这台MQTT服务器进行通信。
这种方式的特点是所有终端需要同一个server管理,但是网关以及终端在地理位置上分布较广。所有组网网关通过MQTT协议将数据发布到MQTT服务器,相比于UDP传输数据更加的稳定、安全。主网关通过订阅MQTT服务器完成终端数据的处理。该方式使处于任意地域任意网络的网关都可以加入到主网关。