基于6LoWPAN物联网的监测系统设计

2018-05-16 13:20梁金荣胡亚东马应莲何辉
中国教育网络 2018年4期
关键词:网关传感串口

文 /梁金荣 胡亚东 马应莲 何辉

信息机房的动力环境参数对于信息系统的稳定性、安全性、可靠性具有举足轻重的作用,对信息机房的环境状态进行有效监测是IT运维的重要任务。传统的IT动环系统多采用“传感器/变速器-仪器仪表-PC专家系统”的有线集中模式,系统庞大、成本高昂、准确性较差、实施困难,利用物联网等新技术能够有效解决传统方式的这些问题,这也成为IT动环系统研究和发展的方向之一。

本系统利用IPv6网络,基于6LoWPAN(面向低功耗无线局域网的IPv6)和无线传感网技术,设计IT动环监测系统,主要包括监测节点、6LoWPAN传感网络、监测主机(监测中心)三部分。系统主要研究6LoWPAN在物联网中的应用、IPv6网络与无线传感网的融合、传感数据监测,拟实现的功能有:配电系统监测、机柜温湿度监测、火灾监测、灯光照明控制、人员红外监测、远程报警等,设计监测中心服务程序,通过IPv6网络部署并进行数据传输和监测。

系统总体设计方案

系统主要实现6LoWPAN网络和互联网相互通信的同时可以实现环境系数的测量,以突出6LoWPAN网络的优势,6LoWPAN网络具有其他无线传感网络所没有的优势,即布置简单、维护方便、功耗低、成本低的优势,可以在没有任何基础设施做铺垫的情况下实现微型设备互联,并且可以实现稳定方便的环境监测系统。设计系统分为两个部分来完成,即6LoWPAN网络和互联网网络两个部分,这两部分通过串口通信的方式来通信,最终实现了6LoWPAN网络与互联网网络的通信问题,6LoWPAN平台网络如图1所示。

图1 系统总体设计

关键技术

基于Contiki操作系统的6LoWPAN实现

1.事件驱动机制与Protothreads机制

事件驱动机制和Protothreads机制都是Contiki操作系统的两个主要机制,事件驱动机制是为了降低功耗,Protothreads机制是为了节省内存。其实嵌入式系统被设计出来是为了响应周围环境的变化,我们把这一个个变化可以看做一个个事件,当事件发生时通过操作系统就可以处理这些事件,当事件没有发生时,也就是处于空闲状态时,那么此时嵌入式系统会处于休眠状态,可以降低功耗,我们把这个过程就叫做事件驱动,就相当于中断一样。

传统的操作系统是通过栈保存进程上下文的,不同的进程需要不同的栈进行保存,由于6LoWPAN网络节点的内存很有限,所以传统的操作系统不适用于传感器设备。要解决在有限内存的情况下保存进程上下文,可以使用 Protothreads机制,通过保存进程被阻塞处的行数(进程结构体的一个变量,unsiged short类型,只需两个字节),从而实现进程切换,当该进程下一次被调度时,通过switch(_LINE_)跳转到刚才保存的点,恢复执行。整个Contiki只用一个栈,当进程切换时清空,大大节省了内存。

Protothreads机制的最大特点就是轻量级,每个Protothreads不需要自己的堆栈,所有的Protothreads使用同一个堆栈,而保存程序断点用两个字节保存被中断的行数即可,即Protothreads机制的RAM很小,没有额外的堆栈。是完全用C语言编制的,没有汇编和其他语言。可以使用操作系统也可以不使用操作系统。Protothreads机制出现已经很早了,只是Contiki OS中应用了这种机制,此外它还可以应用到许多情形中。在使用Protothreads机制时需注意,因其没有保存堆栈上下文,所以没有保存局部变量。那么怎样使用局部变量呢?我们只能够将局部变量定义为局部静态变量,在这种情况下该变量才会在整个生命周期中都存在。

2.定时器

