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