摘 要:使用GPRS与ZigBee相结合的通信方式搭建了LED路灯远程监控系统。重点设计了基于Android的移动终端软件,实现了通过移动终端对路灯进行监控。系统以PC做为服务器对所有路灯节点进行监控,Android移动终端不与路灯节点直接通信,而是通过服务器向路灯发送命令并接收服务器发送的路灯状态和报警信息。软件采用Socket通信,采用了二级权限的设计方式,兼顾了移动终端的安全性与方便性。最后对软件进行了测试,能够达到所需的控制要求,可以应用于实际工程当中。
关键词:Android;LED路灯; ZigBee; 移动终端
智能化、无线化是路灯照明系统的主要发展趋势。本文采用了ZigBee通信技术组网,并利用Android移动终端来对路灯进行监控,重点是设计Android移动终端软件。利用手机监控路灯,工作人员可以在任何时间地点控制路灯开、关,随时掌握路灯运行情况,及时发现路灯不亮、常亮、漏电等各种故障,有效提高对市政管理的工作效率。
Android 是 Google 开发的基于Linux的开源移动终端开发平台,其构架包括应用程序层、应用程序构架层、系统运行层和Linux内核层[1] 4层。Android系统在2005年加入开放手机联盟(The Open Handset Alliance),2008年10月第一款Android系统的手机问世。Android手机诞生后发展迅速,不仅应用软件数量巨大,而且做为移动终端在对其他领域进行监控方面也有飞速发展[2-5]。罗飞教授将Android手机应用于污水处理系统,通过GSM技术实现远程监控[4];毕经平研究员用Android手机替代车载设备,实现了汽车状态感知上传、GPS定位等功能[5];魏崇毓教授将Android手机用于视频监控,通过手机调整摄像头的角度和焦距,并在手机上显示监控画面[2];王秀敏教授设计并实现了基于Android平台的桥梁检测车安全监控系统,可以根据实际情况虚拟障碍物,实现机械臂与障碍物碰撞的逼真模拟与报警[3]。
1 系统的硬件设计
系统由监控中心及移动控制端、无线网络、路灯节点3部分组成。监控中心以PC做为服务器,工作人员通过服务器对路灯进行监控。同时,Android移动终端通过Socket与服务器相连接,工作人员用手持移动终端向服务器传递信息并通过服务器查询路灯的状态,进而实现移动设备对路灯的监控。系统结构如图1所示。
无线网络采用ZigBee技术和GPRS技术相结合进行通信。ZigBee是短距离、低功耗、低效率的无线网络技术,协议栈紧凑简单,实现要求低[6]。GPRS模块从Internet接收服务器的信息并通过RS232传递给ZigBee协调器,协调器再将信息传递给各个路灯节点。本系统中ZigBee模块选用的是CC2530芯片,网络采用树状连接,ZigBee网络协调器起着组织、管理网络和发号施令的作用,当网络中有节点加入时,它会为新节点分配地址,因此不能掉电也不存在低功耗状态。
路灯节点由电源模块、控制器和车辆检测器、光传感器和ZigBee路由器组成,完成通信数据的收发、现场数据及控制命令的处理、LED路灯及相关检测器的启动关闭任务。路灯的控制器选用ATmega128芯片,LED驱动芯片选用XN2115。
2 移动终端软件设计
系统以PC做为服务器来对路灯进行集中控制, Android移动终端可通过Socket来连接服务器进而对路灯进行远程控制,而非直接与路灯节点连接通信。Android移动终端可视界面对应了Activity,不可视的任务由Service完成。软件要完成路灯信息查询、路灯控制、接收报警等任务,需要多个Activity和Service配合完成[7]。程序流程如图2所示。
2.1 通信方式
软件在启动后需要主动与服务器进行连接,还要能够从服务器读取路灯信息、向服务器传递控制指令、接收服务器发出的报警信号。移动终端与服务器连接时可采用WebServices或者Socket。WebServices比较稳定但不能进行双向通信(可与服务器主动连接,但是无法接收服务器主动发出的报警信号),且占用内存比较大; Socket技术构架存在不稳定问题,但建立连接后服务器与客户端都可以主动向对方发出信息。这里使用Socket技术进行通信。
客户端与服务端建立连接后,通过InputStream和InputStream进行双向通信。使用Socket需要访问网络,在AndroidManifest.xml 文件中要加入访问网络的权限。
2.2 安全性
移动终端的安全问题是制约其发展的主要问题之一,即当手机丢失后,必须保证得到手机的人不能通过手机来控制路灯系统。软件采用了两级权限的设计方式,查询权限与控制权限分离开,一级密码、二级密码分别对应了不同的权限。软件启动后输入一级密码进行登录获得查询权限,可以查看所有的路灯信息、接收服务器报警信息,但是不能对路灯进行控制;当退出系统时自动退出一级密码登录。对路灯进行控制需要输入二级密码获取控制权限,输入二级密码后系统会自动生成密码文件并进行计时(此处计时2 min),对路灯进行控制时系统自动读取密码文件信息并加载到控制信息中,服务器接收控制信息并分离二级密码信息,若密码正确,则按要求控制路灯。计时结束后,系统自动删除密码文件,若要继续对路灯进行控制,则需要重新输入二级密码。这样就兼顾了软件的安全性和方便性:非工作人员得到手机后能查看信息但不能控制路灯;工作人员要控制路灯不需要每次都输入二次密码,输入一次后就有2 min的控制时间。其界面如图3所示。软件中计时部分不在界面中显示,所以不采用复杂的计时器,而是直接使用线程计时。
2.3 报警模块
软件启动后,要随时准备接收服务器的报警信息。因为系统何时报警并不确定,客户端无法通过主动查询的方式去获取报警信息,只能被动地等待服务器报警。Socket的一个优点是连接一旦建立,服务器与客户端的区别就不再明显,双方都可以主动向对方发送信息。路灯节点的XN2115芯片会自动检测路灯是否出现故障,若出现故障,将会通过无线网络向服务器发送报警信号。服务器接收到路灯的报警信号后,会将这一信息传递给手机,手机通过铃声来向工作人员发出警报,并在报警历史文件中更新报警信息。
Socket技术框架存在不稳定问题,为了增加软件的的可靠性,当客户端接到报警信息后会发给服务器一个反馈信息。若服务器发送了报警信息却在2 s内收不到反馈信息,则重新发送报警信息。若持续5次仍然没有收到反馈,则系统认为网络连接断开。
2.4 查询模块
服务器每隔1 min会查询路灯节点的工作状态,并生成或者更新工作状态记录文件。持有移动终端的工作人员在输入一级密码之后,软件连接服务器并自动读取工作状态记录文件,然后按照工作状态记录文件中的内容将路灯状态显示出来。也可以通过“刷新”按钮来获取新的工作状态记录文件。
3 实验验证与结论
Android应用程序可在Eclipse环境下开发,需要下载Android SDK开发工具包。Android可以通过ADB动态下载、卸载指定的APK文件。新的APK文件在下载成功后,包管理器会对其进行分析,读取应用程序的相关信息,并将它加入到应用程序列表。更换模块时,只需要换上相应的APK即可,而不像其他系统那样需要重新编译和替换所有模块。
本系统在局域网内进行了测试。测试手机使用三星I5200,服务器程序是在Eclipse环境下用JAVA编写的。手机客户端可以控制单片机上LED灯的启动与关闭,路灯的工作情况、报警信息也可以在手机上显示。程序工作界面如图4所示。
通过Android移动终端、PC、GPRS和ZigBee来组建LED路灯控制网络,能够实现移动终端对路灯的远程监控,为工作人员带来了极大的方便,具有较大的应用价值。
参考文献
[1] 詹成国,朱伟,徐敏.基于Android的测控装置人机界面的设计与开发[J].电力自动化设备,2012,32(1):119-122.
[2] 魏崇毓,张菲菲. 基于Android平台的视频监控系统设计[J].计算机工程,2012,38(14):214-216.
[3] 张麒,王秀敏,任建新.基于Android的桥梁检测车安全监控系统的设计[J] .吉林大学学报(信息科学版),2012,30(3):285-290.
[4] 卢伯澎, 罗飞. 基于Android和GSM的远程污水处理系统[J].计算机工程,2011,37(S1):300-308.
[5] 高峰,毕经平,郭景峰,等.汽车状态感知系统的Android客户端[J].清华大学学报(自然科学版),2011,51(S1):1393-1396.
[6] KWON Y, KIM H. Efficient group key management of ZigBee network for home automation[C]. 2012 IEEE International Conference on Consumer Electronics(ICCE),IEEE, 2012:378-379.
[7] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.