物联网实战--LoRaSun自组网之(一)开篇介绍

目录

一、背景分析

1.1 行业数据

1.2 市场现状

1.3 关于cat1的思考

1.4 LoRaWAN分析

1.5 小结

二、LoRaSun简介

2.1 系统结构

2.2网络拓补

2.3 协议特点

三、测试效果

3.1 视频演示

3.2 网关容量

3.3 CPM测试

四、测试套件

五、写在最后

5.1 协议缺陷

5.2 GitHub加速器

5.3  资料说明

5.4 命名来历

5.5 重要声明       

5.6 关于测试套件


一、背景分析
1.1 行业数据

        Semtech公司在2013年推出的一款远距离、低功耗的无线收发器SX1278,拉开了低功耗广域网(LPWAN)领域激战的序幕,彼时,还处于移动互联网(手机)的风口,物联网并不算火热;直到2017年,NB-Iot大规模推广,彻底引爆了物联网市场。像烟感、地磁、共享单车、水表、气表、电表等各类应用和概念层出不穷,其中很大一部分产品都会有LoRa和NB-Iot两种通讯模式,有一股楚汉争霸的态势,大家都在争论两者谁会胜出。没想到,半路杀出个程咬金,2020年左右,各大厂商相继发布了cat1芯片和相关模组,得到了市场的强烈认可,短短几年,在广域网领域获取了较大的市场份额,以下是行行查里弄来的数据,可供参考。

1.2 市场现状

        从图表可以看出,三者的每年出货量都在1亿往上,广域物联网领域基本上可以认为是三足鼎立了。当然,这里的数据很难去验证了,但是从直观的感受来讲,市场上的热度是cat1>LoRa>NB-Iot的,本人有三者相关的技术群,从人数和平时各群讨论热度来看是这种关系的;另外,本人之前写了一些博客,从阅读量来看也差不多。

        另外,最近有一些消息也顺便提一下,一个是思科逐步退出LoRaWAN市场,一个是AT&T宣布逐步关停NB-Iot网络。

1.3 关于cat1的思考

         说了这么多,其实主要想引出的一个问题就是cat1为什么能够在短短几年内异军突起?以往在对比广域物联网技术的时候,大部分还是按下图的模板,去比较终端的特性,这无可厚非,都在宣传自己的特长,甚至有时候参数掐点写,比如功耗你说4uA,我说3uA;距离你说10公里,我说15公里······这么比,最终结果就是误导了消费者和开发者,真正落地的时候各种问题,试错成本很高,体验很差。

        回到cat1本身,它的高速率增长核心来讲就两个原因:一是 相对于cat4降速减配后价格下来了,原来cat4模组价格基本在150元以上,cat1刚出来价格40多,随着出货量的增加,现在已经来到了20元左右的价格(还有8块钱的就不说了😭),性价比已经不错了;二是 可以复用现有的运营商基站,这一点才是真正的关键,特别是国内,4G基站在城区基本上已经没什么盲区了,地下室、高速公路上也基本有信号,甚至很多郊区、森林公园也都还有,这就为cat1的应用提供了最基础的保障。反观同根同源的NB-Iot,由于基站需要重新搭建或者升级,导致覆盖率一直上不去,站在运营商的角度,投入高,收益未知,毕竟是新东西,只能挤牙膏似的慢慢来;站在使用者角度,覆盖率上不去,体验不好,等运营商基站建了差不多了再上NB,最终结果就是恶性循环了。

        所以,在广域物联网领域,从技术上讲,“看不见” 的基站才是成败的关键,只有盲区少了、信号好了才能提升用户体验、降低维护成本,实现多赢局面;至于终端的技术特性,如果不是差一个以上的量级,其实都是可以接受的。例如,cat1刚开始低功耗不行,虽然基站没问题,但是低功耗应用基本不会考虑;然而,现在已经有厂家搞出了休眠2uA的cat1模组,意味着cat1在低功耗领域也要来分一杯羹了。

        对于cat1和NB来讲,基站是运营商在管理,跟开发者和用户没啥关系,最多也只能投诉,能不能帮你解决看人家心情;对于开发者来讲,也只有LoRa的基站可以把玩把玩了。

