利用Arduino及Android终端的图书馆机房远程监控系统研发
王家兵
重庆交通大学图书馆 重庆 400074
摘要

介绍采用开源Arduino和Android智能终端构建的图书馆机房远程监控系统,对系统功能模块、硬件组成、软件设计进行描述。系统以Arduino ADK作为控制板,完成机房温度、湿度、烟感、动力等信息的采集,Android终端完成Web服务运行状况监测、传感器数据收集、临时存储及实时显示,相关数据上传到Yeelink云计算平台进行长期存储或在线监测,系统具有部署方便、成本低、可靠性高、扩展性强等优点。

关键词: 远程监控系统; Arduino; Android; 云计算
中图分类号:TP229
Developing a Remote Monitoring System for Library Computer Room Using Arduino and Android Terminal
Wang Jiabing
Chongqing Jiaotong University Library, Chongqing 400074, China
Abstract

This paper introduces a remote monitoring system for library computer room using Arduino and Android smart terminal. The system modules, hardware and software design are described in detail. Arduino ADK is used as a control panel to complete the information acquisition of temperature, humidity, smoke and power.Android smart terminal is used to monitor the Web services, store and display the sensors temporary data. Related information is also uploaded to Yeelink cloud computing platform for long-term storage or online monitoring. The whole system has the advantages of convenient deployment, low cost, high reliability and high scalability.

Keyword: Remote monitoring system; Arduino; Android; Cloud computing
1 引言

为保证图书馆机房服务器、交换机、电力、空调安全运行,以及各个Web服务正常运行,越来越多的图书馆把构建机房远程监控系统纳入规化和建设中。但商用机房动力及环境集中监控系统却并不适用于图书馆机房监控,存在价格高、缺乏一些必要功能、无法满足设备动态增加、难以进行二次开发等缺陷[ 1]。广大科研工作者一直致力于研发实用的机房远程监控系统,如樊春等[ 1]设计的高校机房动力及环境监控系统、张永波[ 2]设计的高校信息机房环境数据网络化监控系统和顾勇等[ 3]设计的机房远程监控系统。开源平台Arduino[ 4]与Android智能终端具有可定制性、功能强、性价比高等诸多优点,为构建机房远程监控系统提供了良好的基础平台。本文以Arduino ADK为控制板[ 5],结合Android智能终端与Yeelink云计算平台[ 6]实现图书馆机房远程监控系统,该系统具有实现简便、可靠性高、实用性好、扩展性强等优点。

2 系统总体设计

开发的图书馆机房远程监控系统功能上实现了机房烟感、温度、湿度和动力等环境参数信息的采集,以及图书馆各相关Web服务运行状态的测试和上报。该系统由测量子系统、数据采集与控制子系统、数据处理与远程通信子系统、云计算平台几部分组成。测量子系统包括烟感、温度、湿度和动力等传感器及接口电路;数据采集与控制子系统采用Arduino ADK控制板实现各传感器的数据读取;数据处理与远程通信子系统采用Android智能终端完成传感器数据处理,以及各Web服务器状态监控,相关信息可通过终端实时查看并上传到Yeelink云计算平台,工作人员可随时通过Yeelink云计算平台远程查看监控信息;系统利用Yeelink的事件通知功能,来实现报警事件的实时通知。整个系统的架构如图1所示:

图1 图书馆机房监控系统架构

3 系统设计与实现
3.1 测量子系统

温度、湿度、烟感等传感器数量可根据图书馆机房的实际情况灵活部署,根据经验,面积为100m2左右的机房选用3个温度传感器、6个烟感传感器和1个湿度传感器。温度传感器采用美国Maxim公司DS18B20[ 7],湿度传感器采用广州奥松电子公司DHT11[ 8],烟感采用深圳市嘉保公司SS-168[ 9],动力监控通过5V电源监控和UPS串口来实现。

(1)DS18B20数字温度传感器测温范围为-55℃-+125℃,固有测温分辨率为0.5℃,采用1-Wire总线协议方式,用单一数据线完成数据双向传输,支持多点组网功能。多个DS18B20可以并联组网,实现多点测温,测量结果以9-12位数字量方式串行传送。为达到对机房空调及室内温度良好的监控效果,DS18B20布置在机房空调风口和服务器机柜等多个点。

(2)DHT11是一款含有已校准数字信号输出的温湿度复合传感器,测量范围:湿度为20-90%RH,温度为0-50℃;测量精度:湿度为±5%RH, 温度为±2℃。DHT11采用4针单排引脚封装,输出单总线数字信号。

(3)SS-168光电式烟雾探测器采用吸顶安装,9V电池供电, 提供现场声光报警,内置继电器,有电源、地、常开端、常闭端以及公共端共5个引线端子。与Arduino ADK控制板接口时采用公共端接地,常开端直接到控制板的数字输入端口,并外接一100K 的上拉电阻,以低电平作为报警信号。

