引言
近年来智能校园、绿色校园的理念已经深入人心。首先,人们可以通过对校园内各种资源的有效监测,进一步节约能源。其次,通过对各种环境因素进行监测,有助于保障安全、方便学习与工作。最后,可以通过实现物联网[1]和互联网的无缝连接,发掘海量数据的潜在价值。但是这几个方面实现的基础,是无线传感网络。在智能家居[3]、远程抄表[4]、定位[5]等方面,无线传感网技术衍生了一系列有价值的应用。本文实现了校园无线传感网络的设计,包括整个系统的软硬件设计、自定义组网运行和客户端应用。以嵌入式系统结合中心节点实现网关的设计,从而实现对无线网络的监控调节、数据处理显示等,海量数据将存储在服务器上以备数据挖掘之用。客户端一方面在PC上实现,另一方面考虑到智能移动终端的普及,在iOS和Android系统下也进行了实现。
1 网络组成
完整的网络体系是实现无线传感网及其应用的基础,包括终端节点、嵌入式网关、网络拓扑与协议,以及客户端应用。本文采用TI公司的CC2530作为传感器终端和网关的无线通信模块,其MAC层和物理层基于802.15.4标准,高层采用6LoWPAN协议栈。网关方面采用基于ARM CortexM3内核的STM32F107最小片上系统,配合功能齐全的外设以及CC2530,实现多方面的功能。网关系统示意图如图1所示。
图1 无线传感网及网关系统示意图
1.1 传感网络节点组成
传感网络节点的无线收发模块采用TI公司的CC2530芯片,其集成了51单片机内核,基本电路图略——编者注。
在传感器方面,需要考虑多种不同用途的配置,包括楼宇监测传感器、水环境监测传感器以及电器控制传感器。本文使用6种传感器节点:第一种为楼宇监测传感器节点,定时采集4种传感信息,能对异常环境报警;第二种为电器控制传感器节点,主要实现对室内电器的智能远程控制;剩余4种均为水环境监测节点,分别在不同的水环境下使用。
1.1.1 楼宇监测传感器节点
楼宇监测的传感信息主要包括温度、烟雾、湿度、噪声。温度传感器选择DS18B20,是Maxim公司的一款数字温度传感器,只需要一个端口即可通信。电路无需外部元件,可用数据总线供电,也可外接VCC。工作电压为3.0~5.5 V,测量温度范围为-55~+125 ℃,在-10~+85 ℃范围内精度为±0.5 ℃。
楼宇中首先要防范的是火灾,使用烟雾传感器NIS05A来监测烟雾。这种传感器是低放射型的标准传感器,最大供电电压为24 V。由于阻抗高,NIS05A输出电流很小,需采用输入电流较小的运放,如LMC6042。
湿度传感器选择HS1101,该传感器为变容式相对湿度传感器,具有检测速度快、精度高、可靠性强、稳定性好和使用方便、体积小等特点,具有很好的线性输出,且湿度输出受温度影响极小。
声学测量要求传声器性能稳定、动态范围宽、频响平直,故噪声传感器选用AWA14423, 它是自由场型测试电容传声器, 动态范围为10~130 dB, 频率范围为0~20 kHz, 标称灵敏度为50 mV/Pa。传感数据全部为int类型,共16字节,此外传感器类型1字节,传感器ID 1字节,故有效载荷为18字节。
1.1.2 水环境监测传感器节点
为了实现对各种水资源进行分类监测,将水资源分为景观水、给水、再生水、污水,使用多种水传感器对水质进行监测。再生水需要测量的数据包括水量、水压、浊度、COD(化学需氧量)。景观水包括水温、溶解氧、叶绿素、COD。污水包括氨氮、浊度、PH、COD。给水需要测量的参数包括水量、水压、水温、余氯。数据为double类型,共32字节,再加上节点类型和传感器ID,有效载荷为34字节。
1.1.3 电器控制的传感器节点
除了能够监测环境信息,无线传感器节点还可以对电器进行控制,主要针对楼宇内办公室、实验室中的空调、照明灯、饮水机等设备。开关控制设备由继电器和配电箱改造而成,继电器是连接弱电和220 V市电的桥梁,通过单片机I/O口发出控制信令,实现弱电控制强电。
1.2网关系统设计
对于任何无线网络,一个稳定、高性能的网关,是必不可少的,CC2530的外设难以满足对数据处理、显示以及各种扩展网关应用的要求,而嵌入式设备具有便利灵活、性价比高、嵌入性强等特点。所以选择合适的嵌入式设备与无线中心节点(CC2530)结合,可以实现无线网络网关的优化设计。
网关系统选用 CortexM3 微处理器芯片为核心,搭建嵌入式平台最小系统。外围扩展电路包括 LCD 触摸屏、RJ45以太网接口、UART 串口以及其他外设。其中,LCD 触摸屏为校园传感信息的集中监控和智能控制提供人机界面;RJ45以太网卡电路为将 6LoWPAN 网络接入 Internet 提供硬件支持(连接服务器);UART 串口用于协调器和嵌入式处理器通信,以及网关应用功能的数据交互。STM32F107最小片上系统略——编者注。
1.3 网关功能
校园传感网系统网关的软件设计分为前台和后台两部分。前台功能即实现在 LCD 触摸屏对本系统的集中监控,包括查看多种传感器节点的数据信息、检测传感器信息并在必要时报警、查看并控制家电的工作状态。在 Linux 嵌入式操作系统下,按照Qt GUI 开发应用程序来实现以上功能。后台功能主要是为来自 Internet 客户端的数据请求提供接口,本系统为客户端远程提供数据接口,如查看传感信息、出现异常向客户端报警,以及电器控制命令接口。本系统不仅实现了基于 C/S 结构的智能手机以及平板电脑客户端应用程序的访问接口,还实现了B/S结构的客户端浏览器的访问接口。
在程序设计中,使用3个类实现3种功能。Campus_Sensors 类用于传感器参数的实时显示,Campus _Control类用于家电的开关状态显示和控制,本系统可以支持 4 个电器设备,包括灯光、空调、摄像头和电脑。此外,还可以将楼宇内常见的RFID门禁系统加入进来,设计一个Lab_RFID 类负责管理门禁系统的人员信息。
2 数据格式与网络协议
为了使整个无线传感网系统有效可靠地通信,并且能够保障各种应用的时效性,本文设计了完善的通信格式和网络协议。
2.1 通信格式
2.1.1 无线传感网络通信格式
传感数据采集采用基于UDP和6LoWPAN/IPv6的传输层和路由层打包方案。802.15.4 MAC 层留下 81 字节来传输 IPv6 报文分组,在没有6LoWPAN适配层的情况下,在 802.15.4 上传输 IPv6 的效率会很低。因为从 81字节中扣除 IPv6 基本报头的40字节之后,仅剩下41个字节用来承载传输层的报文。在传输层使用 UDP 协议,还需要占用8个字节空间来存放 UDP 报头,那么最后只剩下33 字节用来传输真正的应用层数据,有效载荷传输效率非常低,为此必须在适配层中提供对冗余报头的压缩算法。本文采用有效的包头压缩 [6]来解决该问题,无线通信发送与接收的流程图如图2所示。
图2 无线节点发送与接收流程图
2.1.2 网关与服务器通信格式
网关与服务器的通信采用XML 格式。XML把数据从 HTML 分离,能够简化数据共享和数据传输,有利于与客户端通信。网关对不同传感器节点的数据加以组织,加上节点类型、ID和接收时间,最终形成XML语言描述示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<sensor>
<type>0</type> //传感节点类型,0代表再生水监测节点
<id>2</id> //传感节点 ID
<time>2014-6-1 02:59</time> //时间
<data> //监测数据
<mount>120.8</mount> //水量
<pressure>1000</pressure> //水压
<turbidity>0.02</turbidity> //浊度
<COD>0.01</COD> //COD
</data>
</sensor>
其中,第一行为 XML 注释信息,包含版本信息和编码方式信息。根元素<sensor>包括<type>、<id>、<time>和<data>四个子元素,数据部分<data>包括<mount>、<pressure>、<turbidity>和<COD>四部分数据。采用 XML编码方式,编码和解析比较方便,数据结构的可扩展性也很强,如果需要添加新的传感节点或新类型的传感节点,只需标明相关属性。
2.2 运行网络设计
2.2.1 问答式网络运行设计
问答式网络主要应用于室内电器智能控制。在实际的组网与运行中,所有可能入网的设备均在中心节点有地址备份。所谓问答式组网,即是网络通信全部由中心发起,通过单独与某子设备通信,发送数据包或接收子设备的数据包。与设备通信是由网关的控制部分——嵌入式系统通过串口发送命令进行的。比如远程访问1号设备的信息,中心节点接收到命令后向1号设备发送数据,要求其发送传感信息数据包,1号设备收到后向中心节点发送相应数据包,中心节点接收到后此次通信结束,再等待串口发来的命令进行下一次通信。
在这种网络运行方式中,同步并不是必须的,因为该网络为星形结构,所有通信过程都是由中心节点发起的。可以设定中心节点发送两种命令帧:一种用来向其他设备询问数据,如传感器测量信息等;另一种用来发送命令控制电器。
2.2.2 时隙分配式网络运行设计
时隙分配式网络适用于水环境传感网和楼宇检测传感网。超帧结构是IEEE 802.15.4标准的一大特色。中心节点广播发起通信,在数据包有效载荷里,为每个子设备分配其占有的时隙。比如2号设备在接收数据包里读取接收有效载荷数组的第2个数,就能知道在哪个时隙发送数据。设定起始时隙由中心节点发送信标帧占据;剩余5个时隙由信标帧分配给其他设备。0号设备为中心节点,其余5个设备编号为1~5。图3显示的是时间轴上各设备占据信道的顺序。
图3 自定义超帧结构
在这种情况下,可以根据实际情况设定超帧的时隙个数。在整个超帧结构中,第一个时隙仍然是由中心节点发送信标帧占据,在信标帧后其他设备在自己的时隙中发送数据包。
2.2.3 簇状网设计
在水质传感网中,由于节点布置距离可能较远,单跳通信并不适用,因此采用簇状网设计,如图4所示。系统中每一个ZigBee网络都是由一个中心(即协调器)发起建立的。
图4 簇形网络及网关系统示意图
建网过程为:首先由充当协调器的中心节点建立网络,网络层请求MAC层对规定的信道,或由物理层默认的信道进行能量检测扫描以测定干扰,扫描结果将按递增顺序排序,超过允许能量水平的新到编号被抛弃,剩余信道选取能量水平最低的作为建网信道,如多个信道满足要求,则选择逻辑编号最小的信道。
协调器建网后设定PAN ID,同时创建一个网络邻接表,为每个路由器分配一个16位地址,并将信息添加到该网络邻接表中,网络节点的添加就完成了。
当路由器下层的家居设备想加入该网络时,将自身信息发送给路由器,再由路由器将此信息转发给网络协调器,网络协调器根据不同路由器转发来的信息进行分组,为每个设备分配一个16位的网内地址,再将此设备添加到网络邻接表中,标志终端设备被添加到此网络中。这样簇状网建立,通信过程可以是分级轮询或分级时隙分配。
另外,在楼宇传感网中,由于节点布置距离较远,且基本沿直线分布,因此需要改进簇状网络设计。此时全部节点都要选择使用全功能设备,即具备路由功能,采用AODV协议[7]作为路由协议,可有效实现多跳通信。
3 客户端设计
客户端硬件设计示意图略——编者注。软件分为 PC 端和移动客户端两部分,其中 PC 端通过浏览器访问 Web 服务器即可,这里不再赘述。
移动客户端通过无线网络,从 Web 服务器获取水质监控信息,包括用户登录、监控数据获取及用户注销3部分,其实现方式与监控数据的获取完全一致,即通过发送 HTTP 数据包,将请求内容写入数据包中,发送至服务器端进行实现。
这里,将模拟采集到的水质监控数据形成的XML 数据文件放在服务器端,以供客户端软件通过网络进行访问。程序示意图略——编者注。
3.1 Android系统开发
对于Android 客户端应用程序,按需求将应用功能分成传感器监测功能和与电器控制功能。SenActivity实现传感器显示界面,UI数据由后台服务 BuildingSenService 提供;AppCtrlActivity 是用户与电器控制设备的交互界面,电器开关状态的显示数据也由后台服务 BuildingSenService 提供。
3.2 iOS系统开发
对于iOS客户端的实现,设定传感器数据的请求以及对电器的控制在初始页面 RootViewController 类进行实现,即程序启动时向网络端发起数据请求。设计采用异步请求“sendAsyRequest:queue:completeHandler:”方法,对返回结果的处理写在“connection:didReceiveData:”方法和“connection:didFailWithError:”方法中,分别对应请求成功与请求失败两种情况。
结语
本文设计了一种面向智慧校园和绿色校园的无线传感网络及其应用。基于6LoWPAN协议栈设计了合理的网络协议,以服务器存储和客户端随时接入充分发挥监测作用,实现智能应用。