基于ZigBee協(xié)議棧的無線傳感器網(wǎng)絡(luò)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:首先介紹了無線傳感器網(wǎng)絡(luò)的基本拓?fù)浣Y(jié)構(gòu)與傳感器節(jié)點(diǎn)的結(jié)構(gòu),詳細(xì)說明了基于ZigBee協(xié)議棧的無線傳感網(wǎng)絡(luò)的建立過程,包括協(xié)調(diào)器啟動(dòng)及建立網(wǎng)絡(luò)、傳感器節(jié)點(diǎn)啟動(dòng)及加入網(wǎng)絡(luò)、傳感器節(jié)點(diǎn)與協(xié)調(diào)器之間建立綁定以及傳感器節(jié)點(diǎn)向協(xié)調(diào)器發(fā)送數(shù)據(jù)的過程。設(shè)計(jì)了基于ZigBee協(xié)議棧的無線傳感網(wǎng)絡(luò)系統(tǒng)。以采集溫度信息為例,協(xié)調(diào)器能夠接收到傳感器節(jié)點(diǎn)發(fā)來的數(shù)據(jù),并能通過RS232串口,將收到的數(shù)據(jù)發(fā)送給PC機(jī)進(jìn)行顯示。實(shí)驗(yàn)顯示在距離80m遠(yuǎn)處,系統(tǒng)仍能保持良好的通信質(zhì)量。
關(guān)鍵詞:ZigBee協(xié)議棧;無線傳感器網(wǎng)絡(luò);協(xié)調(diào)器;傳感器節(jié)點(diǎn)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)是由部署在監(jiān)測(cè)區(qū)域內(nèi)大量廉價(jià)微型傳感器節(jié)點(diǎn)組成,通過無線通信方式形成多跳、自組織網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)作地感知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域中感知對(duì)象的信息,并發(fā)送給觀察者。
目前能夠用于短距離無線傳感網(wǎng)絡(luò)的通信技術(shù)主要有5種:Wi-Fi技術(shù)、超寬帶通信(Ultra Wideband,UWB)技術(shù)、近場(chǎng)通信(Near Field Communication,NFC)技術(shù)、藍(lán)牙以及ZigBee技術(shù)。其中,ZigBee是基于IEEE802.15.4的一種新興短距離無線通信技術(shù),其特點(diǎn)是低功耗、低速率、低復(fù)雜度、低成本等。這些特點(diǎn)決定了ZigBee技術(shù)非常適合應(yīng)用于無線傳感網(wǎng)絡(luò)中,因此ZigBee技術(shù)被認(rèn)為是最有可能應(yīng)用于工業(yè)監(jiān)控、傳感器網(wǎng)絡(luò)、家庭監(jiān)控、安全監(jiān)控等領(lǐng)域的無線技術(shù)。在ZigBee協(xié)議的制定中,IEEE802.15.4無線標(biāo)準(zhǔn)定義了物理層(Physical Layer,PHY)和介質(zhì)訪問控制層(Medium Access Control Sub-Layer,MAC),而ZigBee協(xié)議棧的網(wǎng)絡(luò)層和應(yīng)用層是由ZigBee聯(lián)盟制定的。
支持ZigBee協(xié)議的無線通信芯片主要有TI公司推出的CC2420、CC2430、CC2530以及Freescale半導(dǎo)體公司推出的MC13191、MC13192及MC13 193等芯片。CC2430是世界上首個(gè)單芯片ZigBee解決方案,除了保持CC2420所包括的優(yōu)良射頻性能之外,其內(nèi)部還集成了一個(gè)增強(qiáng)型8051內(nèi)核,這使得CC2430成為市面上最具有競(jìng)爭(zhēng)力的ZigBee無線收發(fā)芯片。
文中設(shè)計(jì)了基于ZigBee協(xié)議棧的無線傳感網(wǎng)絡(luò),該系統(tǒng)包括一個(gè)協(xié)調(diào)器和四個(gè)終端傳感節(jié)點(diǎn)。以采集溫度信息為例,實(shí)現(xiàn)了無線通信功能。協(xié)調(diào)器節(jié)點(diǎn)通過RS232串口,將收到的數(shù)據(jù)發(fā)送給PC機(jī)進(jìn)行處理及顯示。
1 無線傳感網(wǎng)絡(luò)的結(jié)構(gòu)
1.1 網(wǎng)絡(luò)體系結(jié)構(gòu)
無線傳感網(wǎng)路中的基本單元是傳感器節(jié)點(diǎn),根據(jù)其在網(wǎng)絡(luò)中的所承擔(dān)的任務(wù)不同,傳感器節(jié)點(diǎn)可以分為3類:協(xié)調(diào)器、路由器和傳感器節(jié)點(diǎn)。在網(wǎng)絡(luò)中,協(xié)調(diào)器負(fù)責(zé)建立網(wǎng)絡(luò),允許路由器和傳感器節(jié)點(diǎn)與其綁定,并接收路由器和傳感器節(jié)點(diǎn)發(fā)送來的數(shù)據(jù)信息,以及傳送給PC機(jī)進(jìn)行處理、存儲(chǔ)等;傳感器節(jié)點(diǎn)負(fù)責(zé)感知被測(cè)對(duì)象的物理信息,并將其無線發(fā)射給協(xié)調(diào)器;但如果傳感器節(jié)點(diǎn)距離協(xié)調(diào)器太遠(yuǎn),則需要
路由器在中間進(jìn)行中繼。傳感網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)一般有3種:星型網(wǎng)絡(luò)、樹型網(wǎng)絡(luò)和網(wǎng)狀網(wǎng)絡(luò)。
星型拓?fù)浣Y(jié)構(gòu)具有組網(wǎng)簡(jiǎn)單、低成本和低功耗等優(yōu)點(diǎn),但網(wǎng)絡(luò)覆蓋范圍有限;樹型網(wǎng)絡(luò)可以擴(kuò)大網(wǎng)絡(luò)覆蓋范圍,傳感器節(jié)點(diǎn)傳感器所采集的數(shù)據(jù)可以通過路由器中繼的方式到達(dá)協(xié)調(diào)器;網(wǎng)狀網(wǎng)絡(luò)具有高可靠性和覆蓋范圍大等優(yōu)點(diǎn),但功耗大、管理復(fù)雜。在實(shí)際應(yīng)用,要根據(jù)實(shí)際需求來選擇網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
1.2 傳感器節(jié)點(diǎn)的結(jié)構(gòu)
無線傳感網(wǎng)絡(luò)中的節(jié)點(diǎn)按照其所具備的功能來分,可分為全功能設(shè)備(Full Funclion Device,F(xiàn)FD)和精簡(jiǎn)功能設(shè)備(Reduced Function Device,RFD)。網(wǎng)絡(luò)協(xié)調(diào)器和路由器必須由FFD來承擔(dān),傳感器節(jié)點(diǎn)一般由RFD來實(shí)現(xiàn)。但不管是FFD還是RFD,其硬件的基本結(jié)構(gòu)基本上相同,一般包括傳感器模塊、微處理器模塊、無線通信模塊和能量供應(yīng)模塊4個(gè)基本部分,如圖1所示。傳感器模塊用于感知被測(cè)對(duì)象的物理信息,并將其轉(zhuǎn)換為電信號(hào);微處理器模塊負(fù)責(zé)處理及存儲(chǔ)數(shù)據(jù);無線通信模塊負(fù)責(zé)發(fā)射與接收無線電信息;能量供應(yīng)模塊為整個(gè)系統(tǒng)提供能量。此外,傳感器節(jié)點(diǎn)還可能包括一些輔助單位,如定位模塊、自供電模塊等。與傳感器節(jié)點(diǎn)和路由器相比,協(xié)調(diào)器一般需要和PC機(jī)相連,所以其帶有RS232接口或USB接口等。
2 系統(tǒng)軟件設(shè)計(jì)
TI公司推出的ZigBee協(xié)議棧是基于優(yōu)先級(jí)的輪轉(zhuǎn)查詢式操作系統(tǒng),它是由稱為層的模塊組成,每一層為其上一層提供特定的服務(wù)。Zig Bee協(xié)議棧為各個(gè)層均分配的不同的任務(wù)編號(hào),每一個(gè)任務(wù)中又包含若干個(gè)事件。對(duì)于開發(fā)者來說,一般只需關(guān)注應(yīng)用層函數(shù)的設(shè)計(jì)即可。當(dāng)然,若果硬件電路不同,則其硬件抽象層函數(shù)也是不同的。文中所采用的硬件電路為無線龍公司生產(chǎn)的CC2430無線通信模塊,共包括4個(gè)傳感器節(jié)點(diǎn)和一個(gè)協(xié)調(diào)器。每個(gè)傳感器節(jié)點(diǎn)為一個(gè)CC2430基本模塊和一個(gè)電池板;協(xié)調(diào)器模塊為一個(gè)CC2430基本模塊和一個(gè)擴(kuò)展板,擴(kuò)展板上帶有RS232串口,可用于和PC機(jī)進(jìn)行通信。
2.1 協(xié)調(diào)器啟動(dòng)及建立網(wǎng)絡(luò)
無線傳感網(wǎng)絡(luò)的建立是由網(wǎng)絡(luò)協(xié)調(diào)器來完成的。協(xié)調(diào)器節(jié)點(diǎn)啟動(dòng)之后,首先完成系統(tǒng)的初始化,然后進(jìn)入操作系統(tǒng)。在系統(tǒng)的初始化中,包括初始化系統(tǒng)時(shí)鐘、檢測(cè)芯片電壓、中斷系統(tǒng)、flash存儲(chǔ)器等,其中比較重要的是初始化端口描述符。兩個(gè)物理無線收發(fā)模塊的通信是通過兩個(gè)設(shè)備中編號(hào)相同的端點(diǎn)來實(shí)現(xiàn)的,這要求協(xié)調(diào)器所初始化的端點(diǎn)屬性要與在傳感器節(jié)點(diǎn)中所初始化的端點(diǎn)屬性相匹配。
進(jìn)入操作系統(tǒng)以后,首先進(jìn)入的是應(yīng)用層任務(wù)函數(shù),因?yàn)樵趹?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ò)初始化事件,送給啟動(dòng)設(shè)備函數(shù)ZDO_StartDevice()處理。在該函數(shù)中,調(diào)用了網(wǎng)絡(luò)層的網(wǎng)絡(luò)形成請(qǐng)求函數(shù)NLME_NetworkFormationRequest()來形成網(wǎng)絡(luò)。由于ZigBee協(xié)議棧是半開源的,因此看不到該函數(shù)的內(nèi)部程序。當(dāng)ZDO層收到網(wǎng)絡(luò)形成確認(rèn)信息之后,則設(shè)置網(wǎng)絡(luò)啟動(dòng)事件,將設(shè)備的狀態(tài)改為啟動(dòng)狀態(tài)。協(xié)調(diào)器建立網(wǎng)絡(luò)的過程如圖2所示。
2.2 傳感器節(jié)點(diǎn)啟動(dòng)及加入網(wǎng)絡(luò)
對(duì)于傳感器節(jié)點(diǎn)來說,啟動(dòng)后首先要完成的也是設(shè)備的初始化。在本實(shí)驗(yàn)中,傳感器節(jié)點(diǎn)向協(xié)調(diào)器發(fā)送本身的溫度信息,所以在傳感器節(jié)點(diǎn)中所初始化的端口的屬性應(yīng)為輸出,而協(xié)調(diào)器中所定義的端口的屬性應(yīng)為輸入。當(dāng)初始化之后,進(jìn)入操作系統(tǒng)執(zhí)行應(yīng)用層任務(wù)中的進(jìn)入事件。這里直接將設(shè)備設(shè)置為傳感器節(jié)點(diǎn)。
傳感器節(jié)點(diǎn)啟動(dòng)后,開始初始化網(wǎng)絡(luò)。在ZDO層調(diào)用網(wǎng)絡(luò)層的網(wǎng)絡(luò)發(fā)現(xiàn)函數(shù)NLME_NetworkDiscoveryRequest(),嘗試發(fā)現(xiàn)是否已經(jīng)存在的網(wǎng)絡(luò)可以加入。當(dāng)發(fā)現(xiàn)協(xié)調(diào)器所建立的網(wǎng)絡(luò)時(shí),傳感器節(jié)點(diǎn)的ZDO層會(huì)收到網(wǎng)絡(luò)發(fā)現(xiàn)確認(rèn)信息。這時(shí),傳感器節(jié)點(diǎn)通過調(diào)用網(wǎng)絡(luò)層的網(wǎng)絡(luò)加入請(qǐng)求函數(shù)NLME_JionRequest(),向協(xié)調(diào)器發(fā)送加入網(wǎng)絡(luò)請(qǐng)求。如果協(xié)調(diào)器允許其他節(jié)點(diǎn)加入網(wǎng)絡(luò),則該傳感器節(jié)點(diǎn)會(huì)接收到協(xié)調(diào)器發(fā)送來的加入確認(rèn)信息。這里的網(wǎng)絡(luò)發(fā)現(xiàn)函數(shù)NLME_NetworkDiscoveryRequest()和網(wǎng)絡(luò)加入請(qǐng)求函數(shù)NLME_JionRequest(),與協(xié)調(diào)器中所調(diào)用的網(wǎng)絡(luò)形成函數(shù)NLME NetworkFormationReouest()一樣,均為ZigBee協(xié)議棧所封裝起來的函數(shù),只能由開發(fā)人員編程時(shí)調(diào)用,不能看到其內(nèi)部程序。傳感器節(jié)點(diǎn)加入網(wǎng)絡(luò)的流程如圖3所示。
2.3 傳感器節(jié)點(diǎn)與協(xié)調(diào)器的綁定
為了讓傳感器節(jié)點(diǎn)與協(xié)調(diào)器能相互傳送數(shù)據(jù),兩者之間必須建立綁定關(guān)系。綁定是兩個(gè)(或多個(gè))應(yīng)用設(shè)備之間信息傳輸?shù)目刂茩C(jī)制,在ZigBee2006及以后的協(xié)議棧中,所有的設(shè)備都必須執(zhí)行綁定機(jī)制。
協(xié)調(diào)器通過執(zhí)行zb_AllowBind()函數(shù),開啟允許綁定功能。在該函數(shù)中,可以設(shè)置允許綁定的時(shí)間,即在某一段時(shí)間內(nèi),協(xié)調(diào)器接收其他設(shè)備發(fā)來的綁定請(qǐng)求,超過這段時(shí)間,則關(guān)閉該功能。傳感器節(jié)點(diǎn)通過執(zhí)行綁定設(shè)備函數(shù)zb_BindDevice(),向協(xié)調(diào)器發(fā)送綁定請(qǐng)求。協(xié)調(diào)器接收到傳感器節(jié)點(diǎn)發(fā)送來的綁定請(qǐng)求,并進(jìn)行解析,綁定請(qǐng)求信息中包含了傳感器節(jié)點(diǎn)中的端點(diǎn)信息,然后協(xié)調(diào)器在自身所注冊(cè)過的端點(diǎn)中尋找與之相匹配的端點(diǎn)。找到之后,則處理綁定請(qǐng)求信息,并向傳感器節(jié)點(diǎn)發(fā)送綁定響應(yīng)信息。傳感器節(jié)點(diǎn)接收到綁定響應(yīng)信息之后,通過調(diào)用應(yīng)用支持子層的綁定請(qǐng)求函數(shù)APSME_BindRequest()來建立綁定表,并將向自己的應(yīng)用層發(fā)送綁定確認(rèn)信息。傳感器節(jié)點(diǎn)與協(xié)調(diào)器建立綁定的流程如圖4所示。
2.4 傳感器節(jié)點(diǎn)向協(xié)調(diào)器傳送數(shù)據(jù)
當(dāng)傳感器節(jié)點(diǎn)向自己的應(yīng)用層發(fā)送綁定確認(rèn)信息之后,就調(diào)用發(fā)送報(bào)告函數(shù)myApp_StartReporting()向協(xié)調(diào)器發(fā)送數(shù)據(jù)信息。CC2430內(nèi)部有一溫度傳感器,可測(cè)量的溫度范圍是-20~80℃,雖然所采集的結(jié)果與實(shí)際溫度不太相符合(比實(shí)際值偏高),但對(duì)于構(gòu)建無線傳感器網(wǎng)絡(luò),并無太大影響。所以在本實(shí)驗(yàn)中,傳感器節(jié)點(diǎn)所發(fā)送的就是其自身內(nèi)部的溫度信息。由傳感器所得來的溫度信息為模擬信號(hào),需要經(jīng)過A/D轉(zhuǎn)換為數(shù)字信號(hào)。CC2430內(nèi)部集成了多路A/D轉(zhuǎn)換,這里不再詳述。
當(dāng)協(xié)調(diào)器接收到溫度信息之后,對(duì)其進(jìn)行解析,得到溫度信息。通過調(diào)用串口通信程序,將數(shù)據(jù)發(fā)送給PC機(jī)進(jìn)行顯示。串口通信程序的設(shè)計(jì),這里也不再詳述。
3 實(shí)驗(yàn)
當(dāng)建立綁定關(guān)系之后,傳感器節(jié)點(diǎn)就可以向協(xié)調(diào)器發(fā)送數(shù)據(jù)。將協(xié)調(diào)器程序下載到帶有擴(kuò)展板的CC2430模塊中,然后將傳感器節(jié)點(diǎn)程序分別下載到4個(gè)帶有電池板的CC2430模塊中。協(xié)調(diào)器由3節(jié)5號(hào)電池供電,并通過RS232串口與PC機(jī)相連。在PC機(jī)上打開串口調(diào)試工具,并設(shè)置好端口號(hào)、傳輸速率及校驗(yàn)位等。端口號(hào)的設(shè)置可通過PC機(jī)查看,而傳輸速率及校驗(yàn)位等與串口通信程序的設(shè)計(jì)有關(guān),這里選擇波特率為384 000,暫時(shí)沒有設(shè)置校驗(yàn)位。每個(gè)傳感器節(jié)點(diǎn)均有2節(jié)7號(hào)電池供電。
首先打開帶有擴(kuò)展板的CC2430電源,按S1鍵將其設(shè)置成為協(xié)調(diào)器。然后再次按下S1鍵,即協(xié)調(diào)器開啟允許綁定功能。此時(shí)依次打開4個(gè)傳感器節(jié)點(diǎn),它們會(huì)相繼加入網(wǎng)絡(luò)。在實(shí)驗(yàn)中,通過LED的亮滅來觀察網(wǎng)絡(luò)啟動(dòng)及節(jié)點(diǎn)加入的過程。
網(wǎng)絡(luò)加入完畢之后,在PC機(jī)的串口調(diào)試界面中,能看到協(xié)調(diào)器所接收到得溫度信息,并且協(xié)調(diào)器為4個(gè)傳感器節(jié)點(diǎn)分別分配了16位的網(wǎng)絡(luò)地址,如圖5所示。
4 結(jié)論
本實(shí)驗(yàn)實(shí)現(xiàn)了基于ZigBee協(xié)議棧的無線傳感器網(wǎng)絡(luò)的開發(fā)。如果在PC機(jī)上采用LabVIEW軟件對(duì)串口數(shù)據(jù)進(jìn)行處理,則可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)與報(bào)警,以及數(shù)據(jù)的存儲(chǔ)與回調(diào)等功能。