作者:臺宏達(dá);田國會;宋保業(yè);劉賢鍇
1 ZigBee技術(shù)及ZigBee2006協(xié)議棧簡介
1.1 ZigBee技術(shù)概述
ZigBee技術(shù)是一種短距離、低速率的無線通信技術(shù)。由于其短距離、低速率及可以實時定位等特點,被廣泛應(yīng)用于醫(yī)療、智能家居、智能建筑、工業(yè)自動化、智能空間等領(lǐng)域。
1.2 ZigBee2006協(xié)議棧簡析
ZigBee通信協(xié)議的基礎(chǔ)是IEEE 802.15.4。這是IEEE無線個人區(qū)域網(wǎng)工作組的一項標(biāo)準(zhǔn),被稱作IEEE 802.15.4標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了物理層(PHY)和媒體訪問控制層(MAC)的標(biāo)準(zhǔn)。ZigBee聯(lián)盟則定義了ZigBee協(xié)議的網(wǎng)絡(luò)層(NWK)、應(yīng)用層(APL)和安全服務(wù)規(guī)范。TI/Chipcon公司在IEEE 802.15.4標(biāo)準(zhǔn)和ZigBee聯(lián)盟所推出的ZigBee2006規(guī)范的基礎(chǔ)上,發(fā)布了全功能的ZigBee2006協(xié)議棧,并通過了ZigBee聯(lián)盟的認(rèn)證。該協(xié)議棧全部用C語言編寫,免費提供給用戶,同時向后兼容。該協(xié)議棧在結(jié)構(gòu)上分為應(yīng)用層、網(wǎng)絡(luò)層、安全層、MAC層和物理層,每一層的函數(shù)都嚴(yán)格按照IEEE 802.15.4標(biāo)準(zhǔn)和ZigBee2006規(guī)范所規(guī)定的原語格式編寫。與此同時,在協(xié)議棧內(nèi)部還嵌入了一個操作系統(tǒng),用于對任務(wù)進(jìn)行統(tǒng)一的調(diào)度。對于用戶而言,只需要了解應(yīng)用層函數(shù)并進(jìn)行恰當(dāng)?shù)恼{(diào)用,就可以構(gòu)建功能完善、性能穩(wěn)定的ZigBee無線網(wǎng)絡(luò)。
2 系統(tǒng)方案設(shè)計
ZigBee無線傳感執(zhí)行網(wǎng)絡(luò)必須要有一個協(xié)調(diào)器作為整個網(wǎng)絡(luò)的傳輸與控制中心,另外還要有若干路由器和終端節(jié)點。它有3種最基本的連接方式:星狀連接、網(wǎng)狀連接和串狀連接,如圖1所示。
星狀連接方式比較簡單,只能組建包含較少節(jié)點的無線網(wǎng)絡(luò),各個終端節(jié)點通過協(xié)調(diào)器實現(xiàn)網(wǎng)絡(luò)連接。網(wǎng)狀連接中任意節(jié)點之間都可以傳遞信息。串狀連接中增加了若干路由器,用于對數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。
在ZigBee2006全功能協(xié)議棧中,網(wǎng)絡(luò)連接方式的選擇可通過在nwk_globals.c和nwk_globals.h中對 STACK_PROFILE_ID的設(shè)置來實現(xiàn)。STACK_PRO-FILE_ID有3種量,分別對應(yīng)著星狀連接、網(wǎng)狀連接和樹狀連接網(wǎng)絡(luò)。
系統(tǒng)在nwk_globals.h中加入如下語句,從而在家庭環(huán)境中構(gòu)建星狀結(jié)構(gòu)的ZigBee無線傳感執(zhí)行網(wǎng)絡(luò):
#define STACK_PROFILE_ID GENERIC_STAR
系統(tǒng)的整體結(jié)構(gòu)如圖2所示。
系統(tǒng)中布置有一個協(xié)調(diào)器與PC機(jī)相連,同時布置有若干終端節(jié)點或路由器,使其連接溫度、濕度和光敏電阻等傳感器來監(jiān)測房間環(huán)境。另外,房間中還布置有一些終端節(jié)點與執(zhí)行器連接,用于控制窗簾的開關(guān)、臺燈的亮滅等。協(xié)調(diào)器和終端節(jié)點在房間內(nèi)組成了一個星狀結(jié)構(gòu)的ZigBee無線傳感執(zhí)行網(wǎng)絡(luò)。
系統(tǒng)的整體工作過程是:首先由協(xié)調(diào)器節(jié)點成功創(chuàng)建ZigBee網(wǎng)絡(luò),然后等待終端節(jié)點加入。當(dāng)終端節(jié)點及傳感器上電后,會自動查找空間中存在的 ZigBee網(wǎng)絡(luò),找到后即加入網(wǎng)絡(luò),并把該節(jié)點的物理地址發(fā)送給協(xié)調(diào)器。協(xié)調(diào)器把節(jié)點的地址信息等通過串口發(fā)送給計算機(jī)進(jìn)行保存。當(dāng)計算機(jī)想要獲取某一節(jié)點處的傳感器值時,只需要向串口發(fā)送相應(yīng)節(jié)點的物理地址及測量指令。協(xié)調(diào)器通過串口從計算機(jī)端收到物理地址后,會向與其相對應(yīng)的傳感器節(jié)點發(fā)送數(shù)據(jù),傳達(dá)傳感器測量指令。傳感器節(jié)點收到數(shù)據(jù)后,通過傳感器測量數(shù)據(jù),然后將測量結(jié)果發(fā)送給協(xié)調(diào)器,并在計算機(jī)端進(jìn)行顯示。
3 系統(tǒng)硬件設(shè)計
系統(tǒng)的協(xié)調(diào)器、路由器和終端節(jié)點的核心采用TI公司的CC2430芯片。該芯片是一款真正的系統(tǒng)芯片(SoC)解決方案,其在單個芯片上集成了 ZigBee射頻前端、微控制器和存儲器。它使用1個8位的8051內(nèi)核MCU作為控制器,其性能是工業(yè)標(biāo)準(zhǔn)8051核的8倍,且程序代碼與51系列單片機(jī)完全兼容。CC2430具有64/128 KB的可編程Flash和8 KB的RAM,其大容量的Flash完全能夠滿足ZigBee2006協(xié)議棧程序的要求;另外,還具有模/數(shù)轉(zhuǎn)換器(ADC)、定時器、AES128協(xié)處理器和看門狗定時器等片內(nèi)外設(shè)。
系統(tǒng)的工作原理是:在協(xié)調(diào)器端,CC2430通過RS232異步串行通信與PC機(jī)進(jìn)行通信。協(xié)調(diào)器成功組建網(wǎng)絡(luò)時,會向PC機(jī)發(fā)送組網(wǎng)成功指示。當(dāng)有路由器或終端節(jié)點加入網(wǎng)絡(luò)時,協(xié)調(diào)器通過RS232向PC機(jī)發(fā)送節(jié)點加入指示。在路由器和終端節(jié)點處,上電后CC2430尋找可用信道并加入網(wǎng)絡(luò),然后等待指令。路由器或終端節(jié)點一旦收到協(xié)調(diào)器發(fā)送來的測量指令,將會讀取傳感器的數(shù)據(jù)并傳送。
本系統(tǒng)中溫度和濕度測量使用Sensirion公司的SHT11數(shù)字溫濕度傳感器。該傳感器具有相對濕度和溫度一體測量、超快的響應(yīng)時間等優(yōu)良特性。對臺燈和窗簾的控制是通過繼電器TQ2-3V來實現(xiàn)的。
4 軟件設(shè)計
4.1 系統(tǒng)采集溫濕度的程序設(shè)計
系統(tǒng)溫濕度的采集使用的SHT11數(shù)字式溫濕度傳感器采用兩線制數(shù)字接口,編程十分方便。溫濕度采集程序流程如圖3所示。
4.2 光敏電阻阻值讀取
光敏電阻阻值的讀取用CC2430內(nèi)部的ADC實現(xiàn)。通過設(shè)置CC2430的 ADCCON3寄存器可對A/D轉(zhuǎn)換的一些參數(shù)進(jìn)行設(shè)置。具體如下:使用14位的分辨率,采樣通道設(shè)置為AINO,參考電壓設(shè)置為內(nèi)部1.25 V。通過實驗可以測定,當(dāng)P0.1的電壓值等于1.25 V時,環(huán)境光照強(qiáng)度已經(jīng)足夠弱,可以控制空間中的其他執(zhí)行器做出動作,如開燈、打開窗簾等。
4.3 ZigBee2006協(xié)議棧常用函數(shù)及工作過程
系統(tǒng)軟件基于TI/Chipcon公司免費提供的Zig-Bee2006協(xié)議棧,程序中嵌入了實時操作系統(tǒng),用于對網(wǎng)絡(luò)組建、節(jié)點加入、數(shù)據(jù)收發(fā)等功能運行統(tǒng)一調(diào)度。進(jìn)行程序設(shè)計時,首先在協(xié)議棧應(yīng)用層程序中添加相應(yīng)的任務(wù),然后運行任務(wù)即可處理。ZigBee2006協(xié)議棧的main函數(shù)流程如圖4所示。
OSAL層初始化時,通過osalAddTasks函數(shù)提供任務(wù)列表,向?qū)崟r操作系統(tǒng)中添加用戶所需要的任務(wù)。在該函數(shù)中,TI公司已經(jīng)添加了一些任務(wù),如硬件應(yīng)用層初始化及處理函數(shù)、網(wǎng)絡(luò)層初始化及處理函數(shù)、應(yīng)用層初始化及處理函數(shù)等。在該函數(shù)中添加自己的任務(wù),添加任務(wù)函數(shù)如下: osalTaskAdd(CSCE_Init,CSCE_ProcessEvent,OSAL_TASK_PRIORI-TYLOW);
osalTaskAdd 函數(shù)在OSAL層中的OSAL_Task.C文件中定義,其作用是添加一個任務(wù)到任務(wù)列表。其中,第1個參數(shù)CSCE_Init為用戶任務(wù)的初始化函數(shù)的函數(shù)名,第2個參數(shù)CSCE_ProcessEvent為用戶任務(wù)的處理函數(shù)的函數(shù)名,第3個參數(shù) OSAL_TASK_PRlORITY_LOW為用戶任務(wù)的優(yōu)先級。
任務(wù)初始化函數(shù)CSCE_Init和任務(wù)處理函數(shù)CSCE_ProcessEvent都需要遵循ZigBee2006協(xié)議棧的格式。其中,CSCE_Init函數(shù)和CSCE_ProcessEvent函數(shù)需要在應(yīng)用層頭文件SampleApp.h中進(jìn)行聲明。
CSCE_Init函數(shù)有一個參數(shù)task_id,該參數(shù)為任務(wù)ID,具體值由OSAL進(jìn)行分配。CSCE_ProcessEvent函數(shù)有2 個參數(shù):第 1個參數(shù)與CSCE_Init函數(shù)相同,為任務(wù)ID;第2個參數(shù)events為需要處理的事件,它是一個16位的二進(jìn)制數(shù),每一位代表一個事件。
利用OSAL層進(jìn)行任務(wù)設(shè)計時,必須保留系統(tǒng)任務(wù)事件SYS_EVENT_MSG(0x8000),該事件為強(qiáng)制事件。進(jìn)行任務(wù)處理時,首先要對系統(tǒng)任務(wù)事件是否發(fā)生進(jìn)行判斷,任務(wù)處理流程如圖5所示。由于ZigBee2006協(xié)議棧為全功能協(xié)議棧,不需要對IEEE 802.15.4和ZigBee規(guī)范進(jìn)行全面的了解,只需要在應(yīng)用層進(jìn)行一些設(shè)計和改動,即可實現(xiàn)數(shù)據(jù)的發(fā)送、接收以及網(wǎng)絡(luò)組建功能。在終端節(jié)點的 CSCE_ProcessEvent函數(shù)的上電初始化處理部分,加入物理地址和短地址提取函數(shù),然后調(diào)用發(fā)送函數(shù)將物理地址向協(xié)調(diào)器發(fā)送。協(xié)議棧中的物理地址獲取函數(shù)為NLME_GetExtAddr(),其返回結(jié)果為一個指向節(jié)點的64位IEEE地址的指針。短地址的獲取函數(shù)為 NLME_GetShortAddr(),其返回結(jié)果為一個16位的無符號整型數(shù)據(jù)。
數(shù)據(jù)發(fā)送函數(shù)在ZigBee2006規(guī)范的原語中已經(jīng)規(guī)定了其參數(shù)的順序及意義。具體到TI/Chipcon公司所提供的ZigBee2006協(xié)議棧中,該函數(shù)為AF_DataRequest,其具體形式如下:
在協(xié)調(diào)器端和路由器(或終端節(jié)點)的CSCE_Pro-cessEvent函數(shù)中接收到數(shù)據(jù)部分(即CSCE_MessageMS-GCB函數(shù))中對數(shù)據(jù)進(jìn)行處理,將所接收到的數(shù)據(jù)(即物理地址和短地址)通過串口發(fā)送到計算機(jī)端,進(jìn)行顯示。
ZigBee2006協(xié)議棧中設(shè)計了串口接收處理函數(shù):
該函數(shù)在MT目錄的SPIMgr.C中。實驗中,在協(xié)調(diào)器端調(diào)用該函數(shù),即可從PC機(jī)端接收數(shù)據(jù)并進(jìn)行相應(yīng)的處理。
4.4 傳感器程序與ZigBee2006協(xié)議棧的融合
系統(tǒng)程序中,傳感器端的物理地址及短地址的發(fā)送部分程序,添加在ZigBee2006協(xié)議棧中的CSCE_ProcessEv-ent函數(shù)的上電初始化部分,即ZDO_STATE_CHANGE消息下。協(xié)調(diào)器及傳感器端的數(shù)據(jù)接收都添加在CSCE_ProcessEvent函數(shù)的數(shù)據(jù)接收部分,即 AF_INCOMING_MSG_CMD消息下。系統(tǒng)整體工作過程如圖6所示。
4.5 PC機(jī)端程序
在系統(tǒng)中,節(jié)點上電加入網(wǎng)絡(luò)后,協(xié)調(diào)器會通過RS232向PC機(jī)發(fā)送新加入節(jié)點的IEEE地址。PC機(jī)將從串口接收到的物理地址和短地址進(jìn)行存儲,并改變計算機(jī)中所存儲的房間地圖中的節(jié)點顏色進(jìn)行指示。該程序使用Visual C++6.O編寫。
對用戶而言,當(dāng)想要獲取房間內(nèi)傳感器所測量區(qū)域的溫濕度、光照等情況時,只需要點擊PC機(jī)所顯示的地圖上相應(yīng)的節(jié)點。程序會調(diào)用已存儲在相應(yīng)位置的傳感器節(jié)點的物理地址,通過串口和ZigBee網(wǎng)絡(luò)向該節(jié)點發(fā)送測量傳感器數(shù)據(jù)的指令,并等待接收傳感器傳回的溫濕度,并在PC機(jī)界面進(jìn)行顯示。
5 結(jié)論
實驗表明,節(jié)點的功耗較低,每個節(jié)點使用電池供電可以工作3~6個月,可見應(yīng)用ZigBee構(gòu)建家庭環(huán)境的傳感執(zhí)行網(wǎng)絡(luò)是可行的。
責(zé)任編輯:gt
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423138 -
ZigBee
+關(guān)注
關(guān)注
158文章
2270瀏覽量
242729 -
無線傳感器
+關(guān)注
關(guān)注
15文章
770瀏覽量
98350
發(fā)布評論請先 登錄
相關(guān)推薦
評論