跳转至

LoRa测试床概述和功能

LoRa测试床

LoRa研究中需要对网络的性能进行测试,由于网络大规模的特点,搭建实验的过程中会比较繁琐.一个重要的要求是搭建合适的测试体系。我们在之前的无线传感网研究中,就深刻的体会到了这一点。如果没有一个合理的测试体系,开发起来将会特别麻烦。 在低功耗广域网LoRa的研究中,更是如此。目前这一问题被大多数人忽略,所以大多数实验包括研究前沿和论文里面的实验都很难做到高效全面,也很不方便,所以大部分实验规模都相对较小。

通常情况下,合适方便的实验最好需要包含一下内容,1)能够随时更新节点上的程序;2)能够有效的收集节点的数据;3) 能够方便部署,有可视化的方法来查看数据. 同时我们知道在研究中许多性能和指标的测量需要大量重复的实验和大规模的部署,而这些机械可重复的操作虽然简单,但是却造成了大量人工成本的消耗和浪费。 因此,一个可以对科学理论、计算工具和新技术进行严格、透明和可复制测试的平台就显得尤为重要,这个就是测试床。

在互联网研究领域,学者们就开发出了许多经典的测试床系统,比如用于WSN(wireless sensor network)的MoteLab[2],FlockLab[17]和INDRIYA2[4], 用于802.11b/g的Roofnet[3]等等。此外还有OpenChirp以及阿里的AliOS Things里的lora平台

我们LoRa测试床搭建的初衷是方便快捷的对LoRa设备进行操作和实验。考虑到LoRa长距离通信的特点,我们没有让测试床限制在某一个地方,而是通过设计让其具有了广域通信的能力。因此我们设计了使用树莓派控制LoRa节点的方案,这样的系统具有可移动的特性,可以方便的移动到任何有网络的地方进行实验。 同时,现有的LoRa网络具有非常低的数据速率,并且不能支持无线重新编程。而为了测试LoRa节点的不同协议,我们需要经常更新这些节点的程序。 我们首先采用了带外控制的方案,即采用WiFi、4G等其他信号作为控制信息的载体,来控制LoRa测试床。但是这个方案的不足在于需要提供额外的电力和网络,而室外环境却通常不具备这样的条件。 因此,我们还开发了一套LoRa自主更新的系统,即利用其本身的信号进行控制更新,从而到达实现远程更新的目的,进一步摆脱了电力和网络的限制。

实现功能

  • 烧录新程序
  • 打开,关闭,重启LoRa节点
  • 批量进行上述的操作
  • LoRa节点的远程重编程
  • 实时采集数据
  • 数据可视化
  • 数据导出下载

LoRa测试床架构设计

LoRa测试床的架构设计如下图所示

图. 测试床设计架构

测试床平台由三部分组成:

  • LoRa组件搭建的LoRa服务,包括节点,网关和服务器,运行的协议为LoRa相关的协议。

蓝色的箭头表示通信流程。不同的LoRa节点部署在校园的不同位置。我们还在校园内部署了几个网关。因此,那些LoRa节点可以形成LoRa网络,因此我们可以在网络上进行实验。同时,每个LoRa节点连接到基于树莓派的边缘节点。所有Raspberry Pi边缘节点都通过带外通信(如蜂窝网络)连接到中央服务器。因此,中央服务器可以向基于树莓派的边缘节点发送命令以控制每个节点。中央服务器还可以从边缘节点收集数据。应该注意的是,控制和数据收集与LoRa网络性能本身分离。因此,即使LoRa网络遇到一些问题,我们仍然可以控制网络并收集数据进行诊断。

  • 控制平台,这里设计了两套控制方案,分别应对不同的应用场景。

    首先由架构图可以看到第一套方案是我们设计的控制网络,位于图中的左下方,中心服务器接收来自Web服务器的指令,然后将指令传给树莓派系统。由于树莓派系统与LoRa节点是用USB接口连接,故而树莓派系统可以将命令进一步传给LoRa的节点,这样就达到了控制节点的目的。

    由于LoRa的通信是双向的,故而也可以采取一套自主更新系统,即使用自身的LoRa信号进行程序的更新。这种更新系统不受电力,网络的外在条件限制,通常用于室外。

  • 客户系统

