LoRa,相信做小无线开发的朋友都不会陌生,Semtech公司独有的扩频调制技术,能够实现低功耗远距离的Sub-1G无线传输;而LoRaWAN,因为涉及到协议,因此不是那么广为人知;本文,主要针对LoRaWAN协议进行一个总结,包括以下内容:

LoRaWAN从哪里来

LoRaWAN有什么特性

LoRaWAN用到哪里去

/1/

LoRaWAN从哪里来

LoRa联盟(LoRa Alliance)于2015年三月由思科,IBM和Semtech等多家厂商共同发起创立,其成立之初的董事会成员包括19家来自于电信运营商,网络安全方案商,云平台方案商,基站方案商,终端芯片方案商,行业应用方案商的企业,截止2018,已经有500+联盟会员;LoRa联盟致力于推广LoRaWAN在物联网低功耗广域网(LPWAN)的标准化及广泛应用;而LoRaWAN定义了从终端节点,到网络服务器端的标准和架构;LoRaWAN网络图如下

/2/

LoRaWAN 的基本特点

一个LPWAN (Low Power Wide Area Network),一般需要考虑如下参数指标:标准化,网络架构,通信距离,通信时延,功耗,安全性,鲁棒性,网络节点规模,单双工,支持的应用多样性等

我们从如下几个方面来了解LoRaWAN的细节:

标准化:LoRaWAN 本身是一个标准的协议架构,从MAC层往上,都是全球通用开源的,而且还有定义配套的认证标准;考虑到LoRa本身工作在免授权的ISM频段,不同国家针对ISM频段具体规定各不相同;LoRaWAN针对这个问题,规定了基于区域的LoRa参数标准,比如中国ISM的CN470~CN510以及CN779~CN787两部分;

网络架构:LoRaWAN是一个标准的星型网络架构,从节点端发送的数据,经过网关的中继,到达网络服务器端;在这里,为了简化节点端到网关的通信,节点不需绑定具体的网关进行通信,从节点发出的数据,由不同网关接收到后,一起发给服务器端,由服务器进行数据包的处理,同时,如有需求,服务器会选择最优的网关,回应数据给节点;整个过程,其实LoRaWAN实现了类似GPRS的功能;

功耗:LoRaWAN的网络是一个非同步的ALOHA网络,且无中继器的功能,节点端根据自己的需求进行数据的传输;与同步网络需要定时唤醒进行通信相比,LoRaWAN的拓扑具有明显的优势;除了网络方面,LoRaWAN基于的LoRa调制,其射频部分本身就具有低功耗的特性;功耗,也是LoRa与NB-IOT技术对比的一个明显技术优势;

网络容量:没有做个LoRaWAN设计的朋友可能不知道,LoRaWAN 网关端射频芯片与节点端不一样,网关端的芯片射频方案以CN470~CN510举例,为SX1255+SX1301;这与大部分的Sub-1G技术不同;而正是这个设计,使得LoRaWAN的网关容量可以大幅提高;继续往下说,具体是SX1301有哪些特性,能大幅提升网关的节点容量:一个是10个独立的接收通道,一个是ADR; 10个独立通道IF0~IF9中,其中IF0~IF7可以同步接收不同速率下的LoRa包,更多信息可以参考SX1301的数据手册;而ADR,根据节点与网关的远近及信号质量,会动态的设置节点端的通信速率,使的近距离的采用更高的速率,ADR的示意图如下。

因为LoRa是扩频调制技术,不同扩频因子的无线电信号是正交的,这是一个很重要的特性。上面的IF0~IF7,同一个IF信道,扩频因子(Spread Factor)从SF7~SF12(对应速率DR7~DR12)的6个无线电信号,彼此不相冲突。这样一来,一个SX1301可以构建6x8=48个“虚拟信道”,容量得到更进一步提升。(实际SX1301接收过程,同时只能解调8个数据)

安全性:LoRaWAN从如下几个方面保证安全,设备与服务器的双向认证,MAC层的加密以及端到端的应用层数据加密;我们来进一步看LoRa的安全性的实现: 每一个LoRaWAN设备出产时候必须预置 AppKEY,设备端及服务器端保有相同的AppKEY, 这个AppKEY将用于设备入网/激活时,服务器端针对设备端入网命令的解密(AES-CMAC),解密/验证通过后,将产时NwkSKey和AppSKey,分别用于MAC层及APP层的数据有效性检验;

从上面的总结可以看出,LoRaWAN是从设计之初就考虑到LPWAN应用情景所需要考虑的问题,从各方面都有对应的优化设计;