Contiki 提供了四种不同的定时器,同时也提供了定时器初始化、复位、重启和检查的相应函数。第一种是只能保存此时定时的时间长短的简单定时器。第二种是当定时的时间到了的时候能够生成相应的定时器事件,之后把这个事件发送到初始化对应的定时器的进程中。第三种定时器叫做回调定时器,主要是当定时时间到时开始调用特定的函数。第四种就是实时定时器,专门在特定的时间段里调用已经指定的函数。

3.微型通信协议栈uIP

uIP是TCP/IP的微型协议栈,其实质就是一个程序库,库中主要是TCP/IP的最小配置,其中有UDP(用户协议报协议)、TCP(传输控制协议)、IP、ICMP协议等。程序是用C语言写的,没有其他的语言。uIP被设计出来是为了解决采用TCP/IP机制的嵌入式设备之间通信的。不管是在多任务操作系统中还是在一个单任务系统中,uIP都可以在其中运行。在TCP/IP协议中是按分层设计的,层与层之间的接口的定义较为严密,在实现uIP时为了减少代码的数量,层与层之间进行了充分的耦合。

4.轻量级通信协议栈Rime

Rime协议栈是专门为WSN网络设计的,是为了使得WSN网络协议得到简化,代码重用,所以它属于轻量级通信协议栈,同时它也是层次型协议栈。Rime协议栈的优点是可以把复杂的协议分解成多个简单的协议。其支持单跳和多跳通信原语,通信原语与通信原语之间存在着层次关系,可以从简单的匿名广播到Mesh网络路由。

5.模拟器Cooja

Cooja是Contiki操作系统的网络模拟器。在模拟器Cooja上可以进行大型Contiki节点和小型Contiki节点的仿真。节点可以在硬件层面进行仿真,速度有些慢,但可以精确检测系统的行为,或在一个不太详细的层面上,速度会更快,并允许更大的网络仿真。仿真通过后才下载到节点上进行实际测试,有利于发现问题,减少调试工作量。

(1)启动Cooja

开启虚拟机后,双击虚拟机桌面的Cooja快捷方式,启动Cooja。也可以通过打开终端窗口输入cd contiki/tools/cooja命令转到Cooja目录,再输入Cooja启动命令ant run按回车键的方式打开Cooja。

(2)Cooja的编译过程

Cooja在第一次启动时需要进行自身编译,编译完成后会弹出一个蓝色的窗口。

(3)Cooja的仿真过程

单击File菜单,并单击New simulation之后打开了Create new simulation对话框。在该对话框中,可以选择给仿真创建一个新名字,后点击creat按钮,这样就创建了一个新的仿真;屏幕的左上角是Network窗口,显示所有模拟网络的节点,如果没有仿真的节点,窗口是空的。在屏幕的底部有Timeline窗口,在该窗口中会显示仿真中随着时间推移的所有通信事件,方便理解网络中到底发生了什么;Mote output窗口在屏幕的右边,显示所有节点的所有串口打印输出;Notes窗口在屏幕右上角,可以对仿真进行备注;在Simulation control窗口中,可以进行开始、暂停和重新加载操作。

基于CoAP协议的6LoWPAN节点设计

CoAP的请求和响应在发送之前不需要事先建立连接,而是通过CoAP信息来进行异步信息交换,CoAP协议使用UDP进行传输。CoAP采用和HTTP协议相同的请求响应工作模式,CoAP协议共有4种不同的消息类型:

1.CON:需要被确认的请求,如果CON请求被发送,那么对方必须做出响应;

2.NON:不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应;

3.ACK:应答消息,如果接收到CON消息的响应;

4.RST:复位消息,当接收者接收到的消息包含一个错误,接收者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。

虽然CoAP协议目前还在制定当中,但是在Contiki嵌入式操作系统已经支持CoAP协议。在客户端安装有可以实现CoAP协议的上位机监测端,通过CoAP协议搜索所需要的信息,就可以得到无线传感网上传的信息。整个设计有三个节点,其中核心是6LBR节点,在整个无线传感网中它相当于边缘路由器,又相当于6LoWPAN网络的网关。第二、三个节点相当于CoAP协议的服务器节点,其通过边缘路由器节点可以把采集到的数据上传到上位机监测端,CoAP消息结构如图2所示。