不同的客户机通过网络连接到Web服务器进行操作,我们提供了方便操作的UI。我们通过共享数据库来实现Web服务器与LoRa服务器之间的数据共享。

LoRa组件

  • 服务器

    我们采用的是实验室的一台服务器,Linux系统,LoRa服务对服务器并没有特别的要求,故略去不表。

  • 网关

    我们主要使用两种LoRa网关,如下图.

    图. 网关设备

    它们的主控芯片为ARM Cortex-A53平台,主频1.2GHz。不同之处在于包装和附加功能,比如网关2可以电池供电,提供了更多的接口等。目前测试床有3个网关1和2个网关2。

  • 节点

    我们同样拥有两种节点,主要区别在于MCU,射频芯片以及其他传感器件。同时在封装上也有区别,分别适用于室内和室外的部署。

    图. 室外节点和室内节点

    节点1的射频芯片为SX1268,MCU为STM32L083,并且含有GPS,温湿度以及动力传感器。节点2则使用SX1278的射频芯片,STM32L53的MCU以及含有串口。

    我们对节点1进一步的封装,使其能够防水防潮,并且装上太阳能板,使其能够在室外长期的工作,效果图如下:

    图. 封装的室外节点

    对于节点2,我们让其与树莓派进行串口连接,从而赋予其可移动控制的特性,通常用于室内,效果图如下:

    图. 封装的室内测试床节点

控制平台

正如前面介绍的,我们设计了两套控制系统,分别是树莓派管控系统和自主更新系统。

  • 树莓派管控系统

    对LoRa节点的控制 对LoRa节点的控制基于树莓派和节点间的串口连接,这只要将LoRa节点与树莓派串口连接就可以实现。但是要实现LoRa节点对命令的响应,比如烧写,打开,停止这些控制命令,就需要给节点实现Bootloader的服务。

    树莓派与中心服务器的连接问题 对于有连接Wifi的条件,我们采用路由器进行网络的分配和管控,同时由于在学校内部,我们一般使用内网进行连接和控制。对于没有连接WiFi的条件,我们则给树莓派+LoRa节点配置了手机SD卡以及穿透服务连接到我们的内网。同时为了便于时时控制和收集运行日志,我们实现了树莓派与服务器间一对一的socket连接进行数据的传输。

  • 自主更新系统

    我们使用增量式更新的方式来对LoRa节点的程序内容进行更新。更新生成程序通过对比分析新旧版本的ELF文件生成更新文件,然后LoRa服务器通过网关将更新文件发送到需要更新的节点。节点验证更新文件的正确性后跳转进入IAP程序进行更新,更新完成后程序将跳转回用户程序。

    大家可以思考一下如何在LoRa这样的低功耗设备上利用那么小的带宽进行远程重编程,在技术上其实也是有不小的挑战的。后续章节中我们会展开介绍这一部分的技术。

两种系统的比较。这两种系统毫无疑问是各有优劣的,树莓派管控系统对于资源要求比较苛刻,比如需要联网,需要长时间不间断供电等等,但是其好在运行稳定,实现相对容易和快捷。自主更新系统则比较自由,对环境条件依赖度很小,但是其实现代价比较高昂,考虑到LoRa本身通信速度的局限性,整套系统的稳定性也有待考量。

客户系统

客户端方面我们提供了简单易用的界面以供操作。点击这里进入客户系统。LoRa测试床使用指南详见后续章节。

LoRa测试床部署情况

网关

初期我们部署了3个网关,均为网关1类型,如下图中的网关部署情况。

图. 网关部署情况

从上往下,依次为网关2,网关1和网关3,离地高度分别为36米, 18米和 12米。

这些网关都运行在CN470频段,两个网关都是由运行最新版本的Raspberry PI 3 Model B的Raspbian操作系统,2个网关都配有增益为3db的天线。

节点