通信时延:通信时延与多方面因素相关,包括通信的速率,通信包的构成,信道的拥挤程度,同频的干扰,以及通信的方式设定;LoRaWAN的底层速率可设置SF7~SF12,分别对应250bps和5470bps,针对包格式,可以参考LoRaWAN的数据手册,这里就不特别举例计算,LoRaWAN的通信速率并不高,不适用与实时性要求高的场合;

通信模式:LoRaWAN支持半双工通信,以Class A举例,节点端发送数据后,在RX_DELAYS(一般默认1s)后会开启接收端口,接收来自服务器的数据;而Class C模式, 节点射频除了需要发送数据,其他时间都处于接收状态;

/3/

了解LoRaWAN的专属词汇

谈到一个LPWAN,从顶层来看,肯定设计到设备定义,网络模型,如何入网,如何通信等基本,我们就针对这些概念讲讲。

设备定义及网络拓扑

如最上图所示,LoRaWAN协议为星型网络,由终端节点,网关,网络服务器,和应用服务器组成;LoRaWAN入网过程,通过哪个网关加入服务器,由服务器决定,这对终端节点来说,网关算是透明的,这个特性也使得LoRaWAN网关很适用于移动物联网设备;

入网流程

LoRaWAN的入网方式有两种, OTAA (Over The Air Activation)和ABP(Activation by Personalization); 节点端通过OTAA入网的流程如下图。

-/入网前,需要模组预置 JoinEUI, DeviceEUI,NwkKey和AppKey,这些需要向LoRaWAN运营商申请, 比如在阿里的LinkWAN平台申请;

-/接着,节点端先发送JOIN 请求, JOIN请求携带JoinEUI, DeviceEUI和DeviceNonce,所有收到JOIN请求的网关都将转发JOIN请求给网络服务器;

-/服务器收到JOIN请求后,向应用服务器转发,由应用服务器根据JOIN请求包里的密钥信息,决定是否授权节点入网;

-/如果允许节点入网,应用服务器回复Join Accept信息,包含JoinNonce, DevAddr,HomeNetID这些关键信息;

-/节点端解析JOIN ACCEPT消息,解密出对应的密钥,完成入网过程(这里,不同LoRaWAN版本的密钥定义不一样,详见LoRaWAN保准)。

ABP入网流程,只是将与网关的交互过程省略,而直接将通信用密钥预存在节点中,这里不做描述;

节点工作模式

LoRaWAN分三种工作模式,Class A, Class B, Class C;三种模式的简要对比如下:

Class A: 非同步网络, 节点平常处于睡眠,需要发送数据时,唤醒发送,发送后可以开启两个短暂的接收窗口接收服务器的数据;服务器有数据下发必须等节点的上传后的接收窗口;这种模式优点是功耗低,缺点是服务器下行数据时延不确定;

Class B:同步网络,在Class A基础上, 节点端可以定时开启接收端口接收数据,这种方式会让服务器端的下行数据时间可控,附带的成本,是所有节点必须与服务器端进行时间同步;

Class C: 节点除了发送状态外,其他时候均处于接收状态;这种工作方式双向时延最低,但是带来的也是更高的功耗;

LoRa,相信做小无线开发的朋友都不会陌生,Semtech公司独有的扩频调制技术,能够实现低功耗远距离的Sub-1G无线传输;而LoRaWAN,因为涉及到协议,因此不是那么广为人知;本文,主要针对LoRaWAN协议进行一个总结,包括以下内容:

通信流程

通信流程与LoRaWAN节点工作模式相关,也和发送的数据类型有关。数据类型包括Confirmed data (需要接收端回馈ACK)和unconfirmed data (无需要接收端回复), 这里以最通用的Class A举例,如下图。在节点端上传数据Cu后,会在RECEIVE_DELAY(一般1s)后开启接收端口,网关接收到数据后,如果网关有额外的数据需要下发,可以在下发的数据包置位F_P (Frame Pending),告知节点还有下一包数据。节点接收到网关的Confirmed Data0 cd后,发现包中的F_P是置位的,于是马上回复ACK,然后1s后继续开启接收端口接收第二个Confirmed Data cd+1,节点回复ACK后,结束。更复杂的设计到通信失败的情景,可查阅LoRaWAN的标准;