1.4 LoRaWAN分析

        说到LoRa,LoRaWAN是一个绕不过去的话题,它是一个公开的、由LoRaWAN联盟主导的开放式协议栈,开源免费;听起来很不错,不过在使用过程中也会有很多问题:

        首先是成本过高,软件虽然免费,但是网关要自己买,以前一个SX1301模组都要近千元,成品户外网关三到五千,多部署几个网关的话成本就很重了,现在倒是降下来了,SX1302三百多就有了。

        其次,部署起来也麻烦,要自己测信号,选位置,如果成本敏感,要选择一个最优位置并不容易,时间成本很高,另外还有供电问题,好位置不一定有电源。

        再者是功耗比较高,LoRaWAN网关内部除了SX1302模组外,正常还有嵌入式的linux系统板、4G、GPS,有的还有交换机,整体下来功耗有个十几瓦,如果没有电源,想用太阳能等方法几乎不太可能,最终也只能强行拉线,这个也是隐形成本,可能一开始并没有考虑进去的。

        最后一点是开发难度有点大,这里并不是说技术上有多难,而是LoRaWAN整体技术栈覆盖广、细节多,对于很多工程师来讲,本来就只会点单片机相关的技能,现在还要学嵌入式linux、服务端部署、网络通讯、还有一些网站的知识,真会搞死人,令开发者望而却步;以至于网关需要交给专业的第三方公司,购买成品网关,提供一整套服务给你,说白了不就是运营商吗

        这应该也是LoRaWAN起初的定位--运营商角色,这一定位在国外问题不大,地广人稀,4G信号不好,但是在国内就很难实现这一愿景了,能用4G解决的一般不会考虑其它技术,而目前很多大规模的应用都能用4G解决,比如智能手表、共享设备、定位追踪等,剩下的比较大的4G暂时搞不动的市场就是表计了,这玩意儿对低功耗、体积和成本确实有极致的要求,暂时都是LoRa或者NB,随着cat1功耗进一步优化,有可能这部分市场也要被吞食。再者说,“运营商”这三个字是需要有信用和能力背书的,一般公司无法扮演这个角色的。

        总体来讲就是LoRaWAN使用起来挺麻烦的,信号补盲成本高,部署过程中涉及人员过多,沟通成本高,适合收益较高、规模较大的网络。

1.5 小结

        结合目前的WIFI模块、4G模块、NB模块和LoRa模块的行情,明显地WIFI和4G的热度是高很多的,除了市场这一决定因素外,还有两个重要原因:一是 技术门槛低,不论WiFi还是4G,应用开发者一般都不需要去阅读协议文档和芯片资料,只需要看看AT手册即可,时间上可能一两天就入门了;二是 部署起来很省心,像WiFi一般用在智能家居场景,无线路由器基本上属于日常刚需,用户自身都已经解决信号覆盖问题了,而4G上文提到过了,运营商基本上也都覆盖完整了,对于部署过程,用户一般按照操作手册配置配置即可,省时省力,体验良好。在实际项目中,时间就是金钱,如果部署过程花太多时间和人力,搞不好整个项目是要亏钱的。

        客观地讲,LoRa物理层技术是非常不错的,我在2016年左右接触到了LoRa,当时做拉距测试时确实被惊艳到了,信号竟然穿透十几层的楼,这在大部分应用场景下都足够使用了;至于宣传说的十几公里,那都是在条件非常理想的情况下,而且速率极低,看看就好了,实际使用还是要自己测试评估的,我的观点是 与其去纠结那几公里表面距离,还不如多部署几个网关,整体效率会大大提升,终端也可以更节能,维护成本直线下降

        在后续的几年内,我也陆陆续续做了几个LoRa相关的项目,大多是电力安防、智慧消防和能耗监测相关的,终端并不多(从几十个到几百个都有),项目金额也不大,所以在方案上并没有选择LoRaWAN,都是自己搞个简单的组网协议,将就着用,没有低功耗的场景就用轮询,有低功耗要求的就随机延时发送,数量不多,勉强能用。在项目过程中,一直寄希望于有成熟、可用、开放的LoRa自组网协议,但是一直都没找到,后来利用业余时间构思了一套流程,具体方法写成了专利的形式,具体可以下载来看:一种基于LoRa无线模块CAD模式的嗅探方法及系统 [发明].pdf

        但这只是个方法而已,只有骨架,没有血肉,于是在最近一段时间又突然想起来有这么个事,就把这个方法实现了,也就是标题的LoRaSun自组网协议栈,整个项目完全开源,项目地址 https://github.com/WalleFarm/LoRaSun 。当然,项目处于起始阶段,还有很多没有完善的地方,望见谅;同时也希望通过不断地反馈去完善,直到可以实际应用。GitHub加速器