(4)UPS的串口监控采用MegaTec UPS串口协议标准[ 10],其中规定了串口监控UPS的命令格式以及其他基本参数。向UPS发送信息查询命令,然后将接收到的数据进行解析,即得到UPS的基本信息。

温度、湿度和烟感的传感器均采用了数字式输出,与Arduino连接非常方便,只需将其输出端接到Arduino的数字脚,也可以采用Arduino传感器扩展板,直接连在扩展板上。Arduino ADK 提供了四路串口信号,采用TTL电平,UPS的串口与Arduino ADK其中一路串口直接相连即可。

3.2 Arduino ADK数据采集与控制子系统

数据采集与控制子系统采用Arduino ADK控制板实现。Arduino是一个基于Atmel 的AVR和ARM微控制器的开源软硬件平台,具有丰富的外围模块、易用的开发语言和开发环境以及大量的源码库,近年来在机器人、传感器等领域发展迅速并得到广泛的应用。Arduino硬件设计采用CC-BY-SA3.0版本(知识共享-署名-相同方式共享3.0协议),软件采用类C++语言的高级语言,并提供基于Eclipse的开源IDE软件开发环境。硬件设计图、各种软件源码库和开发环境均可从Arduino.cc官方网站免费下载使用,并可按需求进行修改。

Arduino ADK是Arduino系列中一款基于Mega2560的微控制器板,具有256 KB Flash内存,4KB EEPROM内存,54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP Header和一个复位按钮,并且提供一路基于MAX3421e 芯片的USB主控制接口与Andriod系统的手机互连。利用Google 2011年发布的Android 开源配件开发工具ADK(Android Open Accessory Development Kit) 可以方便地使Arduino与Android之间通过USB进行数据通信。

Arduino的程序由setup函数和loop函数两部分组成,setup函数在系统上电或复位后运行一次,完成一些初始化及一次性的工作,例如串口、USB的初始化;之后,系统进入loop函数,loop函数是Arduino程序的主体,是一个无限循环的过程,完成温度、UPS等传感器数据采集、处理和数据打包发送。USB的驱动采用Arduino ADK相应库,DS18B20、DHT11、串口等驱动Arduino都均有相应的代码库,可直接使用。系统流程如图2所示:

图2 数据采集与控制子系统Arduino流程图

3.3 Android数据处理与远程通讯子系统

数据处理与远程通讯子系统采用商用Android手持终端,一方面是利用其较大的数据存储空间和较强的计算能力完成Arduino ADK采集的传感器数据整理、过滤、显示以及图书馆各Web服务器的状态监测;另一方面是利用其WiFi、3G以及以太网等多网络接入特性,来确保数据上传到云计算平台。Android系统平台具有开放性、便携性、无缝网络通信、待机时间长等特点,适合图书馆机房监控系统应用。本系统选用了联想的乐Pad A2107平板电脑,其具有Android 4.0操作系统,Contex A9处理器,1GB内存,4 GB硬盘,支持WCDMA 、WiFi网络联接等。

Android[ 11]采用Eclipse作开发环境,以Java作为开发语言,可按照Google Accessory Development Kit标准教程搭建开发环境[ 12] 。数据处理与远程通信子系统的Android程序由用户界面层、服务层、持久层三部分组成:用户界面层完成与用户交互和相关传感器数据的显示;服务层由服务程序在后台运行,创建线程执行与云计算平台数据交互、Web服务器状态监测以及本地数据处理,Web服务器状态监测采用curl来实现;持久层采用SQLite 数据库存储相关状态信息并实现文件读写。软件功能模块如图3所示:

图3 数据处理与远程通信子系统软件功能模块

3.4 Yeelink云计算平台

云计算以其强大的处理能力、存储能力和高性价比,在物联网领域有着广泛的应用前景,并逐步开始走向应用。各种在线物联网云计算平台也开始出现,如国内的Yeelink和国外的Cosm。Yeelink是一个对公众免费开放的公共物联网服务平台,能接入各种传感器设备,完成海量的传感器数据并发接入和存储,同时具有事件触发机制,在数据达到某个设定阈值时自动调用预先设定的规则,发送定制的短信、微博或邮件。Yeelink对所有的传感器数据提供基于地理和时间的管理,所有数据均可以地图和时间轴方式进行展现;另外,还具有双向传输和控制、与社交网络融合等特色。

在Yeelink上部署图书馆机房设备数据的监控非常简便,系统硬件采用积木式构建,用户界面采用Yeelink平台实现。注册后即可获取API Key,登录用户界面后,在用户中心 我的设备菜单项,可增加新设备、管理设备、管理动作等。在Andriod应用程序中,按照Yeelink的开放API,以获取的API Key为认证,采用JSON数据交换格式提交各传感器、Web服务器的状态信息,监控人员可在任何地方登录查看相关信息,并接收来自动作触发的事件通知。

4 应用效果展示及测试

系统硬件在图书馆机房实地部署测试,达到预期效果。整个机房面积100m2,有5台服务器、2个山特UPS、12个Web服务,共安设3个温感、6个烟感、1个湿感,采用2个串口分别对2个UPS进行监控,从Yeelink可以查看到各温感、湿感、UPS等测量数据以及烟感与电源的开关量状态。图4显示了温度监测示例。

