江世根++王鋒


摘 要:針對傳統糧情監測系統布線復雜、移動性差的問題,設計一種基于ZigBee網絡的Android平臺糧情移動監測系統。該系統由三個子系統組成:ZigBee無線傳感器網絡、PC上位機和Android客戶端。系統基于ZigBee網絡實現糧倉溫濕度數據的采集和無線傳輸;基于Android平臺開發的客戶端實現了方便的糧情信息獲取和查詢。測試結果表明,系統運行穩定可靠、應用方便。
關鍵詞:ZigBee網絡;上位機;Android客戶端;移動監測
中圖分類號:TP274 文獻標識碼:A 文章編號:2095-1302(2015)05-00-02
0 引 言
糧食是人民群眾生活的基本物資,是國家應對自然災害、戰爭或突發性事件的重要戰略物資。作為人口大國,我國不可避免地需要面對糧食安全問題。糧食安全事關社會和諧,政治穩定和經濟可持續發展[1],而科學儲糧是糧食安全的一個重要環節,應著力避免因糧食儲存不當而導致的糧食生蟲、霉變和腐爛等問題[2]。因此,糧情監測顯得尤為重要。現有的糧情監測系統大都只采用PC機系統來監測糧倉內的溫濕度信息,終端比較單一且不具移動性。
隨著移動智能終端的普及,由于其特有的移動性和易于接入網絡的特性[3],可以成為不受地理位置限制、實時動態監測糧情的理想終端設備。本文結合目前Android平臺快速發展的大趨勢和現有糧情監測系統的不足,設計了基于ZigBee網絡的Android平臺糧情移動監測系統。
1 系統結構設計
糧情移動監測系統用以實現對糧倉內部溫度和濕度數據的遠程獲取、傳輸、數據可視化顯示為目標,整個系統由ZigBee無線傳感器網絡、PC上位機、Android手機客戶端三部分組成,系統結構如圖1所示。
圖1 系統結構圖
ZigBee無線傳感器網絡由ZigBee傳感器終端節點和協調器節點組成,主要負責糧倉內部溫濕度數據的采集。傳感器終端節點是整個糧倉環境監測系統的核心部分,負責采集糧倉內部溫度和濕度數據,并將采集到的可靠環境數據以無線的方式傳輸到協調器節點,再由協調器節點通過RS 232串口傳輸給PC上位機。
PC上位機的監控軟件主要實現對糧倉內環境數據的實時監控,將接收到的數據數字化和圖形化顯示,并以不同顏色的波形表示不同位置傳感器節點采集的環境數據。通過使用Socket套接字使上位機軟件具有Socket服務器功能,以此來監聽手機客戶端的請求,并向手機客戶端發送糧情數據。
Android手機客戶端通過WiFi訪問上位機監控軟件,采用TCP通信協議和Socket通信技術實現手機端向上位機發送請求以及將溫濕度數據從上位機傳輸到客戶端。手機客戶端將返回的溫濕度數據可視化,從而實現管理員對糧情的遠程、實時監控。
2 系統軟件設計
2.1 糧倉ZigBee無線傳感器網絡軟件設計
ZigBee無線傳感器網絡包括傳感器終端節點和傳感器協調節點。其中傳感器終端節點負責將傳感器采樣得到的模擬信號轉換成數字信號,并發送溫濕度數據;傳感器協調節點實現溫濕度數據的雙向傳輸,還負責組建無線傳感器網絡、維護網絡和管理網絡[4]。在對糧倉溫濕度數據監測的過程中,每層放置一個傳感器終端節點。傳感器終端節點上集成的溫濕度傳感器負責采集糧倉不同區域的溫濕度信息,而無線傳輸模塊將采集到的溫濕度信息以無線的方式發送到傳感器協調節點上。ZigBee無線傳感器網絡終端節點和協調器節點的工作流程圖如圖2、圖3所示。
2.2 PC上位機軟件設計
PC上位機在整個系統中起到數據中轉的作用,上位機通過RS 232串行口完成與協調器節點的通信,從而接收傳感器終端節點采集到的糧倉溫濕度數據,并通過Socket通信技術實現與手機客戶端之間的數據傳輸。PC上位機上的糧情監測軟件在VC6.0開發環境下采用C++語言開發而成,在工程中通過添加MSComm控件來實現數據傳輸功能。MSComm控件能夠提供串行通信的所有功能,也可從串口讀數據和寫數據到串口上[5]。上位機軟件工作流程如圖4所示。
圖2 協調器節點工作流程圖 圖3 傳感器終端節點工作流程圖
圖4 上位機軟件工作流程圖
該上位機軟件還可實現對糧倉內溫濕度數據的實時監測,將接收到的數據數字化和圖形化顯示。管理員可通過監測界面實時掌握糧倉內溫濕度變化,還可通過溫濕度數據波形的變化對未來一段時間內糧倉環境的變化做出預測,提高糧倉管理的實時性和高效性。
2.3 Android移動客戶端軟件設計
本系統的移動客戶端應用程序是在Windows 7操作系統環境下進行設計,采用Android系統平臺的終端設備搭載客戶端軟件。搭建客戶端軟件開發環境需要安裝和配置以下開發工具[6]:JDK、Java基礎類庫;Eclipse、Java語言開發環境;Android SDK、Android專屬軟件開發工具包;ADT、Android應用程序插件。
手機客戶端通過無線WiFi網絡實現與PC上位機之間的通信,采用TCP/IP通信協議和Socket通信技術向上位機發送請求,等待上位機的響應并將接收到的數據可視化顯示。系統采用Socket通信來實現客戶端與上位機之間的數據傳輸;Socket在計算機網絡中通常被稱為“套接字”,用于描述IP地址和端口號[7],是一個通信鏈的句柄。
手機客戶端與上位機之間采用Socket通信技術來實現數據傳輸的示例如下:
PC上位機端(僅列舉主要代碼):
BOOL ret = WSAStartup(MAKEWORD(2,2),&wsaData);
//初始化TCP協議
Socket ServerSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //創建服務器端套接字
bind(ServerSock, (struct sockaddr*)&localaddr, sizeof(sockaddr)); //將套接字綁定到本地一個端口上
listen(ServerSock, 5); //將套接字設為監聽模式,準備接收客戶請求
Socket client = accept(ServerSock, (sockaddr*)&ClientAddr, &nLen); //等待客戶請求到來,當請求到來后,接受連接請求,返回一個新的對應于此次連接的套接字
Send(ClientSock, strTxBuf, index+1); //發送數據
移動客戶端(僅列舉主要代碼):
socketAddress = new InetSocketAddress(strIP, SERVER_PORT); //根據服務器IP地址和端口號創建套接字地址
socket = new Socket(); //創建客戶端套接字
socket.connect(socketAddress, SERVER_PORT); //向指定服務器發送連接請求
一旦IP地址和端口號都與上位機端匹配,客戶端發送的請求就會被上位機端接收,這時就實現了客戶端與上位機端的通信。然后,在客戶端創建InputStream(輸入流)和OutputStream(輸出流)的對象實例,便可調用write方法和read方法實現對糧倉溫濕度數據的接收。
3 系統測試
系統在糧食儲備庫平房倉模型中進行測試。將糧倉模型分成上、中、下三層,在每層放置一個傳感器終端節點,在Android客戶端界面上采用終端1、終端2和終端3來表示。其中傳感器終端節點采用DHT11溫濕度傳感器來采集溫濕度數據。經調試,系統在上位機軟件中通過定時器設置為每隔1s刷新一次數據。經測試,該系統能夠長時間穩定運行,實現了糧倉溫濕度采集、傳輸和遠程顯示等功能。PC上位機軟件和Android客戶端最終的顯示界面如圖5、圖6所示。
4 結 語
本文設計實現了糧情信息的遠程獲取和移動性監測。系統采用ZigBee網絡進行糧倉溫濕度信息的采集,而移動終端客戶端的開發打破了地域限制,且移動性好,實現了隨時隨地掌握糧情信息的功能。
圖5 上位機軟件顯示界面 圖6 手機客戶端顯示界面
參考文獻
[1]胡岳岷.中國糧食安全:價值維度與戰略選擇[J].經濟學家,2013,25(5):50-56.
[2]祁正亞,闕岳輝,梁柱有,等.加強科學管理 降低儲糧損耗[J].糧食加工,2014,39(1):68-71.
[3]鞠傳香,吳志勇.基于Android平臺的礦井安全監控系統研制[J].煤炭工程,2013,45(S1):165-167.
[4] Gurjit Kaur,kiran Ahuja.Qos Measureme- nt of Zigbee Home Automation Network using Various Routing Protocols[J].Intern -ational Journal of Computer Application -s,2011,13(2):25-30.
[5]孫學巖.基于ZigBee的雞舍智能測控系統[J].農機化研究,2011,33(1):107-110.
[6]李興華.Android開發實戰經典[M].北京:清華大學出版社,2012.
[7] Sunghoi Park,Myeong-in Choi.Design an-d Implementation of Smart Energy Man-agement System for Reducing Power C-onsumption Using ZigBee Wireless Com-munication Module[J].Procedia Computer Science,2013,19:662-668.