摘 要: 針對農(nóng)業(yè)生產(chǎn)中部分溫室地點偏僻、位置分散等特點,設(shè)計了一種通過SMS短消息業(yè)務(wù)和GPRS網(wǎng)絡(luò)對溫室群進(jìn)行遠(yuǎn)程監(jiān)控的系統(tǒng),并介紹了系統(tǒng)結(jié)構(gòu)和軟硬件設(shè)計。該系統(tǒng)利用嵌入式技術(shù)構(gòu)建了溫室現(xiàn)場采集和控制終端,利用GPRS無線通信技術(shù)使溫室現(xiàn)場終端和遠(yuǎn)程Server工作于C/S模式。操作者亦可通過SMS短消息的方式對溫室實施監(jiān)控。
關(guān)鍵詞: GSM;GPRS;農(nóng)業(yè)環(huán)境;遠(yuǎn)程監(jiān)控
為合理利用農(nóng)業(yè)資源,提高農(nóng)業(yè)生產(chǎn)效率,將現(xiàn)代電子﹑計算機﹑通信和自動控制等技術(shù)引進(jìn)到農(nóng)業(yè)生產(chǎn)領(lǐng)域是發(fā)展現(xiàn)代農(nóng)業(yè)的必由之路。在農(nóng)業(yè)環(huán)境監(jiān)控網(wǎng)絡(luò)化、智能化的發(fā)展趨勢下,由于部分農(nóng)業(yè)生產(chǎn)環(huán)境地點偏僻、位置分散等因素的制約,采用有線的方式對其進(jìn)行監(jiān)控面臨眾多的瓶頸問題,例如以太網(wǎng)接入不便、RS-485總線傳輸距離有限等。
近年來興起了很多無線組網(wǎng)技術(shù),如將ZigBee技術(shù)用于水產(chǎn)養(yǎng)殖環(huán)境監(jiān)測[1]、溫濕度數(shù)據(jù)采集[2]等。但是ZigBee技術(shù)在實際應(yīng)用中存在很多缺點,例如易受干擾、通信距離短、不適合遠(yuǎn)程監(jiān)控等。移動公網(wǎng)GSM/GPRS通信技術(shù)在工農(nóng)業(yè)生產(chǎn)中的應(yīng)用日益受到人們的關(guān)注。GSM/GPRS有覆蓋域廣﹑接入迅速﹑按量計費等優(yōu)點,在遠(yuǎn)程突發(fā)性數(shù)據(jù)傳輸中具有很好的優(yōu)勢。
本文通過采用GSM/GPRS無線網(wǎng)絡(luò)通信技術(shù)與嵌入式技術(shù)相結(jié)合的方法,設(shè)計了一種對溫室群進(jìn)行遠(yuǎn)程監(jiān)控的系統(tǒng),使操作者可通過GSM網(wǎng)絡(luò)提供的SMS短消息業(yè)務(wù)或GPRS兩種方式獲取溫室現(xiàn)場狀態(tài)和下發(fā)控制命令。溫室現(xiàn)場具備緊急情況下自動控制的功能。系統(tǒng)由于加入了通過手機短消息進(jìn)行監(jiān)控的方法,為溫室遠(yuǎn)程控制提供了一種更為靈活的方式。
1 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)分為三部分:控制端(分為控制中心Server和移動控制端)、GSM/GPRS無線網(wǎng)絡(luò)傳輸層和溫室現(xiàn)場終端??刂浦行腟erver負(fù)責(zé)溫室現(xiàn)場環(huán)境參量的顯示和存儲,并可通過GPRS網(wǎng)絡(luò)下發(fā)命令。移動控制端指操作者通過手機短消息實施監(jiān)控的方式,若操作者不在控制中心,可通過手機發(fā)短消息查詢溫室環(huán)境參量,并下發(fā)控制指令,保證遠(yuǎn)程監(jiān)控實施的靈活性。溫室現(xiàn)場終端負(fù)責(zé)3個方面的任務(wù):(1)溫室現(xiàn)場環(huán)境參量的采集和無線發(fā)送;(2)控制端指令的接收和執(zhí)行;(3)終端內(nèi)運行溫室控制算法,擁有對部分執(zhí)行機構(gòu)的直接控制權(quán),執(zhí)行緊急情況下自動控制的功能。系統(tǒng)示意圖如圖1所示。
控制中心Server具有固定公網(wǎng)IP地址。上位機界面基于Visual C++開發(fā),具備數(shù)據(jù)實時顯示和存儲的功能,通過ADO技術(shù)連接Access數(shù)據(jù)庫,方便操作人員查詢歷史數(shù)據(jù)。溫室現(xiàn)場終端和控制中心Server工作于C/S模式,Server端建立一個監(jiān)聽Socket,在Socket上建立消息響應(yīng)函數(shù)來接收溫室現(xiàn)場終端的連接請求,并用來接收GPRS數(shù)據(jù)。當(dāng)兩者TCP連接建立后,Server端通過掃描指定端口,讀取溫室現(xiàn)場終端上傳的溫室環(huán)境參量信息。
2 硬件設(shè)計
由于溫室環(huán)境的復(fù)雜性和特殊性,在溫室現(xiàn)場終端硬件設(shè)計中需要考慮如下兩個因素:
(1)控制終端是整個系統(tǒng)信息交互的中心,既要定時上傳傳感器數(shù)據(jù),又要接受遠(yuǎn)程指令的查詢和控制,數(shù)據(jù)流量較大,對MCU的內(nèi)存和處理速度有一定要求。
(2)被控溫室在無人值守的情況下,為應(yīng)對異常情況的出現(xiàn),溫室控制終端需具備自動復(fù)位的能力。
基于這兩種因素,終端MCU選用STC12C單片機,STC12C是單時鐘/機器周期(1 T)單片機,速度比普通8051快8~12倍。內(nèi)置看門狗復(fù)位電路,當(dāng)看門狗沒有被定時清零時,將引起復(fù)位,從而防止程序陷入死循環(huán)。終端硬件設(shè)計采用嵌入式技術(shù),MCU搭載傳感器、GPS模塊和GPRS模塊等。終端硬件架構(gòu)如圖2所示。
MCU通過串口分別連接GPS模塊和GPRS模塊。GPS模塊采用Ubolx公司的高精度UbloxNEO6M。通過GPS模塊在服務(wù)器端顯示溫室的位置信息,同時截取GPS幀里的時間戳,為每一幀上傳至服務(wù)器的傳感器數(shù)據(jù)加上時間標(biāo)記。
傳感器用于監(jiān)測溫室內(nèi)重要的環(huán)境參量,包括溫度、濕度、光照、二氧化碳等。其中溫濕度傳感器采用單總線數(shù)字式傳感器DHT11。DATA引腳用于微處理器與DHT11之間的通信和同步,采用單總線數(shù)據(jù)格式,工作后可以一次完整傳輸40 bit溫濕度數(shù)據(jù)。數(shù)據(jù)格式為:8 bit濕度整數(shù)數(shù)據(jù)+8 bit濕度小數(shù)數(shù)據(jù)+8 bit溫度整數(shù)數(shù)據(jù)+8 bit溫度小數(shù)數(shù)據(jù)+8 bit校驗和。
GPRS模塊采用SIMCOM公司的SIM300,內(nèi)嵌TCP/IP協(xié)議棧,支持AT指令集。該模塊負(fù)責(zé)無線通信鏈路的建立,它通過串口與MCU通信,串口工作于模式1,波特率設(shè)置為9 600 b/s。當(dāng)串口接收到數(shù)據(jù)或者需要發(fā)送數(shù)據(jù)時產(chǎn)生串口中斷,MCU響應(yīng)中斷執(zhí)行相應(yīng)處理程序。GPRS模塊負(fù)責(zé)傳感器數(shù)據(jù)上傳和遠(yuǎn)程指令接收兩方面的工作。MCU將傳感器數(shù)據(jù)按通信協(xié)議封裝成幀,交付GPRS模塊定時發(fā)送。GPRS模塊接收到手機短消息指令或控制中心Server指令時,交付MCU進(jìn)行解析。
溫室現(xiàn)場終端通過GPIO口,驅(qū)動繼電器或電機執(zhí)行溫室天窗開關(guān)、遮陽網(wǎng)開關(guān)、卷簾收放等動作。
3 軟件設(shè)計
系統(tǒng)軟件設(shè)計圍繞兩個核心問題:傳感器數(shù)據(jù)的無線發(fā)送和遠(yuǎn)程指令的接收并執(zhí)行?;谶@一思路,采取模塊化的程序設(shè)計以保證良好的可維護(hù)性。系統(tǒng)任務(wù)由各子程序模塊配合協(xié)作完成。例如分別有模塊執(zhí)行GPRS網(wǎng)絡(luò)TCP通信鏈路的建立、溫室控制算法、通信協(xié)議的執(zhí)行以及短消息指令的分析等。圖3為系統(tǒng)工作流程圖。
3.1 TCP無線通信鏈路建立
GPRS是在現(xiàn)有GSM網(wǎng)絡(luò)中增加GPRS網(wǎng)關(guān)支持節(jié)點GGSN和GPRS服務(wù)支持節(jié)點SGSN來實現(xiàn)的[3]。圖4為通過AT指令使溫室現(xiàn)場終端的GPRS模塊和控制中心Server建立TCP連接的過程。
這一過程的實現(xiàn)用到的AT指令如下:
AT+CGATT=1(附著GPRS服務(wù))
AT+CGDCONT=1,"IP","CMNET"(定義PDP 場景)
AT+CGACT=1,1(激活或解除PDP 移動場景)
AT+CIPCSGP=1,"CMNET",選擇接入點
AT+CIPSTART="TCP","Server的 IP地址",
"Server的端口號",嘗試TCP連接。
控制中心Server需具有公網(wǎng)IP地址,當(dāng)成功建立TCP連接后,可用AT+CIPSEND發(fā)送數(shù)據(jù)到Server。如果要關(guān)閉TCP連接可用AT+CIPCLOSE命令。
3.2 通信協(xié)議和優(yōu)先級
由于控制對象是一個溫室群,每個溫室布置有多種類型傳感器,系統(tǒng)制定了完整的通信協(xié)議和數(shù)據(jù)校驗機制來保證控制中心Server和溫室現(xiàn)場終端的正確握手。
為每個被控溫室分配一個獨有的一級ID,溫室內(nèi)的各個傳感器分配獨有的二級ID,每幀上傳數(shù)據(jù)的格式為:幀頭0x21+溫室ID+時間標(biāo)記+傳感器ID+傳感器數(shù)據(jù)+CRC+幀尾0xFF。
由于為溫室提供了SMS和GPRS兩種遠(yuǎn)程控制方法,溫室終端也嵌入了溫室控制算法,使終端擁有對部分執(zhí)行機構(gòu)的控制權(quán),以進(jìn)行緊急情況的判斷處理。為了避免操作的沖突性,系統(tǒng)為每種控制方式分配了不同的優(yōu)先級,優(yōu)先級從高到低依次為:溫室終端、控制中心Server和移動控制端。當(dāng)出現(xiàn)重復(fù)操作指令時,以優(yōu)先級最高的為準(zhǔn)。不符合通信協(xié)議的指令和數(shù)據(jù)將被直接過濾,避免誤操作和重復(fù)操作情況的發(fā)生。
3.3 溫室控制算法
如果將全部的控制權(quán)交由控制端(Server端和移動控制端)發(fā)出,對整個系統(tǒng)而言是十分危險的。例如光照傳感器測出當(dāng)前溫室內(nèi)光照強度過大,而此時控制端命令發(fā)生傳輸延遲或命令丟失的情況,這就會導(dǎo)致溫室現(xiàn)場端因為等待不到遠(yuǎn)程命令而不作為的情況。植物很可能因此被強烈的陽光灼傷。
在系統(tǒng)設(shè)計中,溫室現(xiàn)場終端擁有對部分執(zhí)行機構(gòu)的直接控制權(quán),終端內(nèi)運行溫室控制算法,將選定的重要溫室環(huán)境參量輸入溫室控制算法進(jìn)行運算,根據(jù)運算結(jié)果判斷是否動作相關(guān)執(zhí)行機構(gòu),實現(xiàn)緊急情況下自動控制的功能。
以溫室控制算法中的遮陽網(wǎng)控制算法為例,現(xiàn)場終端得到光照傳感器測得的光照值后,會將其與程序內(nèi)設(shè)定的適合作物生長的光照值做比較,如果實際值高于設(shè)定值,終端會驅(qū)動電機關(guān)閉遮陽網(wǎng),反之驅(qū)動電機打開遮陽網(wǎng)。圖5所示為溫室遮陽網(wǎng)控制算法的流程圖。
3.4 短消息指令分析
SMS(短消息)是GSM系統(tǒng)提供的一種業(yè)務(wù),由于采用了短消息中心的存儲和轉(zhuǎn)發(fā)機制,保證了較高的可靠性[4-5]。下面為基本SMS設(shè)置的精簡程序。
static void init_sms()
{ send_string_uart1("AT+CMGF=0\x00D\x00A");
send_string_uart1("AT+CSCS=\"UCS2\"\x00D\x00A"); //設(shè)置字符集
send_string_uart1("AT+CSMP=17,167,0,241\x00D\x00A");}
//設(shè)置短消息存儲模式
GPRS模塊上電啟動后,通過AT指令進(jìn)行基本SMS的設(shè)置,如“AT+CSCS=UCS2” 設(shè)置所使用字符集為UCS2,“AT+CMGF=0”設(shè)置使用PDU模式。
對于移動控制端指令,需統(tǒng)一消息幀頭,以方便溫室終端的提取和分析。本系統(tǒng)中所有的短消息指令都以“wenshictr”開頭。如果操作者發(fā)短消息“wenshictr+hum=?”至某溫室詢問濕度值,該溫室現(xiàn)場終端收到后, MCU通過AT+CMGR指令讀出消息幀,去除幀的時間標(biāo)記等內(nèi)容,將控制指令提取出來,然后將實時濕度值經(jīng)過UCS2編碼,打包成PDU幀的格式通過“AT+CMGS”指令回復(fù)給操作者。當(dāng)指定參量超出閾值,通過“ATD<電話號碼>”指令可實現(xiàn)電話報警的功能。
本系統(tǒng)在溫室現(xiàn)場經(jīng)過驗證,運行良好,GPRS傳輸數(shù)據(jù)穩(wěn)定可靠,實時性較好。但由于移動公司的限制,發(fā)送數(shù)據(jù)的周期最好設(shè)置在幾分鐘以內(nèi)。因為一定時間內(nèi)如果通信鏈路沒有產(chǎn)生流量,移動公司會取消分配給GPRS模塊的網(wǎng)內(nèi)IP。本系統(tǒng)設(shè)計的初衷是針對偏僻分散溫室群的監(jiān)控,但也可用于其他需要遠(yuǎn)距離監(jiān)控的場合,具有良好的可移植性。
參考文獻(xiàn)
[1] 宦娟,劉星橋,程立強,等.基于ZigBee的水產(chǎn)養(yǎng)殖水環(huán)境無線監(jiān)控系統(tǒng)設(shè)計[J].漁業(yè)現(xiàn)代化,2012,39(1):34-38.
[2] 李永成,凌青,吳剛,等.基于ZigBee的溫濕度數(shù)據(jù)無線采集監(jiān)測系統(tǒng)設(shè)計[J].微型機與應(yīng)用,2012,31(7):61-63.
[3] 盧偉,楊建華,袁雪堯.基于GPRS的嵌入式數(shù)據(jù)采集與遠(yuǎn)傳系統(tǒng)[J].微計算機信息,2011,27(1):12-13.
[4] 朱萬貴,鄭國君,顧新建,等.基于SMS的遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].制造業(yè)自動化,2003,25(12):32-34.
[5] 周國祥,周俊,苗玉彬,等.基于GSM的數(shù)字農(nóng)業(yè)遠(yuǎn)程監(jiān)控系統(tǒng)研究與應(yīng)用[J].農(nóng)業(yè)工程學(xué)報,2005,21(6):87-91.