二、LoRaSun简介
2.1 系统结构

        如果把LoRaWAN网关类比于运营商的4G基站,那么把LoRaSun网关类比于家用WiFi路由器就比较合适了,目的就是低成本、小规模的组网应用。下面就是整个结构原理图,并不复杂,就是网关+节点,其中的特点是网关的每根天线都是由一个跟节点一样的LoRa模块驱动的,在测试板上我都是用sx1268模组;更重要的一点是,每个LoRa模块都有一个独立的MCU驱动,本质上就是从机的角色,通过串口与主MCU通讯,这样做的原因有二:一是 LoRa的CAD检测对实时性要求比较高,如果天线LoRa模块多了之后,只有一个主MCU的情况下实时性无法保证,另外,主从模式下,主MCU可以专注于节点管理、交互、后台连接等任务;二是便于扩展,这种主从模式下,要增加天线、扩展容量只需要串口总线上增加相应的天线模块即可,不用担心主MCU的引脚不够用,因为一个LoRa模块至少需要RST、MISO、MOSI、CLK、NSS五根信号线。

        LoRaSun协议栈是建立在上图所示硬件框架之上的,网关使用的是与节点类似的普通LoRa模块,成本低、上手快、调试简单。所以LoRaSun协议栈有三部分的代码,网关主MCU、天线从MCU和节点,代码结构很清晰简洁。

        当然了,硬件驱动是少不了的,协议栈目前支持SX1278、SX1268和LLCC68三种型号的LoRa模块,其中LLCC68是SX1268的阉割版,价格便宜,不支持SF=12的情况,代码是共用的;这三种型号的模块只要参数合理是可以相互通讯的,评估板网关天线固定使用SX1268模块,相当于全功能,节点可以随意,评估节点三种型号都有,可以自行购买测试效果。

        LoRa的开发难度相对一般外设来讲还是比较高的,具体可以看我之前的一篇文章,物联网实战--驱动篇之(三)LoRa(sx1278)-CSDN博客

我这里已经封装好了,开发者无需关心硬件驱动层了,甚至都不需要看芯片手册了。节点端只要根据接口函数配置下设备SN和密钥之类的信息就可以了,剩下的就是数据收发了;网关端就是配置服务器信息即可实现数据上云的功能了。在demo里,节点上传的数据有三种转发形式,一是最简单的串口打印输出,串口调试工具直接查看;二是电信AEP平台,物模型什么的在后续文章中会相继给出;三是我自己开发的物联网套件 端点物联,可以手机端查看数据,因为是完全开放的,所以很多测试都是用这个工具完成的,用第三方平台没法完成。端点物联也是个开源项目,项目地址:GitHub - WalleFarm/M2M-IOT: 端点物联

串口输出

AEP平台

端点物联

2.2网络拓补

        网络整体上还是保留着星型网络的结构,因为这种结构是最简单、最稳定、最高效的,得益于LoRa的特性,覆盖范围一般都够用。但是不管穿透力多强,总是有盲区的,NB-Iot发展不理想的一个重要原因就是盲区太多了,实际部署很费人;而cat1得益于4G基站的覆盖率发展迅猛,那么4G基站又是如何补盲的呢?可以看下这篇文章,路边到底有多少树是基站伪装的 ,简单讲就是哪里不行补哪里,因为经济效益总是有的,在补盲的时候,4G一般用的是小基站,单价可能就六七万。

        LoRaSun网络也是借鉴了这种思路,以静态模式为主网关组网,动态模式为协网关补盲--即静态为主、动态为辅;这里的静态模式大概意思就是每根天线各自固定监听一个信道,多根天线就可以监听多个信道了,每根天线的速率都不一样,这样就可以适应不同距离的节点了;动态模式利用CAD原理监听,可以在短时间内确认合适的信道,网关天线至少可以只有一根,这种模式下适合制作低成本网关进行信号补盲,一个LoRa+一个4G,再配合周边器件,成本可以控制在百元左右,另外,由于器件少、功耗低,可以使用太阳能+锂电池作为供电手段,在部署上更为灵活简便。具体的后面对协议栈进行深入解读时再说明。

2.3 协议特点

1.协议栈轻量化:单纯节点协议占用ROM≈13KB,RAM≈2KB,这在大部分廉价芯片上都能跑得起来。

2.加密模式多样化:提供明文、TEA和AES三种加密模式,明文主要是为了方便学习调试;TEA占用空间更小、效率更高,以8字节为一个单元,冗余数据更少;AES安全性较高。

3.应用密钥随机化:每个节点入网后都会分配到一组随机数,节点会根据约定的算法生成应用密钥,应用数据传输都使用这一密钥,安全性更高。

