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