文章目录
首先桦桦还是喜欢先给出自己整理的思维导图,以便大家梳理整篇文章的框架。
1 了解物联网
话不多说,直接上图,就知道整个物联网的架构。
- 应用层:就是交互界面,我们可以从交互界面直观的看到数据,并且可以向感知层传送控制命令。
- 服务层:其实服务层是属于应用层,服务层就是用来处理从传输层传来的海量数据的。
- 传输层:就是用来传输数据的,我们下面的LORA 技术就是一种传输数据的射频技术。
- 感知层: 就是由单片机和各种传感器构成的,用于将环境的变量转换成二进制数据。
2 LoRa和NB-IOT 谁主江湖?
了解物联网的朋友肯定知道,现在物联网最火的两个技术就是LoRa和NB-IOT。
NB-IoT和LoRa都是低功耗广域网(Low Power Wide Area Network,LPWAN),是一种可以实现低带宽、低功耗、远距离、大量连接的物联网通信技术。
- 综合看起来,NB-IoT和LoRa在技术上难分伯仲.
- 两者主要的区别,在于应用场合的区别。LoRa是基于非授权频段的,NB是基于授权频段的。
技术 | LoRa | NB-IOT |
---|---|---|
频段与质量 | 非授权频段,质量差 | 授权频段,质量好 |
通信距离 | 2-15KM | 支持长距离 |
组网 | 自建网,部署及运维简单 | 只能运营商建设运营,建设维护复杂 |
数据安全 | 多重加密 | 加密模式单一 |
终端成本 | 芯片 1-2美元 | 芯片5美元左右 |
终端功耗 | 电池寿命可达10年+ | 同距离,功耗是LoRa的5倍 |
发展 | 13年发布芯片整个产业链相对较为成熟,在外国商用案例多,但是国内还未成熟 | 17年上半年发布模块产业链受频段、运营商等限制 |
应用场合 | 自主(私有)管理领域,例如智慧农业 | 公共事业,智能水表 |
LoRa是美国Semtech公司的技术,核心专利则主要由国外公司拥有;
NB-IoT更具有本土优势,中国在专利数量上占据优势。由于我国企业更多掌握NB-IoT技术专利,所以我国从政策角度更倾向于发展NB-IoT。
3 LoRa和LoRaWAN傻傻分不清楚
3.1 什么是LoRa?
LoRa是Long Range(长距离)的简称,是一种长距离、低功耗无线通信技术。2009年法国公司Cycleo设计出一种优异的扩频通信算法,后来,该公司被美国semtech公司收购,后者于2013年推出LoRa芯片。目前,semtech公司是LoRa芯片唯一供应商。
- 得益于扩频调制技术(将信息信号带宽扩展多倍,即传输信息的信号远大于信息信号本身带宽),LoRa可以有很长的传输距离。有一个概念需要知道,就是扩频因子,他与传输距离成正比,与传输速度成反比。
3.1.1 LoRa缺点
传输速率低,另外还有一个阻力就是国内更加倾向于发展NB-IOT。
工信部发布的《微功率短距离无线电发射设备目录和技术要求》对LoRa的发射功率,发送数据的时长都做了限制。
另外,由于是公共频段,质量无法得到保证。
3.1.2 LoRa优点
长覆盖,低功耗,抗干扰强,大容量接入,因为使用免费的频段,降低了我们用户部署的成本。
这里必须记住国内的频段是CN470-510
我们可以将LoRa看成是长WIFI,如果不是专门研究通信技术的,我们了解一下就行。我们主要要深入学习的是LoRaWAN协议,就像我们学习计算机网络,我们学习的主要还是各种协议。
3.2 什么是LoRaWAN(LoRaWAN网络架构)?
LoRaWAN是LoRa Wide Area Network(LoRa广域网)的简称,是基于LoRa技术的一种通信协议。它主要包括三个层次的通信实体:LoRa终端、LoRa网关和LoRa服务器。我们观察下图,发现LoRaWAN网络是星型拓扑结构,单个网关可以接入多个节点终端,这就是大容量接入的特点,
LoRaWAN的架构就是上面说过的物联网架构。
3.2.1 节点End Nodes
- 由LoRa模块+传感器组成,传感器采集数据,LoRa模组将终端采集到的数据上传到网关。
节点有三种类型。节点必须加入到LoRaWAN网络,进行入网激活,有两种入网方式OTAA和APB,由于这里内容较多,放在后面介绍。
3.2.2 网关Gateway
- 终端节点与服务器之间的信息桥梁,多信道收发(因为LoRa是扩频调制技术,不同扩频因子的无线电信号是正交的),负责数据的临时存储与透明传输(网关不解析节点数据,也没有业务逻辑,网关起到透传的作用)。
3.2.3 网络服务器NS
- 这一部分是整个架构的核心,有时候也直接叫做LoRaWAN Server 。负责管理所有节点与网关,进行数据处理与控制(接入控制,数据传输与管理,网关管理与配置等。),还有把相关数据传送到AS.
3.2.3 应用服务器AS
即用户交互界面,可以直观的管理设备。
Gateway是IP设备(运行IP协议栈),
End Node运行的是LoRaMac-node(没有运行IP协议栈)。
NS与Gateway之间的接口协议为JSON / GWMP / UDP / IP
NS与AS之间的协议是JSON / GWMP / IP
3.3 LoRaWAN协议架构
LoRaWAN标准协议规范,并不完整,没有定义各个Server交互的通信协议,更没有定义各个Server对外的API。这造成LoRaWAN看起来有标准,但实质上云端LoRaWAN Server并没有标准可执行。而上面说过LoRaWAN Server才是核心。所以这部分都是各个公司自定义的,最典型的是Chirpstack公司。
4 为什么 LoRaWAN 可以低能耗?
LoRa是扩频调制,核心功能是软件算法完成,发射功率小;
LoRaWAN是异步ALOHA机制,仅当需要发送数据时,节点才醒来工作;因此,能耗很低。这一点在后面的节点分类中会具体提到。
5 为什么 LoRaWAN 可以信息安全?
在LoRaWAN网络中传输的数据经过两层加密。这个在下面入网方式会具体解释。
- 网络层:NwkSkey
- 应用层:AppSkey
6 为什么 LoRaWAN 可以长距离传输?
在通信原理里有一个公式,提高发射功率,提高接收灵敏度,提高发射天线增益,提高接收天线增益都能有效提高传输距离。
而节点node和网关内的LoRa模块都做到了这些。但是如果在一个建筑物密集的环境,这种长传输的特性就会被干扰,正如WIfi最害怕的事情就是穿墙。
外国人口稀疏,这也是为什么他们大面积部署LoRaWAN的一个原因。
7 节点end nodes详讲
7.1 节点分类
从A到C,性能是越来越高的,功能也更全面,但是能耗就越高,A是基础型,B和C是扩展型。class A和B可以互相切换。
7.1.1 Class A(双向传输终端)
每个终端设备的上行链路传输之后会紧跟两个短的下行链路接收窗口。以此达到双向通信。
终端设备基于其自身的通信需求来安排传输时隙,在随机时间的基础上有很小的变化。(ALOHA类型的协议)
这种操作为应用提供了最小的功耗的终端系统,只要求应用在终端上行传输后的很短时间内进行服务器的下行传输。服务器在任何时间进行的下行传输都得等终端的下次上行。
7.1.2 Class B(划分接受时隙的双向传输终端)
B类终端设备允许更多接收时隙。除了A类随机接收窗口外,B类设备还在指定的时间打开别的的接收窗口。为了使终端设备在指定的时间打开它的接收窗口,它从网关接收时间同步的信标(Beacon)。这使得服务器可以知道终端何时处于监听状态。让网关周期发送星标来同步网络中所有终端节点,以便终端在周期时隙的确定时间打开短的接收窗口。
7.1.3 Class C(最大接受时隙的双向传输终端)
C类终端设备几乎连续打开接收窗口,只有在发送时才关闭。与A类或B类相比,C类终端设备更耗电,但是它们为服务器到终端设备的通信提供了最低的延迟。
7.2 两种入网方式
无论是ABP,还是OTAA,最终,End Node都会得到3个参数:DevAddr、NwkSKey和AppSKey.
我们首先介绍几个容易混淆的概念,很少有人会解释,下面桦桦总结一下。
-
DevEUI: 标识唯一的终端设备。
-
AppEUI: 标识终端的应用提供者。
-
AppKey: 是由应用程序拥有者提供给终端的
上面的三个信息在入网前就已经在终端配置好的。 -
DevAddr:由标识当前网络设备的32位ID组成。
-
NwkSkey:网络会话密钥,被终端节点和网络服务器用来计算和校验所有信息的MIC,以保证数据的完整性。也用于对单独的Mac的数据载荷进行加解密。
-
AppSKey:应用层会话密钥,被终端和网络服务器用来对应用层消息进行加解密。
上面的3个信息是两种入网方式最终终端都需要配置好的参数
7.2.1 空中接入激活OTAA(Over-The-Air Activation)
-
OTAA:是LoRaWAN的一种透过大气电波(LoRa网络)入网方式,当终端开机后,需要向服务器发送join-request message信息,请求入网,然后服务器同意入网后,并返回join-accept message,终端在对这个accept信息解析,获取通信参数,对终端进行配置。具体的如下。
-
首先,一个End Node需要配置:AppEUI和DevEUI;
并且取LoRa芯片的RSSI随机值,得到DevNonce。将这3个参数,组织成Join Request数据帧,发送给LoRaWAN Server。 -
Server接收到Join Request后,分配DevAddr,连同AppNonce和NetID,组织成JoinAccept数据帧,回应给EndNode。
-
End Node接收Join Accept后,提取DevAddr;结合4个参数:AppKey、AppNonce、NetID和DevNonce,使用aes128_encrypt(),生成2个密钥:NekSKey和AppSKey。
7.2.2 人工接入激活APB(Activation By Personalization)
独立激活,LoRaWANServer和End Nodes双方都保存相同的3个参数:DevAddr、NwkSKey和AppSKey。在一开始就配置好的,不需要OTAA那么麻烦。
8 云平台介绍
当前市面上的LoRaWAN Server,除了前面提到的阿里云和腾讯云,还有TTN、ChirpStack等,他们都基于LoRaWAN,而且符合LoRaWAN标准的节点理论上都可以接入这些Server,但是由于云端Server没有标准,各家的LoRaWAN网关接入协议、应用接口都不一致,无法相互兼容。
另外,不管是Semtech公司还是LoRaWAN联盟,都没有提供LoRaWAN Server的实现示例!LoRaWAN节点入网,上报数据等都必须依赖LoRaWAN Server,而官方没有提供LoRaWAN Server示例,这让那些不具备开发LoRaWAN Server的实力的小公司,想用LoRaWAN却用不了,只能抛弃LoRaWAN而使用自定义协议。
ChirpStack提供开源的LoRaWAN SERVER代码。
https://www.chirpstack.io/overview/
9 ChirpStack
ChirpStack是一个由 CableLabs 主导的开源的LoRaWan网络服务器堆栈,之前该项目的名字叫LoRa Server。(后改名为ChirpStack)
ChirpStack为LoRaWAN网络提供了开源组件,它们共同构成了一个现成的解决方案,包括用于设备管理的用户友好型Web界面和用于集成的API,并且模块化体系结构使其可以集成到现有基础架构中。目前所有组件均已获得MIT许可,并可以用于商业目的。
ChirpStack提供的组件如下:
- ChirpStack网关网桥:处理与LoRaWAN网关的通信
- ChirpStack网络服务器:LoRaWAN网络服务器的实现
- ChirpStack应用服务器:LoRaWAN应用服务器的实现
- ChirpStack地理位置服务器: 与LoRaWAN地理位置后端的集成
- ChirpStack网关操作系统:基于嵌入式Linux的操作系统,可在LoRa网关上运行(完整)的ChirpStack堆栈。
桦桦接下来会重点介绍ChirpStack和TTN,并整理成博客。
下面是chirp stack部署的博客,后面会持续更新。
https://blog.csdn.net/weixin_46027505/article/details/107088145。