APP下载

基于6LoWPAN和MQTT的寒旱区野外环境监测系统设计

2020-07-13王帏韬火久元任智男

计算机应用与软件 2020年7期
关键词:网关客户端消息

王帏韬 火久元,2* 任智男

1(兰州交通大学电子与信息工程学院 甘肃 兰州 730070)2(赛尔网络有限公司 北京 100084)

0 引 言

我国高寒与干旱地区的总面积占到国土面积的三分之二左右,寒旱区内生态环境脆弱,但蕴藏着国民经济不可或缺的资源,因此其战略地位突出[1]。传统的寒旱区野外观测体系中,观测数据以人工收集为主,数据传输困难,导致数据的收集、传输、处理的实时性和准确性较差。为了解决这些问题,许多学者将无线传感器网络(Wireless Sensor Networks,WSN)应用到寒旱区野外环境监测中,并开展了一系列的研究。文献[2]以黑河流域一级支流马粪沟子流域为研究区域,配合现有定点观测系统,提出了一种适宜生态-水文模型需要的面向密集数据观测的无线传感器网络系统。该系统的传感节点采用TinyOS系统,通过Xmesh协议组网。文献[3]为了提升在黑河上游八宝河流域建立的生态-水文无线传感器网络的观测水平,提出了一种基于回归克里格模型的空间采样布局优化方法,经验证明优化后的无线传感器网络可以较好地捕捉流域内生态-水文要素的时空动态特征。文献[4]设计并实现了一个在线的可视化Web系统来有效管理和应用黑河流域生态-水文过程综合遥感观测联合试验中的无线传感器网络系统不断产出的自动观测数据。文献[5]设计了一种新型低功耗、高稳定性的冰川参数采集系统,该系统以低功耗单片机MSP430F149为主控制器,将所测的数据通过ZigBee网络传输到数据处理中心。

在这些研究中,所使用的传统无线传感器网络标准存在着地址空间不足、无法与IP网络实现端到端通信等弊端,这严重制约了寒旱区野外环境科学的发展。为了解决无线传感器网络所面临的这些问题,互联网工程任务组(The Internet Engineering Task Force,IETF)在2004年成立了基于IPv6的低功耗无线个域网(IPv6 Low Power Wireless Personal Area Network,6LoWPAN)[6]工作组,并制定了6LoWPAN协议。6LoWPAN协议使得WSN内的每个节点都具有一个IPv6全球地址,实现了基于IEEE 802.15.4的网络和基于IPv6的基础设施之间的无缝连接[7]。

本文基于6LoWPAN技术和消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)设计了寒旱区野外环境监测系统。监测系统采用全IP的网络架构,使得观测网络具有足够的地址空间,同时能够实现观测网络中的嵌入式设备与IPv6网络中主机的端到端通信。

1 6LoWPAN与MQTT

1.1 6LoWPAN

6LoWPAN是物联网的关键组成部分,其网络拓扑一般支持树状、星状和网状拓扑结构[8]。6LoWPAN网络协议栈如图1所示,其物理层和MAC层采用IEEE 802.15.4标准,上层采用TCP/IPv6协议栈。

图1 6LoWPAN网络协议栈

6LoWPAN主要通过增加适配层来实现IPv6与IEEE 802.15.4的融合[9],6LoWPAN适配层的功能如下:

(1) IPv6数据报分片与重组。由于IPv6数据报的最大传输单元(MTU)可达1 280字节,而IEEE 802.15.4规定MAC层的MTU仅有127字节[10],所以当通过MAC层帧传输IP数据报时,需要将其分片。

(2) IPv6报头压缩与解压。IEEE 802.15.4网络中MAC层帧最大的负载(payload)为102字节,而安全位、IPv6报头和UDP头等占用了大部分空间,实际有效负载只剩下28个字节[11]。因此有必要将IPv6报头压缩,以增加负载空间。6LoWPAN中定义了无状态报头压缩和基于上下文的报头压缩两种压缩方案。

1.2 MQTT

MQTT是一种针对资源受限的面向事件和消息的轻量级通信协议,于1999年被IBM发布,它允许设备跨受限网络异步通信。MQTT基于发布/订阅(publish/subscribe)机制,并构建于TCP/IP之上。MQTT占用开销低、带宽低且易于实现,十分适合于资源受限的物联网场景[12],因此寒旱区野外环境监测系统使用MQTT实现应用层通信。

