1 ZigBee技術及ZigBee2006協議棧簡介 1.1 ZigBee技術概述 ZigBee技術是一種短距離、低速率的無線通信技術。由于其短距離、低速率及可以實時定位等特點,被廣泛應用于醫療、智能家居、智能建筑、工業自動化、智能空間等領域。 1.2 ZigBee2006協議棧簡析 ZigBee通信協議的基礎是IEEE 802.15.4。這是IEEE無線個人區域網工作組的一項標準,被稱作IEEE 802.15.4標準。該標準定義了物理層(PHY)和媒體訪問控制層(MAC)的標準。ZigBee聯盟則定義了ZigBee協議的網絡層(NWK)、應用層(APL)和安全服務規范。TI/Chipcon公司在IEEE 802.15.4標準和ZigBee聯盟所推出的ZigBee2006規范的基礎上,發布了全功能的ZigBee2006協議棧,并通過了ZigBee聯盟的認證。該協議棧全部用C語言編寫,免費提供給用戶,同時向后兼容。該協議棧在結構上分為應用層、網絡層、安全層、MAC層和物理層,每一層的函數都嚴格按照IEEE 802.15.4標準和ZigBee2006規范所規定的原語格式編寫。與此同時,在協議棧內部還嵌入了一個操作系統,用于對任務進行統一的調度。對于用戶而言,只需要了解應用層函數并進行恰當的調用,就可以構建功能完善、性能穩定的ZigBee無線網絡。 2 系統方案設計 ZigBee無線傳感執行網絡必須要有一個協調器作為整個網絡的傳輸與控制中心,另外還要有若干路由器和終端節點。它有3種最基本的連接方式:星狀連接、網狀連接和串狀連接,如圖1所示。 ![]() 星狀連接方式比較簡單,只能組建包含較少節點的無線網絡,各個終端節點通過協調器實現網絡連接。網狀連接中任意節點之間都可以傳遞信息。串狀連接中增加了若干路由器,用于對數據進行轉發。 在ZigBee2006全功能協議棧中,網絡連接方式的選擇可通過在nwk_globals.c和nwk_globals.h中對 STACK_PROFILE_ID的設置來實現。STACK_PRO-FILE_ID有3種量,分別對應著星狀連接、網狀連接和樹狀連接網絡。 系統在nwk_globals.h中加入如下語句,從而在家庭環境中構建星狀結構的ZigBee無線傳感執行網絡: #define STACK_PROFILE_ID GENERIC_STAR 系統的整體結構如圖2所示。 ![]() 系統中布置有一個協調器與PC機相連,同時布置有若干終端節點或路由器,使其連接溫度、濕度和光敏電阻等傳感器來監測房間環境。另外,房間中還布置有一些終端節點與執行器連接,用于控制窗簾的開關、臺燈的亮滅等。協調器和終端節點在房間內組成了一個星狀結構的ZigBee無線傳感執行網絡。 系統的整體工作過程是:首先由協調器節點成功創建ZigBee網絡,然后等待終端節點加入。當終端節點及傳感器上電后,會自動查找空間中存在的 ZigBee網絡,找到后即加入網絡,并把該節點的物理地址發送給協調器。協調器把節點的地址信息等通過串口發送給計算機進行保存。當計算機想要獲取某一節點處的傳感器值時,只需要向串口發送相應節點的物理地址及測量指令。協調器通過串口從計算機端收到物理地址后,會向與其相對應的傳感器節點發送數據,傳達傳感器測量指令。傳感器節點收到數據后,通過傳感器測量數據,然后將測量結果發送給協調器,并在計算機端進行顯示。 3 系統硬件設計 系統的協調器、路由器和終端節點的核心采用TI公司的CC2430芯片。該芯片是一款真正的系統芯片(SoC)解決方案,其在單個芯片上集成了 ZigBee射頻前端、微控制器和存儲器。它使用1個8位的8051內核MCU作為控制器,其性能是工業標準8051核的8倍,且程序代碼與51系列單片機完全兼容。CC2430具有64/128 KB的可編程Flash和8 KB的RAM,其大容量的Flash完全能夠滿足ZigBee2006協議棧程序的要求;另外,還具有模/數轉換器(ADC)、定時器、AES128協處理器和看門狗定時器等片內外設。 系統的工作原理是:在協調器端,CC2430通過RS232異步串行通信與PC機進行通信。協調器成功組建網絡時,會向PC機發送組網成功指示。當有路由器或終端節點加入網絡時,協調器通過RS232向PC機發送節點加入指示。在路由器和終端節點處,上電后CC2430尋找可用信道并加入網絡,然后等待指令。路由器或終端節點一旦收到協調器發送來的測量指令,將會讀取傳感器的數據并傳送。 本系統中溫度和濕度測量使用Sensirion公司的SHT11數字溫濕度傳感器。該傳感器具有相對濕度和溫度一體測量、超快的響應時間等優良特性。對臺燈和窗簾的控制是通過繼電器TQ2-3V來實現的。 4 軟件設計 4.1 系統采集溫濕度的程序設計 系統溫濕度的采集使用的SHT11數字式溫濕度傳感器采用兩線制數字接口,編程十分方便。溫濕度采集程序流程如圖3所示。 ![]() 4.2 光敏電阻阻值讀取 光敏電阻阻值的讀取用CC2430內部的ADC實現。通過設置CC2430的 ADCCON3寄存器可對A/D轉換的一些參數進行設置。具體如下:使用14位的分辨率,采樣通道設置為AINO,參考電壓設置為內部1.25 V。通過實驗可以測定,當P0.1的電壓值等于1.25 V時,環境光照強度已經足夠弱,可以控制空間中的其他執行器做出動作,如開燈、打開窗簾等。 4.3 ZigBee2006協議棧常用函數及工作過程 系統軟件基于TI/Chipcon公司免費提供的Zig-Bee2006協議棧,程序中嵌入了實時操作系統,用于對網絡組建、節點加入、數據收發等功能運行統一調度。進行程序設計時,首先在協議棧應用層程序中添加相應的任務,然后運行任務即可處理。ZigBee2006協議棧的main函數流程如圖4所示。 ![]() OSAL層初始化時,通過osalAddTasks函數提供任務列表,向實時操作系統中添加用戶所需要的任務。在該函數中,TI公司已經添加了一些任務,如硬件應用層初始化及處理函數、網絡層初始化及處理函數、應用層初始化及處理函數等。在該函數中添加自己的任務,添加任務函數如下: osalTaskAdd(CSCE_Init,CSCE_ProcessEvent,OSAL_TASK_PRIORI-TYLOW); osalTaskAdd 函數在OSAL層中的OSAL_Task.C文件中定義,其作用是添加一個任務到任務列表。其中,第1個參數CSCE_Init為用戶任務的初始化函數的函數名,第2個參數CSCE_ProcessEvent為用戶任務的處理函數的函數名,第3個參數 OSAL_TASK_PRlORITY_LOW為用戶任務的優先級。 任務初始化函數CSCE_Init和任務處理函數CSCE_ProcessEvent都需要遵循ZigBee2006協議棧的格式。其中,CSCE_Init函數和CSCE_ProcessEvent函數需要在應用層頭文件SampleApp.h中進行聲明。 CSCE_Init函數有一個參數task_id,該參數為任務ID,具體值由OSAL進行分配。CSCE_ProcessEvent函數有2 個參數:第 1個參數與CSCE_Init函數相同,為任務ID;第2個參數events為需要處理的事件,它是一個16位的二進制數,每一位代表一個事件。 利用OSAL層進行任務設計時,必須保留系統任務事件SYS_EVENT_MSG(0x8000),該事件為強制事件。進行任務處理時,首先要對系統任務事件是否發生進行判斷,任務處理流程如圖5所示。由于ZigBee2006協議棧為全功能協議棧,不需要對IEEE 802.15.4和ZigBee規范進行全面的了解,只需要在應用層進行一些設計和改動,即可實現數據的發送、接收以及網絡組建功能。在終端節點的 CSCE_ProcessEvent函數的上電初始化處理部分,加入物理地址和短地址提取函數,然后調用發送函數將物理地址向協調器發送。協議棧中的物理地址獲取函數為NLME_GetExtAddr(),其返回結果為一個指向節點的64位IEEE地址的指針。短地址的獲取函數為 NLME_GetShortAddr(),其返回結果為一個16位的無符號整型數據。 數據發送函數在ZigBee2006規范的原語中已經規定了其參數的順序及意義。具體到TI/Chipcon公司所提供的ZigBee2006協議棧中,該函數為AF_DataRequest,其具體形式如下: ![]() 在協調器端和路由器(或終端節點)的CSCE_Pro-cessEvent函數中接收到數據部分(即CSCE_MessageMS-GCB函數)中對數據進行處理,將所接收到的數據(即物理地址和短地址)通過串口發送到計算機端,進行顯示。 ZigBee2006協議棧中設計了串口接收處理函數: ![]() 該函數在MT目錄的SPIMgr.C中。實驗中,在協調器端調用該函數,即可從PC機端接收數據并進行相應的處理。 ![]() 4.4 傳感器程序與ZigBee2006協議棧的融合 系統程序中,傳感器端的物理地址及短地址的發送部分程序,添加在ZigBee2006協議棧中的CSCE_ProcessEv-ent函數的上電初始化部分,即ZDO_STATE_CHANGE消息下。協調器及傳感器端的數據接收都添加在CSCE_ProcessEvent函數的數據接收部分,即 AF_INCOMING_MSG_CMD消息下。系統整體工作過程如圖6所示。 ![]() 4.5 PC機端程序 在系統中,節點上電加入網絡后,協調器會通過RS232向PC機發送新加入節點的IEEE地址。PC機將從串口接收到的物理地址和短地址進行存儲,并改變計算機中所存儲的房間地圖中的節點顏色進行指示。該程序使用Visual C++6.O編寫。 對用戶而言,當想要獲取房間內傳感器所測量區域的溫濕度、光照等情況時,只需要點擊PC機所顯示的地圖上相應的節點。程序會調用已存儲在相應位置的傳感器節點的物理地址,通過串口和ZigBee網絡向該節點發送測量傳感器數據的指令,并等待接收傳感器傳回的溫濕度,并在PC機界面進行顯示。 5 結論 實驗表明,節點的功耗較低,每個節點使用電池供電可以工作3~6個月,可見應用ZigBee構建家庭環境的傳感執行網絡是可行的。 參考文獻 1. IEEE 802.15.4-2003 Std:Wireless Medium AccessControl (MAC) and Physical Layer (PHY) Specifications for LowRate Wireless Personal Area Network (LR-WPANs) 2009 2. Suggestions for the improvement of the IEEE 802.15.4 standard 2009 3. ZigBee Alliance ZigBee Specification 2006 2009 4. 瞿雷.劉勝德.胡咸斌 ZigBee技術及應用 2007 5. 蔣挺.趙成 紫蜂技術及其應用 2006 6. 孫利民.李建中.陳渝 無線傳感器網絡 2005 7. TI Inc A True System-On-Chip solution for 2.4GHz IEEE802.15.4/ZigBee 2009 作者:臺宏達 田國會 宋保業 (山東大學) 劉賢鍇 (山東政法學院) 來源:《單片機與嵌入式系統應用》 2009(7) |