图2 CoAP消息结构

6LBR网关设计

6LBR网关是本系统的边缘路由器,也是6LoWPAN网络的网关。6LBR网关使得WLAN(IPv6)与一个WSN(6LoWPAN)网络通过RPL路由连接起来就形成了整个网络。以6LoWPAN开发板为基础,在Contiki操作系统上运行6LBR应用程序和UDP服务器程序,这样就可以构成IPv6和IEEE802.15.4协议之间的一个适配层,可以使得两种类型的网络互通。RPL路由执行覆盖NDP的功能,在NDP功能的基础上又做了很大的改进。Contiki实时操作系统仅仅只使用一个接口所以引进了数据包过滤器。可以把以太网数据包和6LoWPAN网络数据包分离开,然后再进行数据交换。6LBR路由原型如图3所示,两个数据过滤原理如图4所示。

根据6LBR网关所要实现的功能,在程序中设计了七个进程。每个进程有自己特定的功能,Web服务器进程可以实现对Web的访问。UDP服务器进程和UDP客户端进程是相对的,计算机是UDP客户端,6LBR网关就是UDP服务器端,通过客户端就可以访问服务器端。所以整个过程的核心就是CETIC_6LBR路由及网关处理。

图3 6LBR路由原型

图4 两个数据过滤原理

测试结果

测试平台的组建

采用的开发平台是基于Contiki3.0 操作系统的SM14Z2538DK3嵌入式6LoWPAN开发套件。该套件包含三个CC2538节点、一个ENC28J60以太网接口模块、三个电源适配器、三个USB转串口模块。任何一个CC2538节点与ENC28J60以太网接口模块连接都可以作为边缘路由器,测试环境网络拓扑如图5所示,各节点IPv6地址见表1。

操作系统软件采用的是Ubuntu开发平台,在虚拟机中装有InstantContiki2.7嵌入式操作系统,同时在虚拟机中安装了JLink_Linux,用于生成.bin可执行文件和给6LoWPAN节点中下载程序。

6LBR网关测试

6LBR是6LoWPAN网络边缘路由器,它在整个网络中起着适配的作用,是IEEE802.15.4协议和IPv6相互的连接层。6LoWPAN节点和ENC28J60以太网接口模块连接,通过路由器再与计算机相连,就形成了整个路由网络。通过计算机管理员命令窗口,输入ping命令,对6LBR网络进行连接,输入ipconfig命令查看计算机IP地址配置。6LBR在串口上显示的数据如图6所示。串口上显示了SM14Z2538开发板的信息、6LoWPAN边缘路由器节点的IPv6地址以及6LBR路由执行信息等。

图5 测试环境网络拓扑

表1 SM14Z2538开发板与USB转串口引脚连线说明

图6 6LBR在串口上显示的数据

图7 CoAP服务器及温湿度采集节点上传的温度数据

图8 CoAP服务器及温湿度采集节点上传的湿度数据

CoAP协议及温湿度采集测试

CoAP服务器通过无线网络与6LBR边缘路由器进行通信,所用的协议是IEEE802.15.4。将温湿度传感器模块与SM14Z2538开发板连接,在计算机上安装火狐浏览器,并安装Copper插件,连接CoAP服务器及温湿度数据采集节点。通过计算机管理员窗口输入ping -6 aaaa::212:4b00:5af:81a1命令查看CoAP服务器及温湿度采集节点1网络连接情况,输入ping -6 aaaa::212:4b00:5af:8269命令,查看CoAP服务器及温湿度采集节点2网络连接情况,网络保持连接状态。

