编辑点评:提出了一种利用6LoWPAN协议实现教师灯光监控系统的设计及其工程实现,对推动IPv6技术和能源管理十分有意义。
节约资源和保护环境是我国的一项基本国策.大学作为人口密集区域,资源消耗大户,应是建设资源节约型、环境友好型社会的倡导者和引领者.针对目前大多数高校存在长明灯、人走没关灯等电能浪费现象,有必要对教室光照度值和是否有人进行实时监测,智能控制教室照明[[[] Chiou C K, Tseng J C R. An intelligent classroom management system based on wireless sensor networks[C] International Conference on Ubi-Media Computing. IEEE,2015.]].物联网技术的兴起和大数据时代的到来,更加方便于现人类对环境和状态信息的采集与控制,因此大量的无线传感器网络节点需要接入互联网[[[] 杜经纬, 李海涛, 梁涛. 国内外物联网研究现状及展望[J]. 世界科技研究与发展, 2013, 35(3).]].然而,截止到2011年,IANA已经分配完了所有的IPv4地址,IPv4协议显然已经不能满足现实的需要.考虑到智能家居、智能医疗、智能交通等大规模应用即将普及,对于地址的需求会更加紧张.尽管CIDR无类别域间路由、NAT地址转换[[[] 袁希群. 使用NAT技术实现网络地址转换[J]. 电脑知识与技术, 2012, 08(4):790-791.]]、私有地址等技术在一定程度上缓解了IP地址的短缺问题,但是IPv6技术替代IPv4技术已是历史发展的必然[[[] 拉齐亚尼. IPv6技术精要[M]. 人民邮电出版社, 2013.]].
1 6LoWPAN结构体系
然而将IPv6技术应用于无线传感器网络存在着一系列的问题[[[] Kim E, Kaspar D, Gomez C, et al. Problem Statement and Requirements for IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Routing[J]. Heise Zeitschriften Verlag, 2012, 15(4):26,28,30.]].第一,无线传感器网络一般采用IEEE802.15.4标准制定的规范,其数据帧的长度与IPv6有明显差异.第二,无线传感器网络节点一般仅具有简单的微处理器和硬件资源,很难在无线传感器网络节点上实现完整的IPv6技术.第三,无线传感器网络能量较为稀缺,而IPv6技术没有考虑能耗问题.
在这样的背景下,2004年11月互联网工程任务组成立了6LoWPAN(IPv6 Low Power Wireless Personal Area Network)工作小组,旨在解决IPv6技术应用于无线传感器网络尚存的难点.研究基于6LoWPAN的教室监控系统具有很强的理论价值和实际意义,响应国家“节能减排”号召的同时,也为下一代互联网大规模部署IPv6技术奠定基础.
无线传感网络中的设备通常都属于资源受限型传统的TCP/IP协议栈[[[] Peng R, Li Y D, Yang G. Design of a Remote Monitoring System Based on the TCP/IP Protocol[J]. Applied Mechanics & Materials, 2013, 339:313-317.]]并不适用,因此提出了6LoWPAN协议栈.TCP/IP协议栈和6LoWPAN协议栈结构体系如图1所示.左边是一个典型的TCP/IP协议栈,右边是6LoWPAN协议栈[[[] Gilliss D, Cronquist A, Cartter M, et al. 6LoWPAN framework for efficient integration of embedded devices to the Internet of Things [C] Consumer Electronics (GCCE), 2014 IEEE 3rd Global Conference on. IEEE, 2014:328-332.]],两者几乎等同,但又存在些区别.
(1)物理层和数据链路层:TCP/IP协议栈采用以太网标准,现在通用的局域网通信标准,要求最大帧长度为1500字节;6LoWPAN协议栈采用IEEE 802.15.4标准,无线连接的个域网通信标准,要求最大帧长度为127字节[[[] 郦亮. IEEE802.15.4标准及其应用[J]. 电子设计应用, 2003(1):14-16.]].
(2)网络层:6LoWPAN协议栈只支持IPv6,不支持IPv4,而IPv6定义的最小MTU是1280字节,所以IPv6不能直接架构在IEEE 802.15.4 MAC层上[[[] 马亲民, 戴光智. 6LoWPAN适配层分片重组的研究与实现[J]. 单片机与嵌入式系统应用, 2014(4):1-4.]].6LoWPAN协议栈定义了一个适配层,以在IEEE 802.15.4 链路层上优化IPv6.适配层是6LoWPAN协议栈的核心部分,具体实现的功能有:头部压缩、分片与重组、组播支持、构建网络和地址分配、MAC层路由[[[] 向浩, 李堃, 袁家斌. 基于6LoWPAN的IPv6无线传感器网络[J]. 南京理工大学学报, 2010, 34(1):56-60.]].
(3)传输层:TCP(Transmission Control Protocol传输控制协议),是一种面向连接的、可靠的、基于字节流的传输层通信协议.UDP(User Datagram Protocol用户数据协议),一种不可靠传输协议,可以直接传输,无需建立连接,但是传输速率快.由于性能、效率和复杂性的原因,6LoWPAN协议栈没有使用TCP协议,而是使用UDP协议,并且可以使用6LoWPAN格式被压缩.
(4)应用层:对于受限设备(如8-bit微处理器)而言,HTTP(超文本传输协议)显得过于复杂.COAP (Constrained Application Protocol受限制应用协议)协议是HTTP协议的简化版,轻量级的Web传输协议,应用于受限网络环境,提供URI、REST式的方法如DELETE,POST,PUT和GET.另外COAP协议为了弥补UDP的不可靠性,釆用了双层的结构,增加了消息重传机制.因此,6LoWPAN协议栈应用层舍弃了复杂的HTTP,而是采用COAP协议[[[] 汤春明, 张荧, 吴宇平. 无线物联网中CoAP协议的研究与实现[J]. 现代电子技术, 2013, 36(1):40-44.]].
图1 TCP/IP协议栈和6LoWPAN协议栈结构体系
2 教室监控系统总体设计
教室监控系统主要对教室的光照度值、是否有人进行监测,并根据监测值控制照明灯的亮灭.光照度传感器对光照度值进行测量,人体红外传感器对是否有人进行感应,传感器节点采集这两种传感器信息,并将其通过6LoWPAN网络汇聚到6Router网关,6Router网关再将数据经过互联网传送至监控中心.在手动模式下,可以由监控中心发出指令,通过6Router网关,发送至传感器节点,控制节点LED灯的亮灭.
图2 系统硬件结构框图
基于6LoWPAN协议栈的教室监控系统设计与实现由三部分组成:无线传感器节点、6Router网关节点和监控中心.整个系统框架如图2所示.
(1)无线传感器节点
每个传感器节点拥有全球唯一的IPv6全局单播地址和本地链路地址,可以与互联网用户进行点到点通信.传感器节点初始化时,将放置位置、IPv6地址、MAC地址、映射的端口号、服务类型等信息向数据库注册.每个传感器节点都有独立的ID,能与其信息进行匹配,在监控中心可以修改节点信息,有利于节点位置、端口号发生变动等.本系统中的无线传感器节点为CC2530节点,每个节点都外接光照度传感器与人体红外传感器,分布在教室的各个位置,采集相应的数据.
(2)6Router网关节点
网关节点将6LoWPAN网络的数据通过互联网发送给监控中心,同时接收来自于监控中心的指令,向传感器节点发送指令以控制传感器节点.网关节点有两个作用:一方面,作为6LoWPAN网络的RPL Root节点,发起和管理整个6LoWPAN网络;另一方面,将6LoWPAN网络中的IPv6协议转换为IPv4协议,实现NAT64转换,把每个传感器节点的IPv6地址映射为网关的一个端口号,复用相同的IPv4地址,通过以太网传输到计算机网络,实现6LoWPAN网络接入到互联网.
(3)监控中心
监控中心主要接收来自网关节点的数据和向网关节点发送指令,并对教室环境数据进行分析、处理和展示.
3 无线传感器节点设计
无线传感器节点是传感器的直接载体,由光照度传感器、人体红外传感器和传感器节点三部分组成.光照度传感器采用TSL256X系列中的TSL2561芯片,人体红外传感器采用HC-SR501芯片,传感器节点选择德州仪器(TI,Texas Instruments)的CC2530DK硬件平台.要实现传感器节点,关键在于将传感器资源添加到节点服务器上,提供给外部访问,访问方式有GET、PUT、POST和DELETE等.
3.1 添加节点资源
从易用性和成熟度考虑,选取Contiki作为节点实现6LoWPAN协议栈的操作系统,选取RPL为节点自组网的路由协议,并借助网络分析软件帮助理解和诊断网络协议.节点服务器为自启动线程添加了三个线程,分别是udp_sender_process、coap_keepalive_process、rest_server_process,各自维护着自己的服务.要实现传感器节点,关键在于将传感器资源添加到节点服务器上,提供给外部访问.节点自启动线程如图3所示.
图3 节点自启动线程框图
RESTful架构将网络中的实体或信息都抽象为资源,每一个资源都有一个URI与之对应,访问URI即是访问资源.实现教室监控系统需要为传感器节点添加三个资源:GET请求获取光照度传感器采集的光照度值,GET请求获取人体红外传感器的输出信号,POST请求或者PUT请求控制LED灯的亮灭.URI路径设置格式如下所示.
COAP-URI= coap://host:port/path-abempty?query
其中,host为主机名称或主机地址,访问本地主机可用localhost;port为COAP协议的端口号,默认是5683;层级路径以斜线划分,本文要添加的三种资源层级路径分别为“/illumination”,“/human”,“/actuators/leds”.对于要用到与资源有关参数的,在“?”后以“parameter=value”的形式罗列,不同参数间使用“&”分割.
在节点服务器上添加资源分为两步:第一步,在COAP引擎中注册资源信息,包括资源的URI信息、资源提供的访问请求操作和对应该资源的Web链接描述字串.第二步,针对COAP请求,编写对应的资源处理函数返回COAP响应.
3.2 资源测试
无线传感器节点一般都作为COAP服务器使用,需要一个COAP客户端来帮助调试,当前所有浏览器在默认情况下还不支持COAP协议.有团队为Firefox浏览器开发了Copper插件来帮助调试COAP应用.
通过Firefox览器发送Get请求,访问传感器节点资源,包括光照度传感器测量的光照度值和人体红外传感器的输出信号,发送Post请求控制传感器节点资源,控制LED灯的亮灭.从图4的测试结果看出,资源添加成功,可以得到光照度值.
图4 Firefox览器获取光照度值
4 监控中心B/S架构实现
Firefox浏览器做COAP客户端只是测试工具,存在一定的局限性.一方面,仅限于安装Copper插件的Firefox浏览器;另一方面,访问每个资源都要在地址栏输入对应的URL,即使有资源发现机制,只是针对每个节点,对于客户端的请求,服务器响应每个节点所有可用资源.访问不同的节点需要输入每个节点对应的URL,十分不灵活,因此监控中心的B/S架构实现十分必要.
4.1 技术框架
本文采用Node.js技术实现教室监控系统的B/S架构.Node.js是一个开源,跨平台的运行环境,使用事件驱动,非阻塞I/O模型而得以轻量和高效,用于方便地搭建响应速度快、易于扩展的网络应用.Node.js为了支持COAP协议,开发了node-coap插件,教室监控系统B/S架构技术框架如图5所示.
前端开发采用jade高性能模板引擎,它是用JavaScript实现的,并且可以供Node使用,客户端所有请求由jade页面发出,服务器所有响应归于jade页面.此外,选用Bootstrap作为前端的CSS样式框架和jQuery作为前端的JavaScript行为框架.
后台开发采用Express,一个基于Node.js的简单、灵活的web应用开发框架,安装node-coap插件以支持COAP请求和COAP响应.数据库选用MongoDB,分布式文档存储数据库,集合中的文档以键-值对的形式存储,这与JavaScript一脉相承,有利于以后应用扩展.
图5 教室监控系统B/S架构技术框架
4.2 功能实现
浏览器支持HTTP协议,对于客户端发出的HTTP请求,浏览器会解析成请求头、请求体的形式,对于服务器返回的HTTP响应,浏览器会解析成响应头、响应体的形式.但是,当前的浏览器都不支持COAP协议,因此,在网址栏输入coap://localhost:5683,浏览器是不解析的.实现教室监控系统的关键就是处理COAP请求和COAP响应,Node.js支持COAP,可以将COAP请求响应封装在服务器里面,需要访问传感器节点时,在其请求处理函数里面发送COAP请求,访问传感器节点,并接收返回的COAP响应.具体处理过程如图6,从图中可以看出,COAP请求是由服务器代为发出的,COAP响应也由服务器接收并解析,COAP协议层对用户来说是透明的,用户只需要发送普通的http请求就可以访问6lowpan网络资源,这样就解决了浏览器不支持COAP协议的问题.
图6 教室监控系统B/S架构时序图
教室监控系统效果展示如图7所示,实现了发送Get请求获取传感器节点资源,包括光照度资源以及红外感应结果.系统可以发送Post请求控制传感器节点资源,可控制照明灯的亮灭.还可以在后台新增传感器节点的放置位置、IPv6地址、MAC地址、映射的端口号、服务类型等信息向数据库注册,对节点执行增、删、改、查操作.
图7 教室监控系统效果展示
5 总结
本文设计一种基于6LoWPAN协议栈的教室监控系统,采用node.js技术实现教室监控系统的B/S架构,能够跨浏览器监测教室的光照度值、是否有人和照明信息,根据传感器信息控制照明的亮灭.本系统为每个传感器节点分配唯一的IPv6地址,方便实现对教室照明灯的识别、管理和控制,以及照明灯之间的协同工作,实现教室照明灯的信息化管理,不仅节约能源,更为IPv6技术和物联网技术的发展奠定了基础.
参考文献
[1] Chiou C K, Tseng J C R. An intelligent classroom management system based on wireless sensor networks[C] International Conference on Ubi-Media Computing. IEEE,2015.
[2] 杜经纬, 李海涛, 梁涛. 国内外物联网研究现状及展望[J]. 世界科技研究与发展, 2013, 35(3).
[3] 袁希群. 使用NAT技术实现网络地址转换[J]. 电脑知识与技术, 2012, 08(4):790-791.
[4] 拉齐亚尼. IPv6技术精要[M]. 人民邮电出版社, 2013.
[5] Kim E, Kaspar D, Gomez C, et al. Problem Statement and Requirements for IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Routing[J]. Heise Zeitschriften Verlag, 2012, 15(4):26,28,30.
[6] Peng R, Li Y D, Yang G. Design of a Remote Monitoring System Based on the TCP/IP Protocol[J]. Applied Mechanics & Materials, 2013, 339:313-317.
[7] Gilliss D, Cronquist A, Cartter M, et al. 6LoWPAN framework for efficient integration of embedded devices to the Internet of Things [C] Consumer Electronics (GCCE), 2014 IEEE 3rd Global Conference on. IEEE, 2014:328-332.
[8] 郦亮. IEEE802.15.4标准及其应用[J]. 电子设计应用, 2003(1):14-16.
[9] 马亲民, 戴光智. 6LoWPAN适配层分片重组的研究与实现[J]. 单片机与嵌入式系统应用, 2014(4):1-4.
[10] 向浩, 李堃, 袁家斌. 基于6LoWPAN的IPv6无线传感器网络[J]. 南京理工大学学报, 2010, 34(1):56-60.
[11] 汤春明, 张荧, 吴宇平. 无线物联网中CoAP协议的研究与实现[J]. 现代电子技术, 2013, 36(1):40-44.
作者单位:华东理工大学信息科学与工程学院