一篇文章帮你了解LoRaWAN特性【转自微信公众号 智联网事】相关推荐

  1. python程序设计第七章答案_MOOC课程答案第七章单元测试答案_Python语言程序设计答案免费微信公众号...

    MOOC课程答案第七章单元测试答案_Python语言程序设计答案免费微信公众号 更多相关问题 [问答题,简答题] 什么叫仰视图? [问答题,简答题] 常见事故一般分为? [问答题,简答题] 进行气藏. ...

  2. 一篇文章帮你搞定JVM中的堆

    文章目录 一篇文章帮你搞定JVM中的堆 堆的核心概述 堆的内存细分 设置堆内存大小与OOM OOM(OutOfMemory)举例 年轻代与老年代 图解对象分配过程 MinorGC,MajorGC,Fu ...

  3. 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生

    来源:微信公众号[编程新说] 曾经的VIP服务 在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求.因为这样最简单. 其实代码实现大家都知道,就是 ...

  4. 3秒帮你用大数据搞定微信公众号运营!

    微信红利期已经过了,很难再通过简单的发发帖子.做做营销活动来吸引用户眼球. 更何况,对于大部分企业和个人来说,并不具备先天的品牌优势,很难有能力做到像papi酱.咪蒙这样每篇推文10 万+阅读量的成绩 ...

  5. 【微信开发第二章】SpringBoot实现微信公众号普通消息和模板消息回复

    前言 在进行微信公众号业务开发的时候,微信公众号的消息回复是非常重要的一环,而微信公众号消息回复分为:普通消息自动回复和模板消息回复.该篇文章会先使用微信测试工具过一遍流程,再使用代码进行实现,并且每 ...

  6. 【微信开发第一章】SpringBoot实现微信公众号创建菜单,同步菜单功能

    前言 在进行微信公众号业务开发的时候,微信公众号的自定义菜单是非常重要的一环,该篇文章会先使用微信测试工具过一遍流程,再使用代码进行实现,争取看过的小伙伴都能够实现,创建公众号菜单和代码同步公众号菜单 ...

  7. 微信公众号服务器端脑图,微信公众号中隐藏的思维导图工具,帮你随时随地高效思考...

    「有什么好用的思维导图工具推荐呢?」后台里收到了很多小伙伴类似的问题. 事实上,市面上的思维导图工具真的非常多.无论是老牌的 XMIND,还是在线版的 百度脑图或者 ProcessOn 都可以帮你制作 ...

  8. 第8章 第七天 - 电影网站整合/集成到公众号

    第1章 课程介绍 了解学习课程的必要性,所包含的知识点,课程安排,学习前提,课程收获. 1-1 导学 第2章 第一天 - 准备工作 介绍微信公众号的基本知识与需要关心的流程,以及常见微信开发问题的解决 ...

  9. 小程序开发教程,字节跳动Android三面凉凉,一篇文章帮你解答

    开篇 说一下我大概的情况.渣本毕业,工作已经有快3年了,从高中就开始玩小破站.无论是学习还是日常放松都是在b站.大学主学的软件技术专业,所以,入职bilibili是我大学时期给自己定的小目标. 在学校 ...

最新文章

  1. office365为新建账号发送欢迎邮件
  2. 要离开苏州,一大堆东西要处理(包括租的房子)
  3. linux mpich配置_Linux下安装MPICH
  4. 更新至Android Studio4.1后发现as打不开的解决方案
  5. Android6.0 wakelock深入分析
  6. 修改web.config
  7. 推荐算法在招聘商业化场景中的应用实践
  8. python二维列表长度_python如何使二维数组的高度大于长度
  9. spring mvc 前台属性数据的传递和后台属性数据的接收
  10. Android仿miui11风格,华为手机适配MIUI11图标风格主题-适配EMUI9.1/9.0
  11. oracle数据库有64位的吗,plsql有64位的吗
  12. 【无标题】半导体器件特性曲线测试方法的研究
  13. antdesignpro prolayout 三级菜单问题
  14. FaceBook流程到底应该如何?
  15. C语言程序 输出杨辉三角,C语言打印输出杨辉三角
  16. 网易开源分布式存储系统 Curve,性能彪悍
  17. java消息队列-kafka
  18. 135编辑器怎么用HTML,微信公众号文章查看HTML代码(HTML代码修改方法)
  19. 泪目!上海00后小伙AI「复活」奶奶,100%还原音容笑貌,却引发巨大争议
  20. axp202电源管理

热门文章

  1. jquery设置checkbox为checked状态不改变的解决办法
  2. 大数据分析策略和发展趋势
  3. 【Nginx】使用nginx进行端口转发
  4. Linux入门 30_Linux中shell执行流控制语句实例详解
  5. 2021全国计算机ps一级,PS2021版全新功能:“颜色分级”堪称最强调色工具
  6. 大势至服务器文件备份系统怎么样,大势至服务器数据备份软件
  7. 常见模型量化方法介绍
  8. Excel中设置内边框和外边框
  9. 主流常用100个快递物流单号查询接口对接指南
  10. Solidworks三维模型导入Simscape联合仿真的步骤