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