MQTT协议中有发布者(Publisher)、代理(Broker)和订阅者(Subscriber)三种通信身份。MQTT服务器实现代理的功能,MQTT客户端可同时实现发布者和订阅者的功能[13]。MQTT传输的消息由主题(Topic)和内容(payload)两部分组成。MQTT的消息主题可以通过分隔符表示多个层级的关系,用户可以通过使用通配符订阅不同层级的主题来获取全部或者部分消息。MQTT发布/订阅模型如图2所示。

图2 MQTT发布/订阅模型

使用MQTT协议的设备通过客户端实现通信,客户端能够与MQTT服务器建立MQTT连接。连接后,客户端可以发布MQTT消息,也可以订阅其他客户端发布的MQTT消息,从而获取该消息的内容。MQTT服务器位于发布者和订阅者之间,MQTT服务器可以建立与客户端的MQTT连接、接收客户端发布的MQTT消息、处理客户端的主题订阅以及将接收到的消息转发给订阅者。

2 监测系统整体结构设计

为了增强系统的灵活性、稳定性以及降低系统的耦合性,寒旱区野外环境监测系统基于发布/订阅模式设计,并使用MQTT协议实现应用层通信。

监测系统的结构框图如图3所示。监测系统由6LoWPAN节点、网关、MQTT服务器和远程客户端四部分构成。6LoWPAN节点能够通过传感器采集野外环境信息,并将信息经网关上传至MQTT服务器;同时,6LoWPAN节点还能识别并执行远程客户端下达的控制指令。网关建立并维护6LoWPAN网络以及负责在6LoWPAN网络和传统IP网络间转发数据报。用户在远程客户端可以查看采集到的环境信息以及下达对6LoWPAN节点的控制指令。MQTT服务器则用于接收6LoWPAN节点上传的环境信息和远程客户端下达的控制指令。

图3 寒旱区野外环境监测系统结构框图

3 6LoWPAN节点设计

3.1 节点硬件设计

6LoWPAN节点采用单芯片解决方案,单芯片方案使用片上系统射频技术,具有体积小、成本低的特点,因此适合需要大规模组网的寒旱区野外环境监测系统。6LoWPAN节点设计框图如图4所示。

图4 6LoWPAN节点的设计框图

6LoWPAN节点主要由主控芯片、射频单元、设备接口和电源电路等部分组成,各部分设计如下:

(1) 主控芯片设计。6LoWPAN节点的主控芯片负责处理数据和执行指令,为满足寒旱区野外环境中大量节点组网的需求,需要在保证节点性能的前提下,尽可能选择价格较低的元器件,来降低总体的成本。TI公司生产的CC2538SF53芯片就符合这样的要求。其内核是ARM Cortex-M3,它具有高达32 MHz的时钟速度、512 KB的FLASH和32 KB的RAM。CC2538SF53内部资源丰富,性能强劲,能很好地支持最新的Contiki3.x版本[14],充分满足了监测系统对6LoWPAN节点运算能力的需求。CC2538SF53具有3种省电模式,唤醒时间4 μs,最低供电电流仅0.4 μA,通过休眠机制可以有效减少能耗。CC2538SF53是汽车级芯片,能保证在-40~125 ℃之间稳定工作,这满足了寒旱区野外环境的高低温需求。

(2) 射频单元设计。射频单元采用CC2538SF53集成的支持2.4 GHz IEEE 802.15.4通信标准的RF兼容收发器,负责在6LoWPAN网络中发送和接收信息。CC2538RF具有-97 dBm的接收器灵敏度和7 dBm的可编程输出功率,传输速率最高可以达到250 kbit/s,并且在44 dB的ACR干扰情况下可靠耐用。CC2538RF功耗低且具有硬件加密功能,保证了数据的安全传输。CC2538RF通过RF_N和RF_P连接到天线,并将数字信号调制成模拟信号发送。

(3) 设备接口与传感器设计。设备接口单元负责将传感器与主控芯片连接,为丰富监测系统的功能,节点需要连接多种不同类型传感器,因此节点支持SPI、UART、IIC和USB等多种接口。下面介绍各传感器的功能和连接方式。

空气温湿度传感器选择AM2320。AM2320具有尺寸小、测量精度高的特点,可输出已校准数字信号。其相对湿度测量范围:0~99.9% RH,温度测量范围:-40~80 ℃,湿度分辨率:0.1% RH,温度分辨率:0.1 ℃,这满足了寒旱区野外环境对测量范围和测量精度的需求。AM2320使用单总线通信,支持CRC校验,保证了数据的传输可靠性。