4.门槛低:有了协议栈,开发者就可以很轻松地实现LoRa的组网功能,无需过多关心LoRa本身的特性和细节,降低开发门槛。

5.动态速率:在动态模式下,速率是实时自适应的,在单次通讯中就以最优的速率进行通讯,无需网关或服务端跟踪测算;这在多变的环境中很有用处。

6.低功耗唤醒:节点在入网时都会上报一个唤醒周期,例如10,那就是10秒进行一次CAD监听,其余时间休眠,网关会根据这个周期对终端节点进行准确地唤醒,然后进行下行数据传输。

7.D2D传输:也就是设备间传输,数据无需经过网关;由于网关本身也是用普通LoRa模块组合的,所以协议栈天然地具备D2D能力,此时发送方就是充当临时网关的角色,按照流程将对方设备唤醒,然后进行数据传输,这在联动控制时比较有用。

8.无限中继:由于前端网关与节点之间已经组成了一个完整的通讯单元,所以网关数据转发形式可以多样化,比如RS485、WIFI、4G、局域网等等,甚至可以通过另一个LoRa将数据利用定向天线传输到远方的目的地,在网关端进行数据中继,从而不影响节点与网关之间的交互效率,这很适合没有4G信号的场景,比如森林防火,远程灌溉等等。

9.传输可靠:无论上行还是下行,每个数据包都是有确认机制的,如果发送方没有收到接收方返回的确认信号则认为单次发送失败,会进行再次发送,超过限定次数后会通知应用层失败信息,最大限度保证数据的可靠性;另外,数据都有CRC校验,不完整或者错误的数据会被丢弃。

10.连续传输:这部分内容后续会实现,由于LoRa的缓冲区只有255字节,没法传输大量数据(比如10KB),为了解决这个问题,协议栈会支持大数据量发送功能,敬请期待。该功能适合传输低分辨率的图片,适合旧表计远程抄表升级改造 等应用场景。

三、测试效果
3.1 视频演示

LoRaSun演示视频

        

        以上是LoRaSun整体的使用效果,只是简单测试,基本流程是开机--搜网--入网--数据交互,非常简单。在LoRaWAN中,大家最关心的一个参数就是网关容量,意思是这个网关可以容纳多少个节点,有的说几千个,有的说几万个,实际上这是没有标准答案的,因为LoRa的传输速率跨度太大,同样的数据(100字节)从几十ms到将近10秒,根本没办法统一度量,跟你实际使用的场景、数据量和上报周期有很大关系。

100字节发送时长

3.2 网关容量

        但这又是一个很重要的参数,实际部署时你要大概评估需要几个网关,或者说开发者要知道大概多久上报一次数据比较合适,这个不可能现场再去改动的,基于此,我想到了一个概念,那就是每分钟并发数(Concurrent rate per minute, CPM)。大概测试流程是这样:

·        1. 设备入网后,在每分钟的起始时刻产生一个0~45之间的随机数,也就是延时发送秒数,该设备等到延时时间到后启动第一次发送,如果发送成功那就结束本回合任务;如果发送失败,随机延时0~10秒,第二次发送;如果再次失败,那就再随机延时0~10秒再次发送,三次都失败则认定为这个数据包发送失败。

        2. 经过长时间(2小时以上)测试,会得到一组数据,一次成功率、二次成功率和三次成功率,如果设备数量少,比如就5个,那三次成功率基本上接近100%,但是随着设备数量的增加,碰撞的概率会大大增加,相应的各次成功率会下降,在阶段增加设备的过程中,开发者可以通过观察成功率,结合自身对成功率的要求,就可以大概得到该网关的CPM值了,有了这个数值后,就可以较为精确计算网关容量了,开发者在开发应用程序的时候也可以大概知道产品的上报周期了。

        举个例子,比如评估板的4天线网关CPM值大概是12左右,对于部署总数量根据项目是大概知道的,比如500个终端节点,那么上报周期大概就是500/12=42左右,也就是节点上报周期最好大于42分钟,最后再结合产品自身的应用需求,评估这个上报周期是否合适,如果太久了,那就增加网关,平摊设备数量,直到满足要求为止。由于LoRa很多产品都是低功耗的,比如烟感,上报周期正常24小时是没问题的,那么在CPM值等于12的情况下,这个4天线网关大概可以容纳24*60*12=17280个烟感节点,这时候决定容量的已经不是信道碰撞了,而是网关内部空间是否足够管理这些设备的信息,比如SN、密钥等等。

