摘 要: 使用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.