PM2.5传感器选择ZPH01。ZPH01灵敏度高、重量轻、易于安装和维护。其采用粒子计数原理,能够检测出1 μm以上颗粒物,检测范围是15 000个/283 ml。ZPH01预热时间少于5 min,工作电压5 V,工作电流小于150 mA,所以功耗较低。ZPH01采用UART与主控芯片相连。

气压传感器选择BMP180。BMP180具有体积小、精度高、能耗超低的特点。其测量范围为300~1 100 hPa,绝对精度为0.03 hPa,标准模式下耗电量仅5 μA,待机电流0.1 μA。BMP180使用IIC接口输出。

光照强度传感器选择BH1750。BH1750具有接近于视觉灵敏度的分光特性,测量范围为0~65 535 lx,测量精度为1 lx。BH1750内置了16 bit的A/D转换器,直接数字输出,通过IIC总线与主控芯片相连。

(4) 电池设计。由于节点需长期部署在野外,无法频繁更换电池。因此,节点通过太阳能板,产生电能为蓄电池充电。蓄电池的欠压和过充会导致寿命缩短,同时还会影响系统工作的稳定性。因此,监测系统会定期检查蓄电池电量,在电量不足时,为其充电,在电量足够时,停止充电。

在6LoWPAN节点制作完成后,使用由特殊材料3D打印的封装盒将其封装,能有效地防止外部环境对节点造成的破坏。

3.2 节点软件设计

6LoWPAN节点的系统选择嵌入式操作系统Contiki。Contiki是一个被广泛使用的物联网操作系统[15],由瑞典计算机科学研究所研发,它的内核基于事件驱动,进程机制使用Protothreads,搭载了支持6LoWPAN的uIPv6协议栈。Contiki是一款采用C语言开发的、开源的多任务操作系统,具有轻量级、开源、易于移植等优点,因此适合于寒旱区野外环境监测系统中的6LoWPAN节点。

IBM专为WSN制定了基于UDP传输的MQTT-S协议,每个6LoWPAN节点使用MQTT-S客户端与PC端的MQTT客户端通信。嵌入式端的MQTT-S协议与PC端的完整MQTT协议的转换是通过MQTT-S网关实现的。

系统中每个6LoWPAN节点各自对应固定的MQTT的发布主题和订阅主题,在远程客户端订阅某个节点的发布主题,就可接收该节点发布的包含了环境信息的MQTT消息,每个节点使用订阅主题订阅的是远程客户端发布的对该节点的控制指令。每个6LoWPAN节点设定了多个发布主题,分别用于发布包含不同类型环境信息的消息,例如主题“ALL_DATA/该节点IPv6地址/temp”用于发布所监测到的空气温度的消息。每个6LoWPAN节点的订阅主题设定为“ALL_ORDER/该节点的IPv6地址”。在远程客户端订阅主题为“ALL_DATA/#”,即可接收到所有节点发布的全部消息;当远程客户端订阅主题为“ALL_DATA/节点1的IPv6地址/#”时,则可以只接收节点1发布的消息。

6LoWPAN节点的工作流程如图5所示。节点上电后,首先进行Contiki系统初始化、6LoWPAN协议栈初始化、时钟设置、射频模块初始化等。初始化后节点加入6LoWPAN网络,然后启动MQTT线程,尝试连接MQTT服务器,并订阅客户端用于发布命令的主题。在连接后会对信道监听,若没有收到信息,则节点执行预定命令,按一定的时间间隔来采集环境信息,节点将所采信息作为MQTT消息的内容,定时发布。所采信息会被按照IEEE 802.15.4标准封装成MAC层数据帧,通过射频单元多跳发送至网关再上传至MQTT服务器。若接收到其他节点转发的信息,则节点会把IEEE 802.15.4格式的数据帧提交给适配层,解析出IP数据报,如果该节点不是目的节点,则转发该信息,如果是远程客户端下达的对此节点的控制指令则执行该指令。

图5 6LoWPAN节点工作流程图

6LoWPAN节点主要具有以下两个功能:

(1) 信息采集上传功能。在6LoWPAN节点的信息采集程序中,设置定时器定时周期10分钟,该定时周期在实际工作期间可以根据远程客户端的控制指令进行调整。定时器超时会触发事件,然后会调用传感器和RTC时钟的接口函数,实现对环境信息和当前时间的获取。6LoWPAN节点采集信息后,使用MQTT-S客户端经6LoWPAN网络、网关和IPv6网络把信息发布到MQTT服务器上。