3.3 CPM测试

        使用每分钟并发数(CPM)这个概念的好处是可以通过比例缩放的形式较为准确计算网关容量,因为数据是通过模拟实际环境产生的,以分钟为单元主要由测试效率、成本和LoRa本身的特性决定的,这样用户只需要十几个到几十个设备就可以大概知道网关容量了,其实LoRaWAN网关也是可以通过相同的方法评估容量的。下面是我测试评估板4天线网关的一些数据截图,基本上三次成功率在95%(也就是第三列百分比小于5%)以上是可以接受的,CPM值大概是13左右,数据长度是24字节。后续再加入相关调度算法,应该可以再提升提升。

        一开始测试数量是7个,三次成功率已经接近100%了。

四、测试套件

        测试套件可以在这里购买 https://item.taobao.com/item.htm?ft=t&id=854645211086

        至少包含一个4天线网关和多个节点,节点数量可以由自己决定,并且提供SX1278、SX1268和LLCC68三种型号的节点,以下是一些设备产品图片。

终端节点特写

网关+节点

节点说明图

网关说明图

        测试套件在这里只作简单介绍,后面的章节会详细讲解使用流程。

五、写在最后
5.1 协议缺陷

        LoRaSun协议栈完全开源免费,但目前还不成熟,仅用于学习。其中,动态模式的实现较为巧妙,适合学习;只是CAD检测虽然效率高,但也存在两个缺点:

        一是距离缩水,预估缩水30~50%的通讯距离,这一方面还没有进行系统性测试,后续会进行测试并把测试结果发布在公众号里;

        二是容易误检测,网关天线之间距离较近,收发过程会影响周边天线的CAD检测结果,在SX1268和LLCC68中,CAD参数可以设置,通过测试调整CAD检测参数应该可以规避这个问题,这一块会在后续的更新中体现,由于SX1278的CAD参数固定,所以它在动态模式下效果不太理想。       

5.2 GitHub加速器

        如果GitHub打不开,可以下载一个加速器Watt Toolkit 

GitHub加速器界面

5.3  资料说明

        这个项目的资料比较多,为了统一管理,都放在的QQ群文件里了,GitHub的相关地址如下:

        * LoRaSun开源地址: https://github.com/WalleFarm/LoRaSun
        * M2M-IOT开源地址: https://github.com/WalleFarm/M2M-IOT
        * 协议栈原理专利:CN110572843A (一种基于LoRa无线模块CAD模式的嗅探方法及系统)
        * 测试套件采购地址:https://duandianwulian.taobao.com/  

        本人的其它文章导航地址:端点物联网学习资源合集-CSDN博客   

        同时,LoRaSun也是一个系列的文章,欢迎关注本专栏:

        https://blog.csdn.net/ypp240124016/category_12834955.html   ​

        

5.4 命名来历

        将协议栈命名为LoRaSun主要有两个原因:一是 星型网络特征类似于行星绕太阳转动,而且名字听起来与LoRaWAN相似,比较顺口;二是 希望网关通过优化后可以使用太阳能的方式进行供电,那么这将会在实际部署中产生极大的便利,使之成为LoRa方案的加分项。 

5.5 重要声明       

        关于测试套件需要声明一下,最好先阅读本专栏的第一、二篇文章后再决定是否需要购买,因为硬件虽然简单,但是从软件角度来讲并不简单,需要有一定知识储备才能阅读,至少要有C语言和stm32相关基础。

        当然了,如果你有毅力坚持学习,你将会从本项目中学习到很多基础教程中学不到的知识,比如命名规范、项目工程结构、RTOS编程、回调使用、事件通知、状态机、无线通信、网络基础、组网技巧、LoRa深度原理、物联网平台以及多设备系统性调试方法等等,很多内容甚至无法用文字表达清楚,后续会增加视频课程进行完整讲述,可以关注公众号获取通知。

5.6 关于测试套件

        在调试初期,本人找了一圈也没有合适的LoRa开发板,一个是价格贵,一个是需求无法满足,后来勉强购买了安信可的测试套件,在调完核心的CAD检测原理后,后续要求已经无法满足,所以才开始了自己设计测试板的道路。虽然整体简单,但是一路也是磕磕碰碰,为了方便学习者直接体验组网效果,后来就想把它挂到淘宝上,由于本人对这方面的运营没什么经验,如有不周到的地方望见谅。 测试套件采购地址:https://duandianwulian.taobao.com/ 

        关注VX公众号 端点物联,以便即时接收文章更新信息。

        学习交流QQ群:  701889554

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

端点物联

本文有偿阅读,自愿打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值