浅谈LoRa与LoRaWAN
1.什么是LoRa
LoRa是semtech公司创建的低功耗局域网无线标准,低功耗一般很难覆盖远距离,远距离一般功耗高,要想马儿不吃草还要跑得远,好像难以办到。
LoRa的名字就是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。
与之对应的无线广域网通信技术有:GPRS、NB-IoT、Sigfox,与之对应的无线局域网通信技术有:RFID(射频识别)、蓝牙、ZigBee(紫峰技术)、WiFi。
LoRa技术的优势:
① LoRa技术可以在移动信号覆盖不到的地区进行通信,而Sigfox(依赖移动服务商的基站设备)等一些技术不能实现,试想在没有信号没有网络没有基站的地方想要通信是不是很绝望,LoRa可以帮你解决,且LoRa的基站和硬件设备成本比Sigfox, NB-IoT等一些其他技术要低。
②LoRa技术是一种扩频调制技术,也称为Chirp调制,该技术是Semtech公司独有的IP。扩频技术是一种用带宽换取灵敏度的技术,Wi-Fi,ZigBee等都使用了扩频技术,但LoRa调制的特点是接近香农定理的极限,最大效率地提高灵敏度。相比于传统FSK技术,在相同的通信速率下,LoRa比FSK灵敏度好8~12dBm。
③LoRa能实现远距离传输,除了灵敏度的优势外,还有一个因素就是超强的抗干扰能力。LoRa具备低于噪声20dB依然可以通信的抗干扰能力。
④LoRa调制具备不依赖于窄带,重传,编码冗余的特点,因此该调制效率极高,工作电流非常低,其静态电流<1uA;接收电流<5mA;发射功率17dBm时电流只有45mA。
⑤LoRa具有信道活动检测(CAD)功能,即短时间监听附件是否有指定频率和扩频因子的LoRa信号,重要的是该唤醒信号可以低于噪声(有效的避免误唤醒)。LoRa CAD整个过程需要2个Symbol的时间,其中约1个Symbol接收,1个Symbol时间用于计算并且电流只为接收时的一半。
⑥抗多径效应:
在高楼林立的大城市中,多径效应很明显,传输点之间存在非常多的无线可达路径(衍射,反射等),信号由于多径叠加会严重失真。经测试,LoRa在这样的环境中依然可以保持稳定传输。
⑦抗多普勒效应:
移动的物体会带来多普勒频移,而频率的移动对无线接收机提出了很大挑战。比如在高铁350km/h的时速下,对于900Mhz频段信号带来约±300Hz的中心频率偏差。对于LoRa接收机,多普勒频移导致LoRa脉冲中的频移,在基带信号的时间轴中引入相
对可忽略的频移。LoRa可以支持的移动速度超过第三宇宙速度16.7km/s,在地球上就无需考虑多普勒效应可能带来的问题。
2.LoRa的特性
传输距离:城镇可达2-5 Km , 郊区可达15 Km 。
工作频率:ISM 频段 包括433、868、915 MH等。
工作模式:适合不需要连续发送数据包,环境恶劣,移动信号不能覆盖的场合。
调制方式:基于扩频技术,线性调制扩频(CSS)的一个变种,具有前向纠错(FEC)能力,semtech公司私有专利技术。
容量:一个LoRa网关可以连接上千上万个LoRa节点。
安全:AES128加密。
传输速率:几百到几十Kbps,速率越低传输距离越长。
目前实现 LoRa 的硬件有 Semtech 的 SX1272/76/78/79 系列,通常作为节点端使用,还有 SX1301、SX1255 通常作为网关端使用。
3.LoRa和LoRaWan
LoRa是低功耗广域网通信技术中的一种,是Semtech公司专有的一种基于扩频技术的超远距离无线传输技术。有资料认为,其相当与 OSI 中的 Physical Layer(物理层)(Inthe OSI reference stack model, LoRa would be on the Physical Layer.),它是射频通讯技术中的一种,可以实现点对点的通讯,是低功耗广域网通信技术中的一种。
而 LoRaWan 的位置是在 MAC Layer(链路层),是为LoRa远距离通信网络设计的一套通讯协议和系统架构,是应用 LoRa 通讯技术实现的一种更高级的通讯协议,它将终端设备按星型网络组网,可以实现设备的入网管理,数据加密,速率控制等。
上面这张图片是LoRaWan的网络架构图,LoRaWAN的网络实体分为四个部分: 终端节点、网关、LoRaWAN服务器和用户服务器。
其中:
End Node: 终端节点一般是各类传感器,进行数据采集,开关控制等 。
Gateway: LoRa网关,对收集到的节点数据进行封装转发 。
NetworkServer: 主要负责上下行数据包的完整性校验,设备的入网激活,应用数据的加解密。
ApplicationServer: 主要负责数据的解析,以及作为用户下行数据的发送端 。
LoRa网关用于远距离星型架构,是多信道、多调制收发、可多信道同时解调。网关作为一个透明网桥在终端设备和中心网络服务器间中继消息。网关通过标准IP连接连接到网络服务器,终端设备使用单播的无线通信报文到一个或多个网关。
其实LoRaWan并不是一个完整的通信协议,因为它只定义了物理层和链路层,网络层和传输层没有,功能也并不完善,没有漫游,没有组网管理等通信协议的主要功能。
4.LoRaWAN终端设备分类
根据协议规定有 Class A/B/C 三类终端设备,这三类设备基本覆盖了物联网所有的应用场景。CLASSA/B/C的应用和区别可见下表:
5.LoRaWAN帧结构
整体和TCP/IP协议里的数据包是类似的封装格式,发送时从应用层封装到物理层,上面一层的整个部分作为下面一层的Payload,每一层基本都有自己的头部,校验和,最后由物理层封装了发送出去,接收端是一个反过来的过程,会将数据帧一层层剥开,最后由应用层解析数据。
LoRa有两种包格式,显性模式和隐形模式。显性模式下有Header部分,隐形模式没有。
Preamble:用于保持接收机与输入的数据流同步。默认是12个符号长度,LoRaWAN中使用8个符号长度。前导长度是一个可以通过编程来设置的变量,所以前导码的长度可以扩展。接收机的前导码长度应与发射机一致。如果前导码长度为未知或可能会发生变化,应将接收机的前导码长度设置为最大值。可以通过设置前导码值进行地址过滤,实现分组通信。
Header:包含的信息有,Payload的字节数、编码率、是否打开Payload CRC。LoRaWAN中使用显性模式,隐形模式下这三个内容需要手动在通讯的两端配置。
Payload:真正发送的数据。
Payload CRC:对Payload的CRC校验,2个字节。
6.LoRaWAN终端设备入网 OTAA(Over-The-Air Activation)空中激活
* DevEUI(设备唯一标识符, Server与Node预先存储)
* AppEUI(应用唯一标识符, Server与Node预先存储)
* AppKey(Server和Node都要预先存好, 用于对join_accept message的加解密还有node用于生成AppSKey和NwkSKey)
* DevNonce(可以由LoRa芯片的RSSI随机值得到)
*NetID的7个最低有效位称作NwkID,即DevAddr的7个最高有效位。区域相邻或重叠的网络的NwkID不能相同。余下的17个最高有效位由网络运营商自由分配。
入网请求包格式
入网接收包格式
* DevAddr:设备短地址,类似于IP地址。
* DLSettings:低4位表示RX2的速率,高4位表示RX1的速率偏移。
* RxDelay:设置从发送完成到打开RX1窗口的时间。
* CFList:服务器将信道列表带给终端。每个通道占用三个字节,最多下发5个通道
ABP(Activation by Personalization) 这种方法比较简单粗暴,直接配置 DevAddr,NwkSKey,AppSKey 这三个LoRaWAN最终通讯的参数,不再需要join流程。在这种情况下,这个设备是可以直接发应用数据的。
OTAA与ABP比较:
OTAA终端需要向服务器发送JoinRequest请求,也就是入网请求,服务器处理完入网请求会向终端发送JoinAccept,也就是入网应答,终端成功接收到服务器下发的JoinAccept之后,OTAA终端这时才是入网成功了,此时OTAA终端就可以从JoinAccept中计算出DevAddr、NwkSkey和AppSkey这三个加密参数了。有了这三个加密参数,终端就可以正常工作了。
对于ABP终端来说我们是直接三个加密参数DevAddr、NwkSkey和AppSkey配置给了ABP终端,ABP终端可以直接使用这三个加密参数来工作。当ABP终端成功发送了第一条数据之后,我们就认为ABP终端入网成功了。
OTAA终端相比于ABP终端安全性更高一些: OTAA终端需要执行一次入网过程之后,才能获取到对应的三个加密参数DevAddr、NwkSkey和AppSkey;并且OTAA终端每执行一次入网操作,这三个加密参数也会相应的随机变化。
ABP终端是直接配置了三个加密参数DevAddr、NwkSkey和AppSkey,也就是说对于ABP终端这三个加密参数是永远不会改变的。对于OTAA终端我们可以根据需要在适当的时候重新执行入网操作,动态更改加密参数。
7.LoRaWAN终端设备数据传输数据上下行介绍:
这是Class A 上下行的时序图,目前接收窗口RX1一般是在上行后1秒开始,接收窗口RX2是在上行后2秒开始。
Class C 和 A 基本是相同的,只是在 Class A 休眠的期间,它都打开了接收窗口RX2
Class B 的时隙则复杂一些,它有一个同步时隙beacon,还有一个固定周期的接收窗口ping时隙。如这个示例中,beacon周期为128秒,ping周期为32秒
LoRaWAN规定数据帧类型有 Confirmed 或者 Unconfirmed 两种,即需要应答和不需要应答类型。厂商可以根据应用需要选择合适的类型。
另外,从介绍中可以看到,LoRaWAN设计之初的一大考虑就是要支持应用多样性。除了利用 AppEUI 来划分应用外,在传输时也可以利用 FPort 应用端口来对数据分别处理。FPort 的取值范围是(1~223),由应用层来指定。
附:
关于LoRaWAN的一些名词解释和作用:
MCPS: MAC Common Port Sublayer;数据传输和数据接收;
MLME: MAC Layer Management Entity;管理LoRaWAN网络;
SNR(信噪比) :信号和噪声的比值,计量单位是dB,其计算方法是10lg(PS/PN)。根据计算公式可知,SNR小于0时表示信号功率小于噪声功率,SNR大于0时表示信号功率大于噪声功率。
RSSI(接收信号强度指示): 即接收灵敏度(单位为dBm)。在纯净环境下,RSSI值与距离是一个非线性曲线的关系,所以路测时在一定距离内RSSI值有参考价值,过距离后基本没有参考价值。
扩频因子(SF): 扩频调制技术采用多个信息码片来代表有效负载信息的每个位。扩频信息的发送速度称为符号速率(Rs),而码片速率与标称符号速率之间的比值即为扩频因子,其表示每个信息位发送的符号数量。Rs = BW/2^SF。LoRaTM调制解调器中扩频因子的取值为6时,LoRa的数据传输速率最快;
编码率(CR) :编码率,是数据流中有用部分的比例。也就是说,如果编码率是k/n,则对每k位有用信息,编码器总共产生n位的数据,其中n-k是多余的。LoRa采用循环纠错编码进行前向错误检测与纠错。
EIRP(Effective Isotropic Radiated Power): 有效全向辐射功率。在LoRa上,每个地区规定的最大EIRP值是不一样的,EIRP = P(LoRa芯片发送功率) + G(天线增益) – Loss(损耗)。
MIB:MAC Information Base;存储重要的运行时信息并保存LoRa MAC层的配置;
BW:扩频调制带宽; 增加带宽,可以提高有效数据速率以缩短传输时间,但是会牺牲接收灵敏度。
纠错编码: 提高纠错编码率,会产生额外的传输开销,但是会提高链路的可靠性。编码率可以随着信道条件的变化而变化。
CAD: Channel Active Detect,信道活动检测器;信道活动检测模式旨在以尽可能高的功耗,检测无线信道上的LoRa前导码。CAD检测时长为扩频因子的函数。
ADR:Adaptive Data Rate; 如果ADR打开,服务器可以通过MAC命令控制设备的速率,已匹配当前的网络情况,达到最优传输效果。如果ADR=0,服务器无视收到的信号质量,不对终端数据速率进行调整。
如果终端的数据速率经过服务器优化比默认值大,那节点就要定期检查保证服务器能够收到上传的数据。 终端上行的帧号每增加一次(重复发送不增加帧号)的同时,ADR_ACK_CNT + 1。ADR_ACK_DELAY 时间之内收到下行消息:ADR_ACK_CNT = 0(重置)。否则ADR_ACK_CNT 继续根据前面规则处理 。ADR_ACK_CNT >= ADR_ACK_LIMIT(一共用时:ADR_ACK_LIMIT + ADR_ACK_DELAY)就切换到更低的数据速率上(无线广播范围的距离更长)重复上述过程,每次终端设备达到 ADR_ACK_LIMIT 就会再次降低自己的数据速率。如果设备使用默认的数据速率就不需要设置 ADRACK Req ,这种情况下任何操作都不会改善连接范围(增加连接距离)。在此期间的下行数据不需设置ACK位,因为终端在等待接收期间收到任何应答都表示网关还能接收来自该设备的上行数据。
当然想要实现LoRaWAN整个通信框架的内容,了解这些资料远远不够,除了终端节点的开发,还需要开发网关,以及云平台服务器的开发等。
注:以上内容有部分内容为其他博主原创,如有侵权,请联系本博主。