文獻標識碼: A
文章編號: 0258-7998(2012)02-0084-04
溫室控制技術(shù)隨著溫室農(nóng)業(yè)的發(fā)展應(yīng)運而生,,傳統(tǒng)的人工檢測和控制方法費時費力,計算機的采用代表著它發(fā)展的逐步成熟,;有線傳輸面臨著布線復(fù)雜,、維護和更新升級困難,而無線傳感網(wǎng)絡(luò)技術(shù)的誕生給它帶來了一場全新的革命,。
本文提出了一種基于ZigBee無線網(wǎng)絡(luò)技術(shù)的智能溫室大棚監(jiān)控系統(tǒng)設(shè)計方案,,通過對影響植物生長的光照、濕度,、溫度等幾個重要因素進行實時的智能化監(jiān)測和控制,,同時還可以通過手機短信通知農(nóng)戶。文中重點介紹了基于ZStack的應(yīng)用程序開發(fā),,實現(xiàn)了對溫室內(nèi)多種信息的遠程監(jiān)測,、處理和控制。
1 ZigBee無線網(wǎng)絡(luò)技術(shù)
ZigBee是一種新興的短距離,、低速率無線網(wǎng)絡(luò)技術(shù)[1]。它是建立在IEEE 802.15.4[2]標準之上的,,IEEE 規(guī)定了ZigBee的物理層和媒體接入控制層,,網(wǎng)絡(luò)層、應(yīng)用支持子層和高層應(yīng)用規(guī)范由ZigBee聯(lián)盟制定,。ZigBee協(xié)議規(guī)定了三個可用頻段868 MHz,、915 MHz和2.4 GHz,分別提供1個,、10個和16個共計27個信道,。其中2.4 GHz為全球通用頻段,傳輸速率達250 kb/s[3],。
2 系統(tǒng)總體設(shè)計
2.1 系統(tǒng)結(jié)構(gòu)
以自動控制原理為理論基礎(chǔ),,應(yīng)用傳感器與執(zhí)行器件構(gòu)成閉環(huán)控制系統(tǒng)。傳感器節(jié)點配有傳感器感知植物的生長環(huán)境,,控制節(jié)點配有執(zhí)行器件控制執(zhí)行器件改善植物生長環(huán)境,。傳感器節(jié)點與控制節(jié)點相互配合,共同為植物提供適宜的生長環(huán)境,。
本系統(tǒng)由無線傳感器網(wǎng)絡(luò),、網(wǎng)關(guān)和主控中心組成。無線傳感器網(wǎng)絡(luò)是物聯(lián)網(wǎng)的神經(jīng)末梢,負責(zé)感知環(huán)境的變化,,并將數(shù)據(jù)通過網(wǎng)關(guān)傳輸?shù)交ヂ?lián)網(wǎng),。系統(tǒng)結(jié)構(gòu)如圖1所示。
2.2 網(wǎng)關(guān)系統(tǒng)結(jié)構(gòu)
網(wǎng)關(guān)是互聯(lián)網(wǎng)與無線傳感器網(wǎng)絡(luò)之間的數(shù)據(jù)通信橋梁,。本方案提供了三種網(wǎng)關(guān)接入方式:本地訪問,、手機訪問和互聯(lián)網(wǎng)訪問,。網(wǎng)關(guān)系統(tǒng)結(jié)構(gòu)如圖2所示。
2.3 傳感器網(wǎng)絡(luò)結(jié)構(gòu)
ZigBee網(wǎng)絡(luò)存在三種邏輯設(shè)備類型,,即協(xié)調(diào)器,、路由器、終端設(shè)備,,并且在一個ZigBee網(wǎng)絡(luò)中有且只有一個協(xié)調(diào)器,。當(dāng)協(xié)調(diào)器被激活后,它就會建立一個自己的網(wǎng)絡(luò),。本方案采用的是星型網(wǎng)絡(luò),,在星型網(wǎng)絡(luò)結(jié)構(gòu)中有一個唯一的PAN主協(xié)調(diào)器,通過選擇一個PAN標識符確保網(wǎng)絡(luò)的唯一性,。路由或終端都可以加入到這個網(wǎng)絡(luò)中來,。系統(tǒng)的傳感器網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
3 硬件設(shè)計
本系統(tǒng)硬件主要包括三部分,,其中無線傳感器網(wǎng)絡(luò)核心是基于TI公司的CC2430開發(fā)的無線模塊,;網(wǎng)關(guān)是基于ARM微處理器的嵌入式平臺;主控中心是PC機,。
3.1 ZigBee協(xié)調(diào)器節(jié)點硬件設(shè)計
ZigBee協(xié)調(diào)器節(jié)點由無線收發(fā)器CC2430,、射頻天線RF、電源模塊,、晶振模塊,、串口模塊和LED指示燈組成[4],功能模塊如圖4所示,。RF的輸入/輸出是高阻和差動的,,用于RF口最合適的差動負載是(115+180 Ω)。當(dāng)使用不平衡天線時為了優(yōu)化性能,,應(yīng)當(dāng)使用不平衡變壓器,。由于CC2430的工作電壓為3.3 V,所以要用電壓轉(zhuǎn)換模塊把5 V降到3.3 V,。CC2430可以同時接32 MHz和32.768 kHz的兩種頻率的晶振電路,,以滿足不同的要求。串口模塊用于ZigBee協(xié)調(diào)器將無線接收的數(shù)據(jù)信息傳送給網(wǎng)關(guān),,同時接收網(wǎng)關(guān)傳送過來的控制命令,。LED指示燈用于顯示網(wǎng)絡(luò)連接狀態(tài)。
3.2 傳感器節(jié)點硬件設(shè)計
無線傳感器節(jié)點由各種數(shù)據(jù)采集模塊,、CC2430數(shù)據(jù)傳輸模塊,、電源模塊和外部數(shù)據(jù)存儲等功能模塊組成,功能模塊如圖5所示,。數(shù)據(jù)采集模塊負責(zé)采集監(jiān)測區(qū)域的溫度,、濕度,、光照強度等信息并完成數(shù)據(jù)轉(zhuǎn)換;CC2430數(shù)據(jù)傳輸模塊負責(zé)與路由節(jié)點進行無線數(shù)據(jù)交換,、傳輸采集數(shù)據(jù),、接收控制命令。外部數(shù)據(jù)存儲模塊用來保存?zhèn)鞲衅鞴?jié)點采集的數(shù)據(jù),。電源管理模塊采用兩節(jié)5號干電池,。LED指示燈顯示加入或退出網(wǎng)絡(luò)的狀態(tài)。
路由器節(jié)點的主要任務(wù)是將不同區(qū)域的數(shù)據(jù)從傳感器節(jié)點路由到協(xié)調(diào)器節(jié)點,,因此電路比較簡單不再贅述,。
4 軟件設(shè)計
本系統(tǒng)采用的開發(fā)環(huán)境是IAR7,系統(tǒng)軟件是基于TI公司的Z-Stack 2006協(xié)議棧開發(fā)。從系統(tǒng)結(jié)構(gòu)中可以看出本系統(tǒng)軟件設(shè)計包括三大部分:無線傳感器網(wǎng)絡(luò)基于Z-Stack的應(yīng)用程序開發(fā),;網(wǎng)關(guān)基于Qt的應(yīng)用程序開發(fā),;主控中心Web應(yīng)用程序開發(fā)本文著重實現(xiàn)基于Z-Stack的應(yīng)用程序開發(fā)。
4.1 ZigBee協(xié)議棧
ZigBee協(xié)議棧由一組子層構(gòu)成,,每一層向它的上層提供數(shù)據(jù)和管理服務(wù),,分別為物理層(PHY)、媒體訪問控制層(MAC),、網(wǎng)絡(luò)層(NWK)和應(yīng)用層(ADL),,應(yīng)用層又分為:應(yīng)用支持子層(APS)、ZigBee設(shè)備對象(ZDO)和由制造商制定的應(yīng)用對象[2,4-5],。
實際開發(fā)中根據(jù)需要將協(xié)議棧的層次又做了細化。Z-Stack中的硬件抽象層HAL提供各種硬件模塊的驅(qū)動,,基于HAL之上是操作系統(tǒng)抽象層OSAL,。OSAL實現(xiàn)了一個易用的操作系統(tǒng)平臺,以實現(xiàn)多任務(wù)為核心的系統(tǒng)資源管理機制,。Z-Stack 采用操作系統(tǒng)的思想來構(gòu)建,,采用事件輪循機制,當(dāng)各個層初始化完成后,,系統(tǒng)將會進入低功耗模式,,當(dāng)有事件發(fā)生時,系統(tǒng)立刻被喚醒,,并轉(zhuǎn)而進入中斷處理事件,,處理完成后再次進入低功耗模式,減少功耗,。OSAL把優(yōu)先級放在了最重要的地位,。當(dāng)在處理的任務(wù)中有兩個以上事件待處理,處理完一件后,,也要去查詢優(yōu)先級更高的任務(wù),。賦予優(yōu)先級高的任務(wù)最大的權(quán)利,,盡可能保證高優(yōu)先級任務(wù)的每一個事件都能得到最及時的處理。
4.2 無線傳感網(wǎng)軟件平臺搭建
操作系統(tǒng)是通過調(diào)度各項任務(wù)來使整個系統(tǒng)協(xié)調(diào)運作起來的,。對不同類型設(shè)備的處理作為一個任務(wù),,把新建的任務(wù)添加到系統(tǒng)中,操作系統(tǒng)便會把新任務(wù)與協(xié)議棧融合到一起,,使系統(tǒng)具備新的功能,,即完成了無線傳感器網(wǎng)絡(luò)軟件平臺的搭建。
(1) 建立任務(wù):任務(wù)初始化函數(shù)的建立
任務(wù)初始化函數(shù)要做兩件事,,首先是為任務(wù)獲取系統(tǒng)分配的任務(wù)ID,,最后是初始化運行任務(wù)所需的硬件資源及變量。
任務(wù)初始化函數(shù)的格式為:
XXX_Init(unsigned char task_id)
{
XXX_TaskID = task_id;
初始化任務(wù)運行所需的硬件資源及變量,。
}
其中“XXX”表示任務(wù)的名稱,。“XXX_TaskID”是用戶自己定義的變量,用于存儲任務(wù)的ID號,。
(2) 建立任務(wù):任務(wù)事件處理函數(shù)的建立
對模塊的各種外部變化操作系統(tǒng)以事件的方式來處理,,不同的宏定義代表不同事件,比如:KEY_CHANGE為按鍵事件,;ZDO_STATE_CHANGE為網(wǎng)絡(luò)狀態(tài)變化事件,;AF_INCOMING_MSG_CMD表示接收到其他節(jié)點發(fā)送來的數(shù)據(jù),該事件為無線處理的重要事件,。
任務(wù)事件處理函數(shù)原型為:uint16 Sample_ProcessEvent( uint8 task_id, uint16 events );形參task_id 為任務(wù) ID號,,events為事件代號。
(3) 添加任務(wù)
所有的任務(wù)添加都是在應(yīng)用層App/OSAL_SampleApp.c中通過osalTaskAdd()函數(shù)添加一個OSAL任務(wù),,函數(shù)原型為:
void osalTaskAdd(const pTaskInitFn pfninit,
const pTaskEventHandlerFn pfnEventProcessor,
const byte taskPriority)
參數(shù)1:pfnInit(指向任務(wù)初始化函數(shù)的指針),;
參數(shù)2:pfnEventProcessor(指向任務(wù)事件處理函數(shù)的指針);
參數(shù)3:taskPriority(任務(wù)優(yōu)先級),。
4.3 ZigBee網(wǎng)絡(luò)通信設(shè)置與組網(wǎng)
4.3.1 網(wǎng)絡(luò)通信設(shè)置
在Tools/f8wConfig.cfg配置文件中定義了工程相關(guān)的網(wǎng)絡(luò)通信設(shè)置,。其中比較重要的是ZigBee通信相關(guān)的信道通道的設(shè)置和PAN ID的設(shè)置。用戶可以通過更改該文件中的相關(guān)宏定義來控制 ZigBee網(wǎng)絡(luò)的通道和PAN ID,,以此來解決多個ZigBee網(wǎng)絡(luò)的沖突問題,。信道是數(shù)據(jù)在物理層傳輸時使用的通道;PIN ID為ZigBee網(wǎng)絡(luò)的標示符,,用來區(qū)別不同的網(wǎng)絡(luò),。
除此之外,在啟動網(wǎng)絡(luò)前還需要修改模塊的物理地址。在ZigBee網(wǎng)絡(luò)中,,無論是協(xié)調(diào)器還是路由器或終端節(jié)點,,每個模塊都有自己唯一的64位物理地址。物理地址的修改有兩種方式,,一種是通過Zmain/Zmain.c中的zmain_ext_addr()函數(shù)設(shè)置,;另一種是使用ChipconFlashProgrammer軟件,。默認地址0xFF FF FF FF FF FF FF FF為無效的,除此之外都是有效的,,且保證在網(wǎng)絡(luò)中的唯一性即可,。
4.3.2 網(wǎng)絡(luò)組建
(1) 協(xié)調(diào)器格式化網(wǎng)絡(luò)
協(xié)調(diào)器將掃描DEFAULT_CHANLIST指定的通道,最后在其中之一上形成網(wǎng)絡(luò),。如果ZDAPP_CONFIG_PAN_
ID被定義為0xFFFF,則協(xié)調(diào)器將根據(jù)自身的IEEE地址建立一個隨機的PAN ID,。如果ZDAPP_CONFIG_PAN_ID沒有被定義為0xFFFF,則協(xié)調(diào)器建立網(wǎng)絡(luò)的PAN ID將由ZDAPP_CONFIG_PAN_ID指定, 通常這個值介于0~0x3FFF。
(2) 路由器和終端設(shè)備加入網(wǎng)絡(luò)
路由器和終端設(shè)備啟動后,將掃描DEFAULT_CHANLIST指定的頻道,。如果ZDAPP_CONFIG_PAN_ID沒有被定義為0xFFFF,則路由器或終端將強制加入ZDAPP_CONFIG_PAN_ID定義的網(wǎng)絡(luò),。反之隨機加入網(wǎng)絡(luò)。
4.4 數(shù)據(jù)傳輸
本系統(tǒng)中涉及的數(shù)據(jù)傳輸方式有兩種:無線收發(fā)和串口收發(fā),。其中節(jié)點向協(xié)調(diào)器發(fā)送采集信息,、協(xié)調(diào)器向控制節(jié)點發(fā)送控制信息是通過無線收發(fā)實現(xiàn)的;協(xié)調(diào)器將采集信息傳送給網(wǎng)關(guān),、網(wǎng)關(guān)向協(xié)調(diào)器發(fā)送控制命令是通過串口收發(fā)實現(xiàn)的,。
4.4.1 無線數(shù)據(jù)收發(fā)
(1) 無線發(fā)送
系統(tǒng)中采用短地址方式發(fā)送數(shù)據(jù),數(shù)據(jù)以幀格式傳輸,。在發(fā)送前按照協(xié)議規(guī)定的幀形式構(gòu)建數(shù)據(jù)幀,,然后調(diào)用無線發(fā)送函數(shù)。函數(shù)原型為:uint8 SendData(uint8 *buf, uint16 addr, uint8 Leng);buf為發(fā)送數(shù)據(jù)指針,;addr為目的地址,;Leng發(fā)送數(shù)據(jù)長度。
(2) 無線接收
對于無線接收并沒有像發(fā)送一樣單獨地處理函數(shù),,而是在任務(wù)處理函數(shù)中通過處理無線接收數(shù)據(jù)事件來完成處理的,,具體函數(shù)如下:
uint16 SampleApp_ProcessEvent(uint8 task_id, uint16 events)
{
switch ( MSGpkt->hdr.event )
{
case AF_INCOMING_MSG_CMD: SampleApp_Message
(MSGpkt);
break;
}
}
其中AF_INCOMING_MSG_CMD為無線接收事件宏定義,SampleApp_MessageMSGCB()函數(shù)為具體接收事件的處理函數(shù),。
4.4.2 串口數(shù)據(jù)收發(fā)
系統(tǒng)中所用的串口為無線芯片CC2430自帶資源,,通過自定義串口收發(fā)函數(shù)來使用該資源,,從而實現(xiàn)網(wǎng)關(guān)與協(xié)調(diào)器節(jié)點數(shù)據(jù)傳輸,。
串口發(fā)送函數(shù)原型為:
void UartTX_Send_String(char *Data,int len);
串口接收函數(shù)原型為:
char UartRX_Receive_Char (void);
伴隨著物聯(lián)網(wǎng)概念的普及,基于ZigBee的無線傳感器網(wǎng)絡(luò)技術(shù)得到越來越廣泛的應(yīng)用,。本文將ZigBee網(wǎng)絡(luò)技術(shù)應(yīng)用于溫室監(jiān)控系統(tǒng)中,,介紹了系統(tǒng)總體架構(gòu)和無線傳感器網(wǎng)絡(luò)部分的軟、硬件設(shè)計及實現(xiàn)過程,,重點介紹了無線網(wǎng)絡(luò)的構(gòu)建與數(shù)據(jù)傳輸,。與網(wǎng)關(guān)及上層應(yīng)用程序整合后該系統(tǒng)能實時、準確地測量并顯示溫室內(nèi)各點的數(shù)據(jù)信息,,使管理者能夠及時了解農(nóng)作物的生長環(huán)境,,從而及時,、有效地采取措施,在保證作物健康成長的前提下提高產(chǎn)量,、增加收益,。如果更換采集節(jié)點的傳感器,則該監(jiān)控系統(tǒng)可以應(yīng)用于不同的場合具有廣闊的應(yīng)用前景,。
參考文獻
[1] 李文仲,段朝玉.ZigBee無線網(wǎng)絡(luò)技術(shù)入門與實戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,,2007.
[2] IEEE 802.15.4-2003Std: Wireless Medium Access Control (MAC) and Physical Layer(PHY) Specifications for Low-Rate Wireless Personal Area Networks(LR- WPANs)[2010-08]. http://www.ieee802.org/.
[3] 任秀麗,于海斌. ZigBee無線通信協(xié)議實現(xiàn)技術(shù)的研究[J]. 計算機工程與應(yīng)用,2007,43(6):143-145.
[4] 蔡文晶, 秦會斌. 基于ZigBee精簡協(xié)議的無線數(shù)據(jù)采集系統(tǒng)[J].機電工程, 2011,28(2):224-226.
[5] Suggestions for the improvement of the IEEE 802.15.4 standard. [2010-08]. http://www.ieee.org.