ZigBee的遠(yuǎn)程低功耗灌溉控制系統(tǒng)設(shè)計(jì)
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為不是。
評(píng)論