ZigBee的遠(yuǎn)程低功耗灌溉控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:設(shè)計(jì)一套基于ZigBee和GSM遠(yuǎn)程無(wú)線控制系統(tǒng),對(duì)農(nóng)田里的滴灌系統(tǒng)進(jìn)行遠(yuǎn)程控制。設(shè)計(jì)了上位機(jī)和農(nóng)田中的ZigBee協(xié)調(diào)器,ZigBee協(xié)調(diào)器與ZigBee終端傳輸消息來(lái)對(duì)灌溉系統(tǒng)進(jìn)行安全有效的控制。采用適合于ZigBee星型網(wǎng)絡(luò)的時(shí)間同步算法,滿(mǎn)足ZigBee節(jié)點(diǎn)的同步休眠與喚醒的需要。設(shè)計(jì)相應(yīng)的電磁閥控制策略對(duì)電磁閥進(jìn)行安全有效的控制。
關(guān)鍵詞:ZigBee;時(shí)間同步;休眠;無(wú)線遙控灌溉控制;低功耗
引言
本系統(tǒng)在傳統(tǒng)的滴水灌溉系統(tǒng)基礎(chǔ)上,在農(nóng)田中采用ZigBee自組網(wǎng)網(wǎng)絡(luò)進(jìn)行信息的傳輸,不用在農(nóng)田中布置通信線路;遠(yuǎn)程數(shù)據(jù)的傳輸采用GSM網(wǎng)絡(luò),不需要額外地布置通信設(shè)備,減少了農(nóng)田灌溉的成本,增加了系統(tǒng)的安全性。系統(tǒng)采用具有低功耗特性的ZigBee無(wú)線自組網(wǎng)單片機(jī),采用兩節(jié)干電池供電,節(jié)約對(duì)能源的消耗。農(nóng)田中的無(wú)線傳感網(wǎng)絡(luò)可以實(shí)時(shí)地采集灌溉系統(tǒng)的運(yùn)行狀況,將其傳輸?shù)竭h(yuǎn)程的監(jiān)控系統(tǒng),工作人員實(shí)時(shí)遠(yuǎn)程控制灌溉,極大地節(jié)省了勞動(dòng)力,提高了工作效率,增加了農(nóng)民的收入。
1 系統(tǒng)總體設(shè)計(jì)
農(nóng)田種植面積大,地塊分散,這就決定了采集系統(tǒng)應(yīng)具有如下兩個(gè)主要特點(diǎn):一是系統(tǒng)控制節(jié)點(diǎn)多;二是系統(tǒng)是一個(gè)覆蓋面很廣的通信網(wǎng)絡(luò)(采集點(diǎn)具有分散性)。基于上述特點(diǎn),系統(tǒng)設(shè)計(jì)為分布式體系結(jié)構(gòu),主要包含農(nóng)田監(jiān)控終端和監(jiān)控管理中心兩個(gè)模塊,而農(nóng)田監(jiān)控終端由于功能的不同又分為ZigBee終端和ZigBee協(xié)調(diào)器(與上位機(jī)交互的終端)。基于上述分析本系統(tǒng)采用ZigBee技術(shù)和GSM技實(shí)現(xiàn)系統(tǒng)網(wǎng)絡(luò)的組件和數(shù)據(jù)的傳輸。其系統(tǒng)結(jié)構(gòu)如圖1所示。
遠(yuǎn)程的監(jiān)控管理中心通過(guò)GSM網(wǎng)絡(luò)發(fā)送控制指令到農(nóng)田中的ZigBee協(xié)調(diào)器,ZigBee協(xié)調(diào)器收到控制指令后,將其轉(zhuǎn)發(fā)到ZigBee終端,以實(shí)現(xiàn)對(duì)灌溉系統(tǒng)的控制。首先監(jiān)控管理中心的計(jì)算機(jī)通過(guò)RS232接口向GSM無(wú)線通信設(shè)備PTM100發(fā)送AT命令,PTM100以短消息形式通過(guò)GSM網(wǎng)絡(luò)把控制命令發(fā)送到農(nóng)田ZigBee協(xié)調(diào)器,ZigBee協(xié)調(diào)器根據(jù)監(jiān)控管理中心發(fā)送的控制命令,向相應(yīng)的終端發(fā)送控制命令,控制電磁閥的關(guān)斷,Zig Bee終端采集電磁閥的狀態(tài)通過(guò)無(wú)線網(wǎng)絡(luò)傳輸?shù)絑igBee協(xié)調(diào)器,再通過(guò)GSM網(wǎng)絡(luò)將電磁閥的狀態(tài)傳輸?shù)綌?shù)據(jù)終端。
2 系統(tǒng)硬件設(shè)計(jì)
根據(jù)系統(tǒng)功能的要求,系統(tǒng)的硬件電路分為太陽(yáng)能充電電路、CC2530供電電路、電磁閥驅(qū)動(dòng)電路。
2.1 太陽(yáng)能充電電路
由于ZigBee協(xié)調(diào)器不能睡眠而且加入了GSM模塊,ZigBee協(xié)調(diào)器耗電量比較大,因此ZigBee協(xié)調(diào)器必須采用太陽(yáng)能電池板供給電池充電。其充電電路如2所示。
太陽(yáng)能電池板接在J1處,CN3082是一塊太陽(yáng)能充電管理芯片。當(dāng)輸入電壓大于電源低電壓檢測(cè)閾值時(shí),CN3082開(kāi)始對(duì)電池充電,在預(yù)充電狀態(tài)和恒流充電狀態(tài),引腳輸出低電平,表示充電正在進(jìn)行。如果電池電壓反饋輸入端FB引腳電壓低于1.54 V,充電器處于預(yù)充電狀態(tài),充電電流為所設(shè)置的恒流充電電流的20%。電池電壓反饋輸入端FB引腳電壓大于1.54 V且小于2.445 V時(shí),充電器采用恒流模式對(duì)電池充電,充電電流由電阻R1確定。當(dāng)電池電壓反饋輸入端FB引腳電壓大于2.445 V時(shí),CN3082處于維持充電狀態(tài),維持充電電流由輸入電壓VIN、R2和R1決定。在維持充電狀態(tài),當(dāng)電池電壓反饋輸入端FB引腳電壓下降到1.65 V時(shí),CN3082將開(kāi)始新的充電周期,進(jìn)入預(yù)充電狀態(tài)或者恒流充電狀態(tài)。
2.2 CC2530供電電路
由于CC2530的供電電壓為2~3.6 V,而充電電池的輸出電壓為3.7 V,因此用充電電池供電的CC2530供電電路必須經(jīng)過(guò)一個(gè)線性穩(wěn)壓電路,使其輸出電壓變?yōu)?~3.6 V,電路如圖3所示。其中CAT6219—330是一塊輸出電流最大為500 mA、輸出電壓為3.3 V的線性穩(wěn)壓器件,EN端為輸入使能端,高電平時(shí)輸入有效。為了提高瞬態(tài)響應(yīng),在5腳加一個(gè)2.2μF的旁路電容,為了提高電壓抑制比和減少輸出電壓的噪聲,在4腳處接一個(gè)0.01μF的旁路電容。
2.3 電磁閥驅(qū)動(dòng)電路
由于CC2530的驅(qū)動(dòng)電路很小,不能驅(qū)動(dòng)電磁閥里面的電機(jī),使電磁閥關(guān)斷,所以必須在CC2530的I/O和電機(jī)之間加上驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)電機(jī),其電路圖如圖4所示。
J2接電磁閥的輸入端,L7010為電機(jī)驅(qū)動(dòng)模塊,其工作電壓最低可以達(dá)到1.8 V,持續(xù)驅(qū)動(dòng)電流達(dá)1 A,尖峰工作電流可以達(dá)到2 A,并且可以方便地控制電機(jī)的正反轉(zhuǎn),其中VM為電機(jī)電源,VCC為芯片電源。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)控制協(xié)議設(shè)計(jì)
3.1.1 上位機(jī)向下位機(jī)發(fā)送控制消息
由于上位機(jī)發(fā)送指令時(shí),是通過(guò)手機(jī)短信發(fā)送出去的,并且由于垃圾短信的存在,終端難免會(huì)收到一些和控制無(wú)關(guān)的指令,因此當(dāng)解析短信中的控制指令時(shí),必然會(huì)使一些短信無(wú)法解析或者解析出錯(cuò)誤的控制信息。不能解析出控制指令會(huì)使程序出現(xiàn)運(yùn)行錯(cuò)誤,使整個(gè)系統(tǒng)癱瘓;而解析出錯(cuò)誤的控制指令將使電磁閥出現(xiàn)誤動(dòng)作,影響控制效果。因此,為了保證系統(tǒng)的安全性和健壯性,必須設(shè)計(jì)相應(yīng)的協(xié)議。為了區(qū)分控制信息和非控制信息,必須有一個(gè)標(biāo)志來(lái)加以區(qū)分,本文采用一個(gè)字節(jié)表示消息類(lèi)型。每一個(gè)節(jié)點(diǎn)有4個(gè)電磁閥,所以采用一個(gè)字節(jié)可以描述一個(gè)電磁閥的控制信息。為了減少終端的控制和命令解析的難度,將此字節(jié)的剩下4位作為每一個(gè)電磁閥有無(wú)控制信息的標(biāo)志。如果每一個(gè)節(jié)點(diǎn)都單獨(dú)發(fā)送一條控制短信,必然會(huì)加重系統(tǒng)的負(fù)擔(dān),使電能消耗增加,所以本系統(tǒng)將所有節(jié)點(diǎn)的控制組合在一條短信中發(fā)送出去。其消息結(jié)構(gòu)如下所示。
消息類(lèi)型域,其長(zhǎng)度為1個(gè)字節(jié)。應(yīng)用中設(shè)置成表1消息類(lèi)型域,其長(zhǎng)度為1個(gè)字節(jié)。應(yīng)用中設(shè)置成表1中的某值。
控制消息域,其長(zhǎng)度根據(jù)具體農(nóng)田里的終端個(gè)數(shù)決定,一個(gè)終端采用一個(gè)字節(jié),其中每?jī)晌粸橐粋€(gè)電磁閥的控制信息,應(yīng)用中應(yīng)設(shè)置成表2所列的值。
3.1.2 下位機(jī)向上位機(jī)發(fā)送數(shù)據(jù)消息
上位機(jī)向下位機(jī)發(fā)送控制指令后,下位機(jī)將會(huì)向上位機(jī)發(fā)送相應(yīng)的回復(fù)信息,以告訴上位機(jī)下位機(jī)對(duì)所發(fā)送指令的執(zhí)行情況,這種信息包括兩類(lèi):第一類(lèi)是上位機(jī)發(fā)送完控制指令后,下位機(jī)收到指令的一個(gè)確認(rèn)狀態(tài)回復(fù),其消息類(lèi)型值見(jiàn)表1;第二類(lèi)消息是下位機(jī)對(duì)上位機(jī)發(fā)送的控制指令執(zhí)行后的電磁閥信息,電磁閥的狀態(tài)信息格式如下。
其消息類(lèi)型見(jiàn)表1。字節(jié)2以后的字節(jié)表示電池閥的狀態(tài),每一個(gè)字節(jié)表示一個(gè)終端節(jié)點(diǎn),其中低4位為電磁閥狀態(tài)。由于ZigBee協(xié)調(diào)器節(jié)點(diǎn)可能沒(méi)有收到終端采集到的電磁閥狀態(tài)數(shù)據(jù),所以用第4位來(lái)表示低4位是否為電磁閥狀態(tài),1為是,0為不是。
3.1.3 ZigBee網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)
(1)ZigBee協(xié)調(diào)器消息處理
ZigBee協(xié)調(diào)器通過(guò)UART接口從短信模塊中讀取短信的內(nèi)容后,將其保存在ZigBee協(xié)調(diào)器中,等待ZigBee終端醒來(lái)后發(fā)送詢(xún)問(wèn)消息。如果詢(xún)問(wèn)后ZigBee協(xié)調(diào)器保留了控制消息,那么ZigBee協(xié)調(diào)器將保存的控制指令以廣播的形式發(fā)送出去,如果終端詢(xún)問(wèn)過(guò)后ZigBee協(xié)調(diào)器沒(méi)有控制指令,那么ZigBee協(xié)調(diào)器將發(fā)送無(wú)控制消息到ZigBee終端。
ZigBee協(xié)調(diào)器發(fā)送數(shù)據(jù)后等待ZigBee終端回復(fù)確認(rèn)信息,其信息格式如下。
其消息類(lèi)型域取值見(jiàn)表1。協(xié)調(diào)器收到ZigBee終端的回復(fù)消息后,將該節(jié)點(diǎn)號(hào)所對(duì)應(yīng)的字節(jié)的控制消息全部位置0,使下次廣播控制指令后,該終端節(jié)點(diǎn)不會(huì)采取相應(yīng)動(dòng)作。
當(dāng)ZigBee協(xié)調(diào)器發(fā)送完控制消息后,等待接收終端電磁閥的狀態(tài),ZigBee協(xié)調(diào)器收到所有ZigBee終端的電磁閥狀態(tài)信息或者等待時(shí)間超時(shí)后,向上位機(jī)發(fā)送已接收到的電磁閥信息。
ZigBee協(xié)調(diào)器的消息處理流程如圖5所示。
(2)ZigBee終端消息處理
由于ZigBee終端是完全由電池供電,所以ZigBee終端必須定時(shí)睡眠來(lái)節(jié)約能量,使終端工作時(shí)間可以盡可能地長(zhǎng)。因此,ZigBee協(xié)調(diào)器收到控制信息后不可能直接發(fā)送給終端,必須先存儲(chǔ),ZigBee終端為了獲得控制消息,在醒來(lái)后必須向協(xié)調(diào)器發(fā)送詢(xún)問(wèn)消息,使ZigBee協(xié)調(diào)器發(fā)送控制消息。
ZigBee終端收到ZigBee協(xié)調(diào)器發(fā)送來(lái)的控制指令后,向ZigBee協(xié)調(diào)器發(fā)送確認(rèn)消息,使ZigBee協(xié)調(diào)器更改相應(yīng)的節(jié)點(diǎn)狀態(tài),避免重復(fù)發(fā)送控制指令到ZigBee終端,增加ZigBee終端的負(fù)擔(dān)。
ZigBee終端收到控制信息后,獲取本節(jié)點(diǎn)的控制信息,判斷是否有控制信息。如果有控制信息,為了使ZigBee終端的電磁閥中的電機(jī)不出現(xiàn)卡死的現(xiàn)象,ZigBee終端必須判斷當(dāng)前的控制狀態(tài)是否和電磁閥當(dāng)前的狀態(tài)相同。如果相同,則對(duì)電磁閥不采取任何控制動(dòng)作;如果不同,則根據(jù)控制信息對(duì)電磁閥采取相應(yīng)的控制。對(duì)控制信息進(jìn)行判斷后,為了使電磁閥對(duì)控制信息有充分的反應(yīng)時(shí)間,延時(shí)1 s采集電磁閥的控制信息,然后將其傳送到ZigBee協(xié)調(diào)器,其處理流程圖6所示。
回復(fù)到ZigBee協(xié)調(diào)器的電磁閥的狀態(tài)信息的消息格式如下。
其中消息類(lèi)型域的值見(jiàn)表2。電磁閥狀態(tài)域低4位存放電磁閥的狀態(tài),每一位存放一個(gè)電磁閥的狀態(tài)。
3.2 低功耗與同步設(shè)計(jì)
由于ZigBee終端節(jié)點(diǎn)是采用電池供電,所以ZigBee終端節(jié)點(diǎn)必須定時(shí)地休眠和喚醒以節(jié)約能量,使電池的供電時(shí)間更長(zhǎng)。如果本系統(tǒng)的ZigBee網(wǎng)絡(luò)采用網(wǎng)狀結(jié)構(gòu)和樹(shù)狀結(jié)構(gòu),那么路由器節(jié)點(diǎn)必須在非路由器節(jié)點(diǎn)之前醒來(lái),這樣必然會(huì)增加系統(tǒng)的控制難度,最糟糕的情況下可
能會(huì)使整個(gè)系統(tǒng)無(wú)法控制,并且可能使終端節(jié)點(diǎn)不定期的掉線。所以本系統(tǒng)采用星型網(wǎng)絡(luò),終端節(jié)點(diǎn)直接和協(xié)調(diào)器節(jié)點(diǎn)交互信息。
3.2.1 ZigBee節(jié)點(diǎn)同步
ZigBee節(jié)點(diǎn)之間的誤差主要是傳輸延時(shí)和節(jié)點(diǎn)之間的時(shí)鐘誤差。
(1)節(jié)點(diǎn)時(shí)鐘誤差測(cè)量
ZigBee協(xié)調(diào)器節(jié)點(diǎn)先發(fā)送廣播數(shù)據(jù)包,其中帶有協(xié)調(diào)器節(jié)點(diǎn)下一次發(fā)送數(shù)據(jù)包的時(shí)間T1。節(jié)點(diǎn)收到數(shù)據(jù)包后,啟動(dòng)定時(shí)器等待接收Z(yǔ)ig Bee協(xié)調(diào)器下次發(fā)送數(shù)據(jù),當(dāng)ZigBee終端節(jié)點(diǎn)收到下一次同步數(shù)據(jù)后,讀取定時(shí)器的時(shí)間為T(mén)2,所以時(shí)鐘偏移誤差為:a=(T2-T1)/T1。
(2)延時(shí)誤差
ZigBee終端節(jié)點(diǎn)向ZigBee協(xié)調(diào)器節(jié)點(diǎn)發(fā)送同步信息,ZigBee協(xié)調(diào)器收到同步信息后回復(fù)一個(gè)同步信息到ZigBee終端,ZigBee終端收到此回復(fù)信息的時(shí)間為T(mén)3。假設(shè)傳輸?shù)难訒r(shí)一樣,為T(mén)4,則T4=(1+a)×T3/2。
3.2.2 ZigBee終端節(jié)點(diǎn)睡眠
當(dāng)ZigBee協(xié)調(diào)器接收到所有節(jié)點(diǎn)的狀態(tài)回復(fù)后,廣播一個(gè)睡眠消息到ZigBee終端,消息中加入睡眠的時(shí)間T5,ZigBee終端收到此時(shí)間后,開(kāi)始睡眠,其睡眠時(shí)間為T(mén)5-T4-a×(T5-T4)。節(jié)點(diǎn)醒來(lái)后,再延時(shí)1 s發(fā)送詢(xún)問(wèn)消息到協(xié)調(diào)器,獲得控制消息。
結(jié)語(yǔ)
本系統(tǒng)經(jīng)過(guò)現(xiàn)場(chǎng)調(diào)試,能夠?qū)ι衔粰C(jī)發(fā)送的控制指令進(jìn)行準(zhǔn)確的控制。節(jié)點(diǎn)定時(shí)地睡眠和蘇醒,能夠有效地節(jié)約電量,兩節(jié)干電池能夠工作6個(gè)月到兩年,為系統(tǒng)在農(nóng)田這種無(wú)電源供電場(chǎng)合提供保障。采用同步算法和一些輔助措施,使系統(tǒng)能夠在同一時(shí)間蘇醒、同一時(shí)間睡眠,ZigBee終端節(jié)點(diǎn)同一時(shí)間接收到ZigBee協(xié)調(diào)器廣播控制指令數(shù)據(jù)包的概率在90%以上,更加節(jié)約能源。