图4 Yeelink温度监控结果示例

经过三个多月的测试,系统运行稳定,温度测量误差小于0.5℃,湿度测量误差小于5%RH。Web服务状态的测试方面,初期curl连接时间为1秒,平均每3小时有一次误报现象,后来调整为2秒,并改为连续多次出现状态错误再报警,由此降低了误报率。Android数据上传与Yeelink端显示间略有延时,但小于1秒,不影响使用。报警动作触发的邮件报警采用了QQ邮箱,利用手机QQ可收到报警邮件,但有1-5秒的时延,原因是邮件服务器的影响,考虑后期加入Android直接短信报警。

5 结语

本文采用开源Arduino、商用Android终端以及Yeelink云平台来构建的图书馆机房远程监控系统在实际应用中获得较为理想的效果,对各图书馆实施机房远程监控系统有实际的参考意义。由于采用成熟的硬件平台,部署简易快速,系统总体实现成本远低于商业的机房远程监控系统,稳定性并不逊于商业的产品,而且在适用性、可定制性、扩展性等方面均有良好表现。初期开发中仅实现了各种基本监控功能,一些高级的功能如视频监控、服务器操控等也可在基础架构上较容易地扩展实现。

系统实现中也存在一些不足之处:如系统软件开发工作量较大,涉及Arduino、Android多个平台的软件开发;Yeelink目前只提供E-mail通知系统事件报警,导致报警通知受三方邮件服务器影响,有一定时延,如加入Android直接短信报警功能会更完善;对温度、湿度、服务器状态等的采样频率可进一步优化,以在准确度与采集信息量方面取得更好折衷;Web状态监测可加入页面内容解析以提高准确率等,这些都有待进一步改进。

参考文献
[1] 樊春, 杨天颖, 杨旭, . 高校机房动力及环境监控系统的设计[J]. 中山大学学报: 自然科学版, 2009, 48(S1): 226-228.
(Fan Chun, Yang Tianying, Yang Xu, et al. Development of College Computer Room Power and Environmental Monitoring System[J]. Acta Scientiarum Naturalium Universitatis Sunyatseni, 2009, 48(S1): 226-228. ) [本文引用:2] [CJCR: 0.574]
[2] 张永波. 高校信息机房环境数据网络化监控系统的应用研究[J]. 丽水学院学报, 2010, 32(5): 46-50.
(Zhang Yongbo. A Study of Application of Environment Data of Network Monitoring System in University Information Room[J]. Journal of Lishui University, 2010, 32(5): 46-50. ) [本文引用:1] [CJCR: 0.221]
[3] 顾勇, 储云峰, 居鑫磊. 数字图书馆机房远程监控系统研究与开发[J]. 现代图书情报技术, 2011(12): 84-89.
(Gu Yong, Chu Yunfeng, Ju Xinlei. Research and Development of Remote Monitoring System for Computer Room in Digital Library[J]. New Technology of Library and Information Service, 2011(12): 84-89. ) [本文引用:1] [CJCR: 1.073]
[4] Arduino[EB/OL]. [ 2012-01-15]. Arduino[EB/OL]. [2012-01-15]. http://en.wikipedia.org/wiki/Arduino. [本文引用:1]
[5] Arduino ADK[EB/OL]. [ 2012-01-05]. Arduino ADK[EB/OL]. [2012-01-05]. http://arduino.cc/en/Main/ArduinoBoardADK. [本文引用:1]
[6] Yeelink API文档[EB/OL]. [ 2012-06-03]. Yeelink API文档[EB/OL]. [2012-06-03]. http://www.yeelink.net/develop/api.(APIDocument[EB/OL]. [2012-06-03]. http://www.yeelink.net/develop/api [本文引用:1]
[7] DS18B20[EB/OL]. [2012-03-03]. http://www.maximintegrated.com/datasheet/index.mvp/id/2812. [本文引用:1]
[8] DHT11[EB/OL]. [2012-03-03]. http://www.aosong.com/cn/products/details.asp?id=109. [本文引用:1]
[9] SS-168P[EB/OL]. [2012-03-03]. http://www.gabel.cn/view.aspx?a=301. [本文引用:1]
[10] MegaTec Protocol Information[EB/OL]. [ 2012-03-03]. MegaTec Protocol Information[EB/OL]. [2012-03-03]. http://www.networkupstools.org/ups-protocols/megatec.html. [本文引用:1]
[11] Android[EB/OL]. [ 2012-01-15]. Android[EB/OL]. [2012-01-15]. http://www.android.com/. [本文引用:1]
[12] Accessory Development Kit[EB/OL]. [ 2012-03-03]. Accessory Development Kit[EB/OL]. [2012-03-03]. http: //developer. and roid. com/tools/adk/index. html.
(作者E-mail: eelance@qq. com) [本文引用:1]