由于某些测试位置位于信号较差的区域。 SF一般设为7或者12,7拥有最大的速率,12则拥有最大的距离,带宽设置为125KHz信道。

节点的部署情况分为室外和室内两种,我们分别叫做室外测试床和室内测试床。

  • 室外测试床。初期部署50个节点左右,包括静止的节点和移动的节点,对于移动的节点,我们采取的方法是将其绑在自行车上,室外测试床系统目前正在测试和部署中。 下图中显示了9个静止的节点的位置信息以及部署实物图。

    图. 室外节点部署情况

  • 室内测试床。室内测试床包含50个节点,实物图如下。

    图. 室内测试床

每个节点与一个树莓派连接,树莓派连接网线,然后由交换机进行IP分配。

LoRa测试床使用指南

点击进入测试床首页

  1. 注册

    图. 注册页面

    然后需要等待邮箱回复账号,密码才可登录。

  2. 登录

    图. 登录和操作页面

    使用获得到的账号,密码登录,进入首页。

  3. 操作 进一步的操作见首页的侧边栏目 使用说明

控制平台搭建

  • 树莓派管控系统 我们使用前后端分离的设计理念进行搭建,因此我们也将从前端和后端两部分进行介绍。

  • 前端 前端系统开发采用的框架是蚂蚁金融前端解决方案ant design pro,该解决方案基于React实现,使用umi搭建框架。 这个框架使用起来很方便,只需要切换到目录,使用

    npm install
    npm start
    

    即可启动,并且支持时时更新浏览。

    1
    2
    开发过程中每一个页面对应于框架中的一个js文件,js文件中使用render函数来渲染页面,该函数返回的结果为dom块,这个dom块就会被渲染到对应的界面中。开发者可以利用参数来控制dom块的渲染结果,从而方便地对页面的展示效果进行条件控制。
    前端的主要页面包括**系统概况、使用说明、地图视图、节点预定、节点管理、LoRaServer、关于我们**。
    
  • 后端 后端实现采用的是Java的Spring,SpringMVC和Mybatis框架,即SSM框架。构建项目采用Maven工具,通过pom.xml把Spring、SpringMVC、Mybatis整合起来。下面简单介绍一下SSM三个框架的作用。

    1
    2
    3
    Spring:Spring使用最基本的Java Bean来替代EJB的作用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
    Spring MVC:Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,使得它们更容易定制。
    Mybatis:MyBatis是一个基于Java的持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。通过配置,MyBatis 将接口和 Java 的POJOs 映射成数据库中的记录。
    

采用树莓派管控的模式依赖网络和电源。这些在实际部署应用中都严重限制了LoRa测试床网络的拓展和部署。因此,我们特别地设计了一套LoRa设备自主远程更新的方法,用来摆脱4G、WiFi等网络以及电力的限制,达到更加灵活部署,更新目的。我们将在后面的章节进行详尽的介绍。

优化部署和实现

  • 微服务

由于LoRaWAN网络的架构,不同实体的轻量级功能可以被部署为微服务。随着集装箱化的成功技术,如Docker [15],微服务可以被认为是容器,导致非常快启动并可以轻松部署。 为了实现一个LoRaWAN网络在紧急情况下支持自动恢复如地震,火灾,飓风或任何其他情况 那可能会破坏部分核心网络基础设施,微服务编排平台的使用可能适合这些.其在CPU,内存的使用效率也会更高。

  • 地理定位服务

基于现有LoRa组件可以提供TDOA定位所需要的所有设备要求,根据LoRa包达到不同LoRa网关时间的不同,可以依次计算达到距离差,从而根据至少3个网关的2条双曲线交点从而计算出待定点。现有的技术可以达到20-200m的精度。

具体来说,在乡村和空旷的地段,地理定位服务将提供最大的精度,而在城市和密集环境下会有的多径问题。精度将会随着网关数量的上升而上升。

在提供定位时,由于终端节点不确定的位置,定位功能为节点带来了额外的功耗开销,所以将会消耗更多的电力。所以通常固定位置的节点使用Class A模式,而需要地理定位的节点被实现为Class B或者Class C模式。