在浏览器中输入6LBR网关节点的IP地址[bbbb::100]就会在Web网页上显示6LBR网关节点的配置信息,包括版本号、路由信息及IP地址信息等,邻居发现的传感器节点的信息以及网络信息等。打开火狐浏览器,在地址栏输入:coap://[aaaa::212:4b00:5af:81a1]:5683,然后点击ping按钮,会显示收到应答消息,RTT时间为55ms(数据从电脑经过路由器、CC2538边界路由、到达节点、再返回的时间)。输入coap://[aaaa::212:4b00:5af:81a1]:5683/config?param=ip,点击GET,可以获得默认的IP地址输入coap://[aaaa::212:4b00:5af:81a1]:5683/config?param=path,可以获得默认路径,设计主要目的是在火狐浏览器中通过CoAP协议查看实时温度数据和实时湿度数据,如图7和图8所示,CoAP服务器及温湿度采集节点串口显示数据如图9所示。

在计算机终端,打开软件 sokit.exe,点击 UDP侦听(计算机终端与边界路由在同一个IP段里)。可以看到图10显示了计算机终端的地址与连接的对象,如果有多个节点加入,则会显示多个连接对象。收发记录则显示了节点向边界路由发送的消息。

结束语

物联网需要更多的设备连入网络,技术上必须有所突破,采用6LoWPAN网络是目前比较明智的选择,6LoWPAN的优越性是其他物联网技术无法比拟的,同时也为IPv6网络的发展提供了机遇。基于IPv6物联网的环境监测系统使用6LoWPAN网络技术将微型嵌入式设备连入网络,实现了IEEE802.15.4协议与IPv6网络的互通。以CC2538SF53为主控核心,实现了整个传感网络对数据的采集、处理、传输、监控等。应用6LoWPAN网络技术大大降低了网络连接的难度,6LBR路由技术给6LoWPAN网络提供了可靠的支持,所以微型嵌入式设备连接入网路由方面比较稳定,而且使用了上位机监控软件和应用层协议,大大提高了6LoWPAN网络的实用性和可推广性。

图9 CoAP服务器及温湿度采集节点串口数据

图10 UDP侦听数据结果

[1]张宏科,梁露露,高德云.IPv6无线传感网的研究及其应用-中兴通讯技术,2009,15(5).

[2]宋树彬.IPv6网络协议栈的模块化设计及在无线传感器上的超轻量化[J].期刊论文,2007

[3]卞海舟,方晨,胡晨.802.15.4无线个域网网络协调器的驱动设计.电子器件,2008,31(2):695-697.

[4](芬)谢尔比(Shelby,Z)等著;韩松等译.6LoWPAN:无线嵌入式物联网.机械工业出版社,2014.

[5]王晓喃,殷旭东.基于6LoWPAN无线传感网的农业环境实时监控系统[J].农业工程学报,2010,26(10):224-228.

[6]王思山,吴黎兵.基于IEEE 802.15.4的车辆间通信系统硬件设计.湖北汽车工业学院学报,2011,25(1):30-33.

[7]吴德伦,张宏科.基于IEEE802.15.4无线传感网的IPv6协议栈[J].单片机与嵌入式系统应用,2006.

[8]王晓喃,唐振民,钱焕廷. 无线传感网与IPv6网络的互联通信

[9]张潺潺.基于Contiki操作系统的6LoWPAN无线传感网络研究与实现.南开大学硕士论文,2011.

[10]张公忠.现代网络技术教程.电子工业出版社,2004 .

[11]吴功宜等,计算机网络应用技术教程,清华大学出版社,2002 .

[12]高阳.计算机网络原理与实用技术,中南工业大学出版社,1998.

猜你喜欢
网关传感串口
《传感技术学报》期刊征订
新型无酶便携式传感平台 两秒内测出果蔬农药残留
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
浅谈AB PLC串口跟RFID传感器的通讯应用
IPv6与ZigBee无线传感网互联网关的研究
信号系统网关设备的优化
天地一体化网络地面软网关技术及其应用
船舶电子设备串口数据的软件共享方法
基于ETC在线支付网关的停车场收费系统设计
串口技术的实物调试和虚拟仿真联合教学模式