王晓勤
(重庆资源与环境保护职业学院,重庆 402360)
随着互联网技术的发展,各企事业单位都有自建的机房。机房里的服务器运行对企业单位非常关键,机房温度和湿度以及防静电措施都有严格的规定,如果没有了机房湿度控制,互联网信息会受到极大冲击。因此,每个机房都要有专业技术人员值守,保证服务器正常运行[1]。而传统机房湿度管理系统的精确度较差,且存在很大的滞后性。在机房大量散热情况下,房间湿度太低,极有可能导致静电放电问题,破坏交换机元器件。本文通过引入ZigBee和互联网相关技术,解决机房工作过程中对湿度数据信息采集的远程性、实时性不足的问题,提高对湿度数据的可检测性和可调控性,同时实现方便快捷的管控功能[2]。
机房湿度检测系统共有两大部分,前端部分由机房湿度传感器和ZigBee节点组成,后台部分由WiFi无线模块和手机App组成[3]。采用YL-69机房湿度传感器来进行湿度检测,利用ZigBee节点进行短距离无线传输,将采集到的机房湿度数据上传至手机App[4,5]。在超距离数据传输技术上,采取ZigBee与WiFi连接解决了基于无线传感器网络的超距离传输问题,方案框架如图1所示。
图1 系统方案框架
关于数据处理模块,在现有的一些系统中大多直接用单片机对传感器的数据进行处理,而本系统利用ZigBee节点进行数据处理,可以减少数据干扰的可能性,并且可以在一定程度上增加无线传输的距离。
关于传输系统,现有的系统中有的采用蓝牙模块实现远距离传输,有的利用STM32对数据做出相应处理之后将数据发送到云平台,再利用WiFi模块实现远距离传输。但是为了能够达到远距离传输的要求,这类型的蓝牙产品成本较高且功耗也较大,而直接采用带微控制单元(Microcontroller Unit,MCU)的WiFi模块代替STM32和普通WiFi模块,同样也可以改良系统的结构和性能。
本设计中,采用YL-69湿度传感器来检测湿度。在选择机房湿度传感器时,需要满足测量精度高、可靠性高、稳定性高、安装简单以及操作简单等条件。机房湿度传感器模块功能如图2所示。
图2 机房湿度模块原理电路
将两个插片插进机房里面,然后在AC口处采集电压值。当检测到机房湿度较小时,两个插片之间的电阻趋向于无穷大,此时AC值近似等于VCC值。当检测到机房湿度较大时,两个插片之间的电阻会减小,根据机房湿度的不同,电阻值会减小到几千甚至几百欧,此时AC值会产生相应的变化。
当传感器检测湿度增大时,AC值较小,OUT为低电平;反之当检测到湿度较小时,AC值较大,OUT为高电平。可以直接用OUT输出的高低电平信号来估算湿度的大小,但是为了获得更准确的湿度值,要对AC的值进行模数转换,将其转换成数字量后再读取。从功能模块图可知,电路接通时D1亮,反之D1灭。当检测湿度减小时,AC值大,同时D2熄灭;当湿度大时AC值小,同时D2点亮。
因为本设计中节点较少并且测试地点较为集中,由多个终端设备和一个协调器组成,所以本系统采用星型网络拓扑结构更为合适。在实际环境中,在一定区域采用4点取样法进行数据采集,各节点分布见图3。
图3 各节点分布
本设计中,使用的软件开发环境是IAR软件系统。通过IAR软件可以电脑上编写和调试程序,然后将所写的程序下载到ZigBee硬件,从而实现相应的功能应用。由于ZigBee协议栈已经实现了ZigBee协议,因此可以直接调用协议栈提供的应用程序接口进行程序开发。实现ZigBee数据通信时,首先是网络建立,由于协议栈里面包含了组网函数,因此只需要节点加入函数即可完成;其次是实现网络调用,数据同步发送、接收,实现协议栈的数据发送和接收。
在ZigBee网络中,只有协调器和还没有参与网络的全功能设备可以在信道上建立自己的ZigBee网络。协调器通过发送不同的原语来实现建立新ZigBee网络的过程,协调器功能用IAR软件编程实现。在启动协调器节点之后,先对协议进行初始化,然后开始建立网络[6]。在实验中,若网络被成功建立,则进入终端节点排队加入该网络。如果建立失败,则需重新排队等待。网络一旦建立成功,协调器就会给第一次加入新建立的网络的终端节点分配16位的短地址,即网络地址[7]。随后协调器节点开始等待终端节点上报数据,一旦有数据上报,协调器收到数据之后,将收到的数据信息送给WiFi模块。到此,ZigBee协调器一次完整的数据传输工作执行完毕。其后便是按此过程中终端节点上报数据、协调器接收并转发过程的不断循环。执行协调器流程如图4所示。
图4 协调器执行流程
在ZigBee网络中,本文采用EndDeviceED选项卡来满足终端节点的功能需求。终端节点可以在信道中选择相对最佳的网络加入进去。由于终端节点不允许其他节点加入网络,因此终端节点不能作为父节点,并且不具有数据转换的功能。
启动终端节点操作步骤:首先进行初始化,随之开始尝试加入由协调器建立的网络,一旦终端节点成功加入网络,就开始每隔1 s发送一个任务消息;其次通过机房湿度传感器进行数据采集,通过调用Get_ADC0_Value()函数用软件进行AD转换;最后将带有网络地址的数据包发送给相应的协调器。网络程序中将{“sdx”:xxx}格式设置为Get_ADC0_Value()函数。到此ZigBee终端节点一次完整的数据采集和传输工作执行完毕,其后便按此过程不断进行循环[8]。终端节点执行的流程如图5所示。
图5 终端节点执行流程图
WiFi模块在物联网中属于传输层,是一个智能硬件开发组合,能够提供云端设计。WiFi模块可以实现用户串口、无线网(WiFi)、以太网之间任意的透明转换,可以让传统的串口设备更加快捷地加入到无线网络中。通过WiFi模块,在不改变任何之前配置的情况下,传统的串口设备就可以直接通过Internet网络对数据进行传输[9]。
WiFi模块采用ESP8266完成相应的数据传输。该模块采用串口(LVTTL)与MCU(或其他串口设备)通信方式,内置TCP/IP协议栈,能够实现串口与WiFi之间的转换[10]。在性能方面,ESP8266具有低功耗、作用面积广、传输数据稳定的优点,在性能方面可以达到本系统设计的要求。WiFi模块电路图如图6所示。
图6 WiFi模块电路图
TCP/IP完整协议栈和IEEE 802.11b.g.n均适合该WiFi模块,用户可以根据相应的规则自行设计使用该模块。通过对整体的硬件分析,有利于整个机房湿度无线检测系统的设计和实现。WiFi模块工作流程如图7所示。
图7 WiFi模块工作流程图
本系统采用Android Studio编程来实现手机客户端的设计要求。Android Studio是谷歌软件推出的一个安卓系统开发及调试工具,具有运行速度快且稳定、强大的UI编辑器等优点。
手机应用程序主要为了实现对机房湿度传感器采集到的数据进行显示、报警提醒及文字提示的功能。联系本设计的实际情况,了解App要实现的需求。用户可以注册并登录系统,可以设置正常湿度范围的上下限。当超出或者低于预设范围时发出声音报警,并且有文字显示过高和过低;当湿度检测值在预设范围内时,不启动声音报警,文字显示正常。此外,支持手动选择开始检测和结束检测。App具体执行流程如图8所示。
图8 App具体执行流程
本系统通过手机App客户端,设计登录界面和一个检测控制台界面。用户打开本安卓系统客户端后,首先进入登录界面,第一次使用该软件的用户注册后才可登录,之后可直接输入正确的账号以及密码进入监测控制台界面。需要监测时,点击开始检测即可看到当前检测区域的湿度状况。若要满足不同机房交换机对湿度的要求,则可以通过调节湿度上下限来实现。
首先搭建好软件实验平台,通过仿真器将IAR中的程序下载到协调器和两个终端节点中。组网成功之后,连接有机房湿度传感器的终端节点将采集到的数据传送给协调器汇总,然后由协调器传送给WiFi模块。手机App通过连接WiFi模块,接收数据并进行显示。
将无线传感器网络与WiFi相结合,实现了湿度信息的远距离检测。用于机房湿度信息采集系统,实现远距离准确传输,也可用于大型机房及其他大区域中。通过分析检测到的机房湿度的数据,可以及时通过控制机房空调等设施来提高或者降低机房湿度,以达到调节机房湿度环境的目的。同时,有利于精准管理,在减少传统的测试方法由于人为等因素造成数据不准确以及降低相关人员工作量等方面有一定的帮助。