参考文献

[1] https://en.wikipedia.org/wiki/Testbed

[2] Werner-Allen, Geoffrey, Patrick Swieskowski, and Matt Welsh. "Motelab: A wireless sensor network testbed." Proceedings of the 4th international symposium on Information processing in sensor networks. IEEE Press, 2005.

[3] Aguayo, Daniel, et al. "Link-level measurements from an 802.11 b mesh network." ACM SIGCOMM Computer Communication Review. Vol. 34. No. 4. ACM, 2004.

[4] Doddavenkatappa, Manjunath, Mun Choon Chan, and Akkihebbal L. Ananda. "Indriya: A low-cost, 3D wireless sensor network testbed." International conference on testbeds and research infrastructures. Springer, Berlin, Heidelberg, 2011.

[5] Yousuf, Asif M., Edward M. Rochester, and Majid Ghaderi. "A low-cost LoRaWAN testbed for IoT: Implementation and measurements." 2018 IEEE 4th World Forum on Internet of Things (WF-IoT). IEEE, 2018.

[6] Navarro-Ortiz, Jorge, et al. "A LoRaWAN testbed design for supporting critical situations: prototype and evaluation." Wireless Communications and Mobile Computing 2019 (2019).

[7] Trüb, Roman, et al. "Demo Abstract: A Testbed for Long-Range LoRa Communication." 2019 18th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN). IEEE, 2019.

[8] Marais, Jaco M., Reza Malekian, and Adnan M. Abu-Mahfouz. "LoRa and LoRaWAN testbeds: A review." 2017 Ieee Africon. IEEE, 2017.

[9] Bankov, Dmitry, Evgeny Khorov, and Andrey Lyakhov. "On the limits of LoRaWAN channel access." 2016 International Conference on Engineering and Telecommunication (EnT). IEEE, 2016.

[10] Petajajarvi, Juha, et al. "On the coverage of LPWANs: range evaluation and channel attenuation model for LoRa technology." 2015 14th International Conference on ITS Telecommunications (ITST). IEEE, 2015.

[11] Cenedese, Angelo, et al. "Padova smart city: An urban internet of things experimentation." Proceeding of IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks 2014. IEEE, 2014.

[12] Wendt, Thomas, Franziska Volk, and Elke Mackensen. "A benchmark survey of long range (LoRaTM) spread-spectrum-communication at 2.45 GHz for safety applications." 2015 IEEE 16th Annual Wireless and Microwave Technology Conference (WAMICON). IEEE, 2015.

[13] Radcliffe, Peter J., et al. "Usability of LoRaWAN technology in a central business district." 2017 IEEE 85th Vehicular Technology Conference (VTC Spring). IEEE, 2017.

[14] P. Neumann, J. Montavont, , and T. Nol, “Indoor deployment of lowpower wide area networks (LPWAN): A LoRaWAN case study,” in Proc. IEEE Wireless and Mobile Computing, Networking and Communications,2016.

[15] Q. Zhou, K. Zheng, L. Hou, J. Xing, and R. Xu, “X-LoRa: An Open Source LPWA Network,” http://arxiv.org/abs/1812.09012, 2019.

[16] HELPER: Heterogeneous Efficient Low Power Radio for Enabling Ad Hoc Emergency Public Safety Networks.

[17] Roman Lim, Federico Ferrari, Marco Zimmerling, Christoph Walser, Philipp Sommer, and Jan Beutel. 2013. FlockLab: a testbed for distributed, synchronized tracing and profiling of wireless embedded systems. In Proceedings of the 12th international conference on Information processing in sensor networks. ACM, 153–166.

[18] Anne-Sophie Tonneau, Nathalie Mitton, and Julien Vandaele. 2014. A survey on (mobile) wireless sensor network experimentation testbeds. In International Conference on Distributed Computing in Sensor Systems (DCOSS). IEEE, 263–268.

[19] Fargas, Bernat Carbonés, and Martin Nordal Petersen. "GPS-free geolocation using LoRa in low-power WANs." 2017 global internet of things summit (Giots). IEEE, 2017.