6LoWPAN节点的微处理器使用电子开关与各传感器相连,可通过程序控制开关闭合。为了减少6LoWPAN节点的能耗,信息采集程序会控制微处理器在不工作的时间内进入低功耗模式,并停止给传感器供电,直到事件触发时才进入工作状态以及给外围电路供电。这样能够有效地延长节点在寒旱区野外环境中的使用寿命。

(2) 控制指令识别执行功能。用户在远程客户端发布控制指令控制6LoWPAN节点,需要把具体的控制操作编码成为特定的指令参数。用户把这些指令参数放入对应于某一个节点订阅主题的消息中发布,则该节点在接收到消息后,会把这些指令参数通过switch-case语句解析,识别出对应的具体操作,然后执行。

4 网关设计

4.1 网关硬件设计

网关负责连接6LoWPAN网络与IPv6网络,为了满足性能要求,网关采用双芯片解决方案来设计。网关由6LoWPAN网卡与主处理器两部分组成,两部分通过UART串口相连。6LoWPAN网卡负责与6LoWPAN网络进行无线通信,主处理器负责以有线方式与IPv6网络通信。

为缩短研发周期,现阶段主处理器先选用由迅为公司生产的iTOP-4412开发板进行开发。该开发板包含核心板和底板,核心板使用三星公司生产的Exynos4412四核处理器,采用Cortex-A9架构,主频为1.4 GHz,具有1 GB DDR3 RAM,4 GB EMMC存储器,完全满足了网关对运算、存储等性能的需求。6LoWPAN网卡的结构与6LoWPAN节点基本相同。

4.2 网关软件设计

6LoWPAN网卡部分仍采用Contiki系统,主处理器部分则采用Linux系统。网关工作流程如图6所示。

网关主要有如下三个功能:

(1) 建立和维护6LoWPAN网络,在6LoWPAN节点请求加入网络时,对其进行无状态地址自动配置;

(2) 在6LoWPAN网络与IPv6网络间转发数据报;

(3) 集成MQTT-S网关,实现MQTT-S与MQTT协议的转换。

主处理器上搭载了IP协议栈可以实现与IPv6网络通信。主处理器与6LoWPAN网卡间采用串行线路协议(Serial Line Intemet Protocol,SLIP)通信,实现两个模块之间的IP数据报传输。主处理器通过RADVD(Router Advertisement Daemon for Linux IPv6)软件配置网络接口,实现无状态地址自动配置和数据报转发功能。网关的协议栈模型如图7所示。

图7 网关协议栈模型

在网关接入网络后,网关一方面从6LoWPAN网络中获取6LoWPAN节点发布的包含环境信息的MQTT消息,将其上传至MQTT服务器;另一方面接收来自IPv6网络中远程客户端发布的包含了控制指令的MQTT消息,并将消息转化成IEEE 802.15.4标准的数据帧,再经6LoWPAN无线网络多跳发送给目标6LoWPAN节点。

5 服务器环境搭建与客户端功能实现

基于发布/订阅模式的系统具有松耦性和很好的可扩展性,因此寒旱区野外环境监测系统的应用层使用MQTT协议通信。监测系统的MQTT服务器选择支持MQTT v3.1版本的MQTT代理服务器Mosquitto。Mosquitto具有轻量级、开源等优点,它使设备对设备之间的通信简单化,所以非常适合物联网的信息传递。

远程客户端可供用户查看监测系统所采集到的环境信息以及下达控制指令。远程客户端选择MQTT的客户端软件Eclipse paho。Eclipse paho依靠集成方便、使用简单的特性,而被广泛使用。

远程客户端的功能实现流程如图8所示,首先客户端初始化连接参数,包括客户端名称、服务器地址和端口号等。然后客户端尝试与服务器建立MQTT连接。连接后,用户可以在订阅主题中通过使用通配符来筛选获取的消息。若用户想要下达对某6LoWPAN节点的控制指令,可将控制参数作为消息内容,将该节点订阅的主题作为发布主题,发布后消息会被服务器推送到该节点,进而控制该节点。

图8 远程客户端工作流程

6 系统测试

6.1 测试环境

我国高寒地区主要分布在甘肃、青海、新疆、西藏和四川内的三千五百米以上的高原地区,月均温度最低值可达-10 ℃以下。我国寒区分布在整个西北和东北地区,一月份平均气温最低,有些区域最低可达-30 ℃左右。我国的干旱与半干旱地区主要分布在陕西、甘肃、新疆和内蒙古等地区,有4个月以上的平均气温在10 ℃以上,年降水量在500 mm以下,在夏季平均气温最高可达35 ℃以上。

为了验证监测系统在寒旱区野外环境内工作的稳定性和测量的准确性,在实验室内模拟寒旱区野外的气候环境,并测量模拟环境中的空气温湿度。实验地点:兰州市安宁区兰州交通大学第六教学楼,海拔约1 550 m,实验时间:2019年5月17日7时至21时。将3个6LoWPAN节点分别命名为节点1、节点2和节点3,3个节点放置的位置相隔约5 m。节点1放置在实验室窗外测量自然环境下室外空气温湿度;节点2放置在模拟高寒地区低温环境的冰箱冷冻室中;节点3放置在模拟高温干旱地区环境的暖风机前约20 cm处。同时,将一个网关和两台计算机也布置在实验室中。计算机1配置成IPv6环境,并在Ubuntu平台上搭建Mosquitto服务器环境。计算机2配置成IPv6环境,并在Windows平台上安装Eclipse paho客户端。

6.2 IPv6支持测试

首先在计算机1中开启Mosquitto服务器,然后在计算机2中打开Eclipse paho客户端,并与Mosquitto服务器建立MQTT连接。根据网关设定的网络内全球可聚合单播地址前缀2001:250:1403:2003::/64和节点1的MAC地址可知其全球可聚合单播地址是2001:250:1403:2003:212:4b00:5af:7ee4。此时在计算机2中,使用ping命令发送ICMP报文至节点1测试连通性,如图9所示。

图9 测试端到端通信

可以看出,计算机2接收到了节点1的回复,这说明计算机2与6LoWPAN节点之间是连通的。因此,监测系统的6LoWPAN网络构建成功,能够实现WSN中嵌入式设备与IPv6网络中主机的端到端通信。

6.3 信息采集上传功能测试

在Eclipse paho客户端订阅主题为“ALL_DATA/fe80::212:4b00:5af:7ee4/temp”和“ALL_DATA/fe80::212:4b00:5af:7ee4/hum”的消息。接收到的消息内容如图10所示,在2019年5月17日的7时01分43秒和7时02分11秒,在Eclipse paho客户端接收到了节点1所采集的空气温度和湿度的消息。测试结果说明寒旱区野外环境监测系统实现了信息采集与上传的功能。

(a) 空气温度

(b) 空气湿度图10 节点1发布的消息

6.4 控制指令执行测试

接下来再来测试对6LoWPAN节点上RGB指示灯的控制。如图11所示,在Eclipse paho客户端发布主题是“ALL_ORDER/fe80::212:4b00:5af:7ee4”的消息,消息内容输入“‘l’‘2’”,然后发布,‘l’是指控制节点的RGB指示灯,‘2’是指让RGB显示红色。

图11 发布控制指示灯的指令

控制指令发布前后,节点1的RGB指示灯状态如图12所示。

(a)下达指令前

(b)下达指令后图12 控制指令下达前后RGB指示灯状态

从图12中可以看出,节点1接收到控制指令后,执行了指令的控制操作,将RGB显示为红色。测试结果表明寒旱区野外环境监测系统能够实现控制指令的下达和执行。

6.5 实验数据分析

将3个节点在不同环境下多个时刻监测到的温湿度数据和实测温湿度值进行对比,结果分别如表1-表3所示。

表1 室外实测温湿度与节点1监测值比较表

表2 冰箱内实测温湿度与节点2监测值比较表

表3 暖风机前实测温湿度与节点3监测值比较表

可以看出,当节点工作在高温、低温以及不同湿度环境下时,监测系统所测量的温湿度误差均小于5%,这说明监测系统具有较高的工作稳定性和测量精确度,基本可以满足寒旱区极端环境的要求。

7 结 语

基于6LoWPAN和MQTT设计的寒旱区野外环境监测系统,经过测试节点功能正常,数据传输准确、稳定,系统功能完整。该研究可提升野外监测信息化,提高数据的采集密度和质量,对于提升寒旱区野外环境监测的自动化水平和实时性具有一定的实际意义,也为未来构建寒旱区跨学科、跨区域的虚拟同步联合观测系统做好了前期技术储备,在理论研究和应用研究方面都具有重要意义和价值。

猜你喜欢

网关客户端消息
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
智能燃气表物联网运行体系网关技术研究
基于FPGA的工业TSN融合网关设计
大规模低轨卫星网络移动性管理方案
一种主从冗余网关的故障模式分析与处理
一张图看5G消息
晚步见道旁花开
媒体客户端的发展策略与推广模式
新华社推出新版客户端 打造移动互联新闻旗舰