基于ZigBee協(xié)議棧的無線傳感器網(wǎng)絡(luò)的設(shè)計
2 系統(tǒng)軟件設(shè)計
TI公司推出的ZigBee協(xié)議棧是基于優(yōu)先級的輪轉(zhuǎn)查詢式操作系統(tǒng),它是由稱為層的模塊組成,每一層為其上一層提供特定的服務(wù)。Zig Bee協(xié)議棧為各個層均分配的不同的任務(wù)編號,每一個任務(wù)中又包含若干個事件。對于開發(fā)者來說,一般只需關(guān)注應(yīng)用層函數(shù)的設(shè)計即可。當(dāng)然,若果硬件電路不同,則其硬件抽象層函數(shù)也是不同的。文中所采用的硬件電路為無線龍公司生產(chǎn)的CC2430無線通信模塊,共包括4個傳感器節(jié)點和一個協(xié)調(diào)器。每個傳感器節(jié)點為一個CC2430基本模塊和一個電池板;協(xié)調(diào)器模塊為一個CC2430基本模塊和一個擴(kuò)展板,擴(kuò)展板上帶有RS232串口,可用于和PC機進(jìn)行通信。
2.1 協(xié)調(diào)器啟動及建立網(wǎng)絡(luò)
無線傳感網(wǎng)絡(luò)的建立是由網(wǎng)絡(luò)協(xié)調(diào)器來完成的。協(xié)調(diào)器節(jié)點啟動之后,首先完成系統(tǒng)的初始化,然后進(jìn)入操作系統(tǒng)。在系統(tǒng)的初始化中,包括初始化系統(tǒng)時鐘、檢測芯片電壓、中斷系統(tǒng)、flash存儲器等,其中比較重要的是初始化端口描述符。兩個物理無線收發(fā)模塊的通信是通過兩個設(shè)備中編號相同的端點來實現(xiàn)的,這要求協(xié)調(diào)器所初始化的端點屬性要與在傳感器節(jié)點中所初始化的端點屬性相匹配。
進(jìn)入操作系統(tǒng)以后,首先進(jìn)入的是應(yīng)用層任務(wù)函數(shù),因為在應(yīng)用中設(shè)置了進(jìn)入事件。通過按鍵S1來設(shè)置其為協(xié)調(diào)器,并開始建立網(wǎng)絡(luò)。將設(shè)備設(shè)置為協(xié)調(diào)器之后,通過zb_StartRequest()函數(shù)調(diào)用ZDO層初始化設(shè)備函數(shù)ZDOInitDevice()。在該函數(shù)中,通過ZDO層中的網(wǎng)絡(luò)初始化函數(shù)ZDApp_NetworhInit()設(shè)置網(wǎng)絡(luò)初始化事件,送給啟動設(shè)備函數(shù)ZDO_StartDevice()處理。在該函數(shù)中,調(diào)用了網(wǎng)絡(luò)層的網(wǎng)絡(luò)形成請求函數(shù)NLME_NetworkFormationRequest()來形成網(wǎng)絡(luò)。由于ZigBee協(xié)議棧是半開源的,因此看不到該函數(shù)的內(nèi)部程序。當(dāng)ZDO層收到網(wǎng)絡(luò)形成確認(rèn)信息之后,則設(shè)置網(wǎng)絡(luò)啟動事件,將設(shè)備的狀態(tài)改為啟動狀態(tài)。協(xié)調(diào)器建立網(wǎng)絡(luò)的過程如圖2所示。本文引用地址:http://www.ex-cimer.com/article/154688.htm
2.2 傳感器節(jié)點啟動及加入網(wǎng)絡(luò)
對于傳感器節(jié)點來說,啟動后首先要完成的也是設(shè)備的初始化。在本實驗中,傳感器節(jié)點向協(xié)調(diào)器發(fā)送本身的溫度信息,所以在傳感器節(jié)點中所初始化的端口的屬性應(yīng)為輸出,而協(xié)調(diào)器中所定義的端口的屬性應(yīng)為輸入。當(dāng)初始化之后,進(jìn)入操作系統(tǒng)執(zhí)行應(yīng)用層任務(wù)中的進(jìn)入事件。這里直接將設(shè)備設(shè)置為傳感器節(jié)點。
評論