LoRaWAN介绍 - LoRa从业者读这篇就够了
这篇介绍文章是用于团队内部培训使用,对部分内容做了删减后公开发出。
本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/
本文是一篇LoRaWAN的科普介绍,你已经在朋友圈看过无数蜻蜓点水的LoRaWAN文章,是时候来一篇真正的技术干货了。本文先从横向介绍下LoRaWAN的背后势力和网络部署情况,然后纵向讲解了网络架构和具体的协议内容,帮助LoRa从业者系统地了解LoRaWAN协议。
1 LoRaWAN是什么
按照LoRa联盟官方白皮书《what is LoRaWAN》的介绍,LoRaWAN是为LoRa远距离通信网络设计的一套通讯协议和系统架构。
LoRaWAN? defines the communication protocol and system architecture for the network while the LoRa? physical layer enables the long-range communication link.
另外官方提供了这张略偏技术的协议层次图,各位看官大体感受下。
LoRaWAN在协议和网络架构的设计上,充分考虑了节点功耗,网络容量,QoS,安全性和网络应用多样性等几个因素。经过接下来的这些内容,将会对开头这段介绍有更深刻的体会。
2 背后的利益集团 – LoRa联盟
和LoRa相爱相杀的 NB-IoT 出自于全球标准化组织 3GPP ,由大名鼎鼎的ETSI(欧洲电信标准化委员会)、日本ARIB(无线行业企业协会)和TTC(电信技术委员会)、CCSA(中国通信标准化协会)、韩国TTA(电信技术协会)和北美ATIS(世界无线通讯解决方案联盟)等等组成。
相比于 3GPP 的根正苗红,LoRaWAN 背后的LoRa联盟则势力弱了一些。从协议的封面可以看到作者是来自于3个董事会成员公司: N. Sornin (Semtech), M. Luis (Semtech), T. Eirich (IBM), T. Kramp (IBM), O.Hersent (Actility)。
我们知道每一项技术的推广,都伴随着利益的推动。虽然组织和联盟都是非盈利性组织,但是旗下的企业成员都不是一心来做公益的。从企业角度来讲,花5W去投入做的事情,注定是抱着撬动至少50W美金的预期去做的。
LoRa联盟于2015年上半年由思科(Cisco)、IBM和升特(Semtech)等多家厂商共同发起创立,截止目前(2017.04)有400+的成员,董事会成员中也有不少大企业,大家共同为瓜分未来低功耗广域网的蛋糕而抱团努力着。这是我做的一个表格,收集了现阶段愿意交纳5W美金会费的19个董事会成员,你可以看到这些企业的愿ye景xin。
电信运营商 | bouygues | 法国三大移动网络运营商之一 |
comcast | 美国最大的有线电视运营商 | |
KPN | 荷兰皇家电信集团 | |
orange | 法国电信运营商 | |
Proximus | 比利时电信运营商 | |
SK telecom | 韩国电信运营商 | |
网络安全方案商 | gemalto | 金雅拓,网络安全方案商,涉及网络加密设计,是中国移动合作伙伴 |
giesecke | 捷德,支付安全方案商,涉及网络加密设计,是工行、建行等的U盾方案商 | |
云平台方案商 | actility | 法国,ThingPark云平台 |
IBM | 平台方案商 | |
ZTE | 中兴,平台方案商,基站方案商 | |
基站方案商 | cisco | 思科 |
kerlink | 基站方案商 | |
sagemcom | 基站方案商 | |
终端芯片方案商 | semtech | LoRa射频芯片供应商 |
ST | 微控制器供应商 | |
renesas | 瑞萨,微控制器供应商 | |
行业应用方案商 | flashnet | 能源管理应用商,如智慧路灯等应用 |
homerider | 水表应用商 |
3 LoRaWAN的网络部署情况
在绑定了几个一级电信运营商后,网络部署情况就比较可观了。按照官方目前(2017.04)的声明,网络部署情况是这样:
34个公开声明部署的网络,至少150个在进行的城市试点部署
你们发现没,鸡脖子那边有一点白,可能是主体主义思想的光辉太耀眼了。
4 LoRaWAN 网络架构
在前面部分了解了LoRaWAN很火之后,我们具体从技术角度做些了解。如下是LoRa联盟官方白皮书中的网络架构图。
可以看到一个LoRaWAN网络架构中包含了终端、基站、NS(网络服务器)、应用服务器这四个部分。基站和终端之间采用星型网络拓扑,由于LoRa的长距离特性,它们之间得以使用单跳传输。在终端部分官方列了6个典型应用,有个细节,你会发现终端节点可以同时发给多个基站。基站则对NS和终端之间的LoRaWAN协议数据做转发处理,将LoRaWAN数据分别承载在了LoRa射频传输和Tcp/IP上。
下面结合下行业生态再来看下这个网络架构,大家可以有更深的认知。图来自ST的LoRa白皮书《IoT connectivity made easier STM32 MCUs & LoRa》。
5 协议概述
5.1 终端节点的分类
在开头的介绍中我们就看到有协议中有规定 Class A/B/C 三类终端设备,这三类设备基本覆盖了物联网所有的应用场景。
为了方便大家,我又做了个表。
CLASS | 介绍 | 下行时机 | 应用场景 |
A ("all") | Class A 的终端采用 ALOHA 协议按需上报数据。在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输。这种操作是最省电的。 | 必须等待终端上报数据后才能对其下发数据。 | 垃圾桶监测、烟雾报警器、气体监测等 |
B ("beacon") | Class B 的终端,除了Class A 的随机接收窗口,还会在指定时间打开接收窗口。为了让终端可以在指定时间打开接收窗口,终端需要从网关接收时间同步的信标。 | 在终端固定接收窗口即可对其下发数据,下发的延时有所提高。 | 阀控水气电表等 |
C ("continuous") | Class C 的终端基本是一直打开着接收窗口,只在发送时短暂关闭。Class C 的终端会比 Class A 和 Class B 更加耗电。 | 由于终端处于持续接收状态,可在任意时间对终端下发数据。 | 路灯控制等 |
5.2 终端节点的上下行传输
下面来点时序图,让大家有更深的感受。
这是Class A 上下行的时序图,目前接收窗口RX1一般是在上行后1秒开始,接收窗口RX2是在上行后2秒开始。
Class C 和 A 基本是相同的,只是在 Class A 休眠的期间,它都打开了接收窗口RX2。
Class B 的时隙则复杂一些,它有一个同步时隙beacon,还有一个固定周期的接收窗口ping时隙。如这个示例中,beacon周期为128秒,ping周期为32秒。
5.3 终端节点的加网
搞明白了基础概念之后,就可以了解节点如何工作了。在正式收发数据之前,终端都必须先加网。
有两种加网方式:Over-the-Air Activation(空中激活方式 OTAA),Activation by Personalization(独立激活方式 ABP)。
商用的LoRaWAN网络一般都是走OTAA激活流程,这样安全性才得以保证。此种方式需要准备 DevEUI,AppEUI,AppKey 这三个参数。
DevEUI 是一个类似IEEE EUI64的全球唯一ID,标识唯一的终端设备。相当于是设备的MAC地址。
AppEUI 是一个类似IEEE EUI64的全球唯一ID,标识唯一的应用提供者。比如各家的垃圾桶监测应用、烟雾报警器应用等等,都具有自己的唯一ID。
AppKey 是由应用程序拥有者分配给终端。
终端在发起加网join流程后,发出加网命令,NS(网络服务器)确认无误后会给终端做加网回复,分配网络地址 DevAddr(32位ID),双方利用加网回复中的相关信息以及AppKey,产生会话密钥NwkSKey和AppSKey,用来对数据进行加密和校验。
如果是采用第二种加网方式,即ABP激活,则比较简单粗暴,直接配置 DevAddr,NwkSKey,AppSKey 这三个LoRaWAN最终通讯的参数,不再需要join流程。在这种情况下,这个设备是可以直接发应用数据的。
5.4 数据收发
加网之后,应用数据就被加密处理了。
LoRaWAN规定数据帧类型有 Confirmed 或者 Unconfirmed 两种,即 需要应答 和不需要应答类型。厂商可以根据应用需要选择合适的类型。
另外,从介绍中可以看到,LoRaWAN设计之初的一大考虑就是要支持应用多样性。除了利用 AppEUI 来划分应用外,在传输时也可以利用 FPort 应用端口来对数据分别处理。FPort 的取值范围是(1~223),由应用层来指定。
5.5 ADR 机制
我们知道LoRa调制中有扩频因子的概念,不同的扩频因子会有不同的传输距离和传输速率,且对数据传输互不影响。
为了扩大LoRaWAN网络容量,在协议上了设计一个LoRa速率自适应(Adaptive data rate - ADR)机制,不同传输距离的设备会根据传输状况,尽可能使用最快的数据速率。这样也使得整体的数据传输更有效率。
5.6 MAC命令
针对网络管理需要,在协议上设计了一系列的MAC命令,来修改网络相关参数。比如接收窗口的延时,设备速率等等。在实际应用过程中,一般很少涉及,暂时不管。
6 地区参数
LoRa联盟官方在协议之外,还发布了一个配套补充文档《LoRaWAN 地区参数》,这份文档描述了全球不同地区的LoRaWAN具体参数。为了避免新区域的加入而导致文档的变动,因此将地区参数章节从协议规范中剥离出来。
这份文档主要讲了LoRaWAN在全球各地区的具体物理层参数,不单单是频段有区别,细化到信道划分,甚至是数据速率,发射功率,最大数据长度等等都有区别。
为了方便大家了解总体情况,我又做了个表。
其实这个表也可以看出一个好玩的事情,为什么韩国的参数和亚洲各国其实差不太多,却单独拎出来。如果你有记得前文中的董事会成员记录,就应该知道韩国SK电信在LoRa联盟中的地位。这么高的地位搞点小特殊,你说过分么。
7 LoRaWAN应用示例
好了,介绍完如上的信息,大家应该对LoRaWAN有了系统的了解。
在断断续续学习LoRaWAN的这几个月,深深感觉到,物联网厂商要想理解透LoRaWAN还是需要做比较大的投入,特别是在实际项目过程中还是会遇到这样那样的细节问题。不过有更快速省事的方法,诸如借助我们长期的合作伙伴-厦门四信的LoRaWAN串口模块,他们提供了非常简单清晰的串口AT命令,厂商可以专注于自己多变的业务应用,是的,那句话,上帝的归上帝,凯撒的归凯撒。
i.基础网络参数配置
配置DevEUI
AT+DEI=11:22:33:44:55:66:77:88
配置AppEUI
AT+AEI=11:22:33:44:55:66:77:88
配置AppKey
AT+AKY=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF
ii.加网操作
AT+JON //启动加网
+JON: 1 Failed // 第一次加网失败
+JON: 2 OK
iii.数据收发
向端口21发送数据12345
AT+TXA=21,12345
收到端口21的数据通知
+RCV:21,abcd
8 End
That’s all.
9 参考
- 硬件 SnowMan物联网开发板
- 软件 yiot易联网SDK
LoRaWAN介绍 - LoRa从业者读这篇就够了相关推荐
- 想快速全面了解LoRa?看这篇就够了!
引言 LoRa与NB-IoT是最有发展前景的两个低功耗广域网通信技术.不过两者之间到底有什么区别和不同?谁又将更胜一筹占领LPWAN制高点? 物联网的快速发展对无线通信技术提出了更高的要求,专为低带宽 ...
- 精述字符编码(读这篇就够了)
文章目录 1.导语 2.ASCII 3.Latin1 4.ANSI 5.GB2312,GB13000,GBK,GB18030,BIG5 6.Unicode 与 BMP 7.UCS.UCS-2 与 UC ...
- 前端基础进阶(十三):透彻掌握Promise的使用,读这篇就够了
Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. 在实际的使用当中,有非常多的应用场景我们不能 ...
- ❤️学懂C语言文件操作读这篇就够了(万字总结,附习题)❤️
目录 一,写在前面 二,为什么使用文件 1,原因 2,数据流 3,缓冲区(Buffer) 4,C语言中带缓冲区的文件处理 5,文件类型 6,文件存取方式 三,什么是文件 1,程序文件 2,数据 ...
- 弄懂gas费,读这篇就够了
Q:gas是什么? gas是指在以太坊上执行操作所需的"燃料". 以太坊提供了虚拟机(EVM,Ethereum Virtual Machine),开发者可以在其上开发各种应用.EV ...
- 单模多模还傻傻分不清楚?关于光模块介绍,看这一篇就够啦!
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你提升运维技能! 说到光模块,相信大家一定不会觉得陌生. 随着光通信的高速发展,现在我们工作和生活中很多场景都已经实现了"光进铜 ...
- 史上最全的光模块介绍,看这一篇就够了!
光模块的工作原理 光模块(Optical Modules)作为光纤通信中的重要组成部分,是实现光信号传输过程中光电转换和电光转换功能的光电子器件. 光模块工作在OSI模型的物理层,是光纤通信系统中的核 ...
- 读excel_基础 | Excel中单元格的引用方式,读这篇就够了!
最近推送了几个Excel中最难的函数,哀嚎遍野,太难了-- 所以今天我们来"从万丈高楼平地起"的平地讲起! 搞懂Excel单元格引用方式,是保证公式准确最最基本的条件! 单元格引用 ...
- 微软黑科技如何加速游戏开发,读这篇就够了
2022迈入尾声,游戏产业这场凛冽的寒风比想象中更为持久与刺骨. 一边是投入的缩减,一边是玩家攀升的要求."既要又要还要"成为游戏制作人的高频句型.在紧预算与精制作的矛盾面前,游戏 ...
最新文章
- gridview中动态绑定通过模板列增加的textbox。
- [ilink32 Error] Error: Unresolved external 'SendARP'
- 消息模式在实际开发应用中的优势
- Taro+react开发(80):状态改变的构造函数
- list redis 怎样做排行_redis实现商品销量排行榜
- 求立方根_初一数学立方根考点详解,立足基础,把握题型,学会方法
- java中List分片方法
- 漫谈Google的Native Client(NaCl)技术(二)–技术篇(兼谈LLVM)
- 论文笔记:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
- dp和px,那些不得不吐槽的故事——Android平台图片文字元素单位浅析
- android 设置文本加粗,如何在Android中将文本更改为粗体?
- Web前端实训两天记录
- winrar 百度网盘_不冲百度网盘会员,如何在手机上打开网盘里的压缩包?
- obs多推流地址_手把手教你-OBS录屏使用
- android studio signingconfigs 打正式包,android signingConfigs打包配置
- 用女人的温暖造就男人的成功
- 计算机中如何美化表格,手把手教你如何一秒美化Excel表格
- 红杉观点|生成式AI:一个创造性的新世界
- spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别
- Vue实现离线创建项目