李俊斌,胡永忠
(電子科技大學(xué) 電子工程學(xué)院,四川 成都 611731)
為了滿足人們?nèi)找鎸χ悄芑畹男枨螅谖㈦娮蛹夹g(shù)、計(jì)算機(jī)技術(shù)發(fā)展推動(dòng)下,無線傳感網(wǎng)絡(luò)取得長足發(fā)展,其在各方面的應(yīng)用暗示著它已經(jīng)成為一種新的技術(shù)趨勢。Zigbee是一種介于無線標(biāo)記技術(shù)和藍(lán)牙之間的技術(shù)提案。作為一種新興的短距離、低速率、低功耗無線網(wǎng)絡(luò)技術(shù),其特性預(yù)示著在消費(fèi)類電子智能家庭和樓宇網(wǎng)絡(luò)、工業(yè)控制、醫(yī)療等領(lǐng)域?qū)⒂休^大的發(fā)展。
世界上各大廠商紛紛推出實(shí)現(xiàn)ZigBee物理層功能的芯片, 代表性的有 Jennic的 JN5139,F(xiàn)reescal的 MC13192和Ember的EM250等。德州儀器也推出了一系列系統(tǒng)級芯片。其中CC2530是一款兼容IEEE 802.15.4的片上系統(tǒng),集成了增強(qiáng)型8051內(nèi)核,結(jié)合TI Z-STACK協(xié)議??煞奖愕慕M建自己的無線通信網(wǎng)絡(luò)。
ZigBee協(xié)議棧模型如圖1所示,分布為層結(jié)構(gòu)。主要由應(yīng)用層(APL),網(wǎng)絡(luò)層(NWK),媒介訪問控制層(MAC)和物理層(PHY)組成,其中IEEE802.15.4標(biāo)準(zhǔn)定義了媒介訪問控制層和物理層,ZigBee聯(lián)盟定義了網(wǎng)絡(luò)層和應(yīng)用層架構(gòu)。每一層為上層提供一系列特殊的服務(wù),數(shù)據(jù)實(shí)體提供數(shù)據(jù)傳輸服務(wù),管理實(shí)體則提供所有其他的服務(wù)。所有的服務(wù)實(shí)體通過服務(wù)接入點(diǎn)(SAP)為上層提供一個(gè)接口,每個(gè)SAP都支持一定數(shù)量的服務(wù)原語來實(shí)現(xiàn)所需要的功能[1]。在ZigBee協(xié)議中,協(xié)議本身已經(jīng)定義了大部分內(nèi)容。在基于ZigBee協(xié)議的應(yīng)用開發(fā)中,用戶只需要實(shí)現(xiàn)應(yīng)用程序框架即可,作為應(yīng)用開發(fā)者來考慮,更多關(guān)注的是應(yīng)用層構(gòu)架。
圖1 ZigBee協(xié)議棧模型Fig.1 Model of ZigBee protocol stack
ZigBee應(yīng)用層包括應(yīng)用支持子層APS,ZigBee設(shè)備對象(ZDO)和用戶定義的應(yīng)用對象。APS主要應(yīng)用于維護(hù)設(shè)備綁定表和提供綁定設(shè)備間的消息傳送服務(wù),ZDO是特殊的應(yīng)用對象,負(fù)責(zé)定義設(shè)備類型、初始化綁定請求和建立安全管理等。
ZigBee網(wǎng)絡(luò)由一序列網(wǎng)絡(luò)節(jié)點(diǎn)組成,一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)可以包含多個(gè)設(shè)備,每個(gè)設(shè)備可支持240個(gè)端點(diǎn)。端點(diǎn)作為網(wǎng)絡(luò)通信中的數(shù)據(jù)通道,編號(hào)為1到240的端點(diǎn)對應(yīng)可以定義240個(gè)應(yīng)用對象。此外端點(diǎn)0作為ZigBee設(shè)備對象(ZDO)的數(shù)據(jù)接口。每個(gè)端點(diǎn)可定義多個(gè)群集(Cluster)。
在進(jìn)行ZibBee產(chǎn)品開發(fā)中,需要遵循一個(gè)應(yīng)用規(guī)范(Profile),設(shè)定Profile是一種規(guī)定不同設(shè)備對消息幀的處理行為,使不同的設(shè)備之間可以通過發(fā)送命令、數(shù)據(jù)請求來實(shí)現(xiàn)互操作。它由ZigBee聯(lián)盟提供或用戶自行建立,在從ZigBee聯(lián)盟得到分配的ProfID后,就可以定義設(shè)備描述符和群集(Clusters)。其中描述符用來描述設(shè)備類型和應(yīng)用方式,包括節(jié)點(diǎn)、電源、簡單、復(fù)雜和用戶描述符。簡單描述符需要在節(jié)點(diǎn)的各個(gè)終端(endpoint)中定義,而其他描述符則適用于整個(gè)節(jié)點(diǎn)。
在ZibBee網(wǎng)絡(luò)中,設(shè)備可以分為兩類,即完整功能設(shè)備(FFD)和簡化功能設(shè)備(RFD)。完整功能設(shè)備(FFD)可以作為協(xié)調(diào)器或路由器在任何拓?fù)浣Y(jié)構(gòu)中工作,能同其他FFD或RFD通信。而RFD只能作為終端網(wǎng)絡(luò)節(jié)點(diǎn),并且只能同網(wǎng)絡(luò)中的FFD通信。FFD和RFD在硬件結(jié)構(gòu)上相同,但在網(wǎng)絡(luò)層結(jié)構(gòu)中有差異。
ZigBee網(wǎng)絡(luò)支持2種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),為星型網(wǎng)拓?fù)浜蛯Φ染W(wǎng)拓?fù)鋄2]。兩種拓?fù)浣Y(jié)構(gòu)見圖2和圖3。星型網(wǎng)絡(luò)中,PAN協(xié)調(diào)器提供組織網(wǎng)絡(luò)和路由功能,終端網(wǎng)絡(luò)節(jié)點(diǎn)通過協(xié)調(diào)器進(jìn)行通信。這種拓?fù)浣Y(jié)構(gòu)主要用在智能家居、PC外設(shè)等領(lǐng)域。對等網(wǎng)絡(luò)中每個(gè)設(shè)備都可以同PAN協(xié)調(diào)器直接進(jìn)行通信,因此節(jié)點(diǎn)可自組織網(wǎng)和采用多跳方式來通信。主要應(yīng)用于工業(yè)控制、物流等領(lǐng)域[3]。
圖2 星型網(wǎng)絡(luò)Fig.2 Star network
圖3 對等網(wǎng)絡(luò)Fig.3 Mesh network
Z-Stack是德州儀器推出的ZigBee協(xié)議棧軟件,其為應(yīng)用開發(fā)者提供了一個(gè)模板,在其基礎(chǔ)上進(jìn)行開發(fā)可以大大加快應(yīng)用開發(fā)周期[4]。
Z-Stack采用操作系統(tǒng)的思想來構(gòu)建,采用事件輪詢機(jī)制,系統(tǒng)按照任務(wù)優(yōu)先級依次來處理事件,而在事件處理完后,進(jìn)入低功耗模式,降低了系統(tǒng)的功耗。操作系統(tǒng)抽象層(OSAL)的工作就是對多個(gè)任務(wù)進(jìn)行系統(tǒng)資源分配,核心是通過參數(shù)傳遞的事件類型來判斷對應(yīng)處理相應(yīng)任務(wù)的事件。在系統(tǒng)中,定義tasksEvents數(shù)組存放每個(gè)任務(wù)的標(biāo)志位,在OS主體循環(huán)函數(shù)中,輪詢判斷各任務(wù)標(biāo)志位來對應(yīng)執(zhí)行相應(yīng)的任務(wù)。進(jìn)而執(zhí)行事件處理函數(shù),完成各個(gè)任務(wù)事件處理。
其中任務(wù)事件的觸發(fā)有兩種方式,一種是通過設(shè)置一個(gè)軟件定時(shí)器osal_start_timeEx()函數(shù)等待溢出來觸發(fā),一種是調(diào)用系統(tǒng)消息傳遞機(jī)制來觸發(fā)。以按鍵觸發(fā)為例來說明,在硬件驅(qū)動(dòng)抽象層的任務(wù)處理函數(shù)中,通過設(shè)定函數(shù)每隔100 ms定時(shí)向HAL任務(wù)發(fā)送HAL_KEY_EVENT事件,每次處理事件中執(zhí)行 HalKeyPoll()函數(shù),調(diào)用回調(diào)函數(shù)OnBoard_KeyCallback,通過 osal_msg_send()函數(shù)向應(yīng)用層發(fā)送消息,進(jìn)而調(diào)用osal_set_event()觸發(fā)事件,該函數(shù)把消息msg_ptr(按鍵消息)傳遞給了task_id所指示的一個(gè)任務(wù)。表明把數(shù)據(jù)包傳遞給該任務(wù),最終調(diào)用按鍵處理函數(shù)來執(zhí)行所需操作。
在進(jìn)行應(yīng)用開發(fā)時(shí),需要定義添加相應(yīng)的任務(wù)。其中主要包括任務(wù)初始化函數(shù)和事件處理函數(shù)。任務(wù)初始化函數(shù)定義一個(gè)TasksArr數(shù)組,存放所有任務(wù)事件處理函數(shù)的地址,給每個(gè)任務(wù)分配唯一的任務(wù)標(biāo)識(shí)號(hào),最后注冊系統(tǒng)服務(wù)。ZStack協(xié)議棧中按照由高到低的優(yōu)先級已經(jīng)定義好了MAC層、網(wǎng)絡(luò)層、硬件驅(qū)動(dòng)抽象層、應(yīng)用設(shè)備對象層的任務(wù),只需要添加用戶應(yīng)用層任務(wù)初始化函數(shù)到后面即可。
本次網(wǎng)絡(luò)設(shè)計(jì)中的協(xié)調(diào)器、路由器和終端器的硬件模塊結(jié)構(gòu)是相同的。模塊設(shè)計(jì)中,采用一片PL2303HX芯片將USB虛擬成串口。因此,通過USB接口可以方便的實(shí)現(xiàn)模塊和PC之間的通信。
參考IT公司的評估板可以加快自行PCB設(shè)計(jì)的進(jìn)程,模塊設(shè)計(jì)中,PCB板采用雙層板,在設(shè)計(jì)時(shí),兩層接地層會(huì)沿銅皮走線產(chǎn)生一個(gè)電位差,而高頻電流變化速度很快,如果電流不能及時(shí)通過回路導(dǎo)入地面,局部的電位過高會(huì)導(dǎo)致信號(hào)的錯(cuò)誤判斷,因此在板子上應(yīng)注意在兩層地面層打回路導(dǎo)通孔來減少阻抗,使地面保持等電位。典型的一個(gè)導(dǎo)通孔距離計(jì)算公式如下。
其中c表示光的傳輸速率,εr表示板子的介電常數(shù)。測量得寬度為62.9 mil。在利用評估版設(shè)計(jì)天線電路時(shí),TI公司已經(jīng)提供了信號(hào)輸出到天線間匹配電路,如圖4所示,RF_P和RF_N是差分射頻信號(hào)輸出,天線是50 Ω的單端輸入,之間采用分立LC元器件搭建了一個(gè)差分到單端的阻抗匹配電路。標(biāo)注1表示DC模塊,標(biāo)注2三端口電路是巴倫電路,標(biāo)注3是pi型濾波電路。
圖4 匹配電路Fig.4 Matching circuit
模塊設(shè)計(jì)中天線選擇印制倒F天線,印制天線位于介質(zhì)板與空氣中間,且介質(zhì)板背面無金屬。結(jié)構(gòu)模型如圖5所示,其等效模型為長為L的終端開路傳輸線和長為S的終端短路傳輸線并聯(lián)而成[5]。本文參考TI公司提供的2.4 G IFA的設(shè)計(jì)尺寸進(jìn)行天線設(shè)計(jì),其中重點(diǎn)分析L、S、H 3個(gè)參數(shù)對于諧振頻率和輸入阻抗的影響。這里采用Ansoft HFSS軟件對天線進(jìn)行仿真。其仿真模型如圖6所示。
圖5 結(jié)構(gòu)模型Fig.5 Structure model
圖6 IFA仿真模型Fig.6 IFA simulation model
天線采用相對介電常數(shù)為4.6,厚度為1.0 mm的FR-4板材。按照固定2個(gè)參數(shù),改變另外一個(gè)參數(shù)的方法進(jìn)行調(diào)節(jié)。其中,保持S和H不變,減少L長度可以降低諧振頻率點(diǎn)的位置,保持S和L不變,減小H長度可以降低輸入阻抗。通過微調(diào)各個(gè)參數(shù)使諧振頻率落在2.45 GHz,輸入阻抗接近于50 Ω。最終得到一個(gè)尺寸。設(shè)置掃描頻率在2 GHz到3 GHz的回波損耗仿真結(jié)果如圖7所示,可以看到天線在2.45 GHz的回波損耗為-30 dB,電壓駐波比為2.0時(shí)帶寬為680 MHz,完全滿足ZigBee在2.405 GHz到2.483 GHz頻段的要求。
圖7 回波損耗曲線圖Fig.7 Graph of return losses
本次設(shè)計(jì)開發(fā)環(huán)境選用IAR7.60,在Z-STACK-2.4.0-1.4.0協(xié)議?;A(chǔ)上編寫了應(yīng)用層程序[6]。系統(tǒng)主要由6個(gè)節(jié)點(diǎn)組成一個(gè)星型網(wǎng)絡(luò),一個(gè)協(xié)調(diào)器負(fù)責(zé)網(wǎng)絡(luò)的建立,3個(gè)路由器和2個(gè)終端器組建網(wǎng)絡(luò),采集由CC2530內(nèi)部自帶溫度傳感器的溫度值,并實(shí)時(shí)地傳輸?shù)絽f(xié)調(diào)器。
協(xié)調(diào)器采用自啟動(dòng)模式,即在預(yù)編譯選項(xiàng)中去除HOLD_AUTO_START。因此在ZDO初始化函數(shù)中進(jìn)行網(wǎng)絡(luò)初始化,若協(xié)調(diào)器網(wǎng)絡(luò)建立成功,將觸發(fā)任務(wù)的ZDO_STATE_CHANGE事件,后調(diào)用函數(shù)在串口調(diào)試軟件上顯示網(wǎng)絡(luò)建立的狀態(tài)。系統(tǒng)對串口進(jìn)行輪詢檢測,若有數(shù)據(jù)寫入串口,通過回調(diào)函數(shù)將串口事件傳遞給任務(wù),在應(yīng)用層里定義MyApp_CallBack()調(diào)用數(shù)據(jù)發(fā)送函數(shù),這邊數(shù)據(jù)即控制命令。其中發(fā)送地址模式分為單播、廣播和組播3種模式,分配3種模式地址做為數(shù)據(jù)發(fā)送目標(biāo)地址。
路由器和終端器也采用自啟動(dòng)模式.在網(wǎng)絡(luò)初始化時(shí),調(diào)用 NLME_NetworkDiscoveryRequest()函數(shù)來發(fā)現(xiàn)網(wǎng)絡(luò),后加入網(wǎng)絡(luò)成功,觸發(fā)任務(wù)的ZDO_STATE_CHANGE事件,把網(wǎng)絡(luò)地址發(fā)給協(xié)調(diào)器。在接收到控制命令數(shù)據(jù)后,調(diào)用數(shù)據(jù)采集函數(shù)采集溫度值,并發(fā)送數(shù)據(jù)到協(xié)調(diào)器,若發(fā)送不成功將延遲1 s后重發(fā),如圖8所示。
圖8 協(xié)調(diào)器、終端器工作流程Fig.8 Coordinator,end device working process
網(wǎng)絡(luò)由6個(gè)節(jié)點(diǎn)組成,其中C為協(xié)調(diào)器,通過串口連接到PC。R1、R2、R3為路由器節(jié)點(diǎn),E為終端器節(jié)點(diǎn),構(gòu)成一個(gè)星型網(wǎng)絡(luò)。節(jié)點(diǎn)間距在70 m左右。上電啟動(dòng)后,協(xié)調(diào)器選擇網(wǎng)絡(luò)標(biāo)識(shí)號(hào)PanID為0xB6F1,為路由器和終端器分配地址,分別為0x0001、0x0016、0x002B。終端器節(jié)點(diǎn)地址為0x0002。以上信息都通過發(fā)送狀態(tài)到串口調(diào)試軟件實(shí)時(shí)顯示。
協(xié)調(diào)器通過串口調(diào)試軟件發(fā)送溫度采集命令,設(shè)置波特率為57 600 b/s,收到各個(gè)節(jié)點(diǎn)的溫度值。若移除路由節(jié)點(diǎn)R3,串口調(diào)試軟件顯示終端節(jié)點(diǎn)E離開網(wǎng)絡(luò)。再次把R3節(jié)點(diǎn)加入網(wǎng)絡(luò)中,E重新加入網(wǎng)絡(luò)。驗(yàn)證了網(wǎng)絡(luò)的自動(dòng)中繼功能,網(wǎng)絡(luò)自愈能力。測試網(wǎng)絡(luò)拓?fù)鋱D如圖9所示。
圖9 測試網(wǎng)絡(luò)拓?fù)鋱DFig.9 Network topology of testing
本文從應(yīng)用方面著手對Zigbee技術(shù)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行研究和介紹,采用TI公司的Z-STACK協(xié)議棧和IAR開發(fā)環(huán)境,以CC2530芯片為核心構(gòu)建了一個(gè)ZigBee通信網(wǎng)絡(luò),在硬件設(shè)計(jì)和軟件設(shè)計(jì)方面對于需要搭建傳感器網(wǎng)絡(luò)的項(xiàng)目應(yīng)用有一定參考價(jià)值。
[1]ZigBee Aliance.ZigBee Specification.[EB/OL].(2008).http://www.ZigBee.org.
[2]CAO Li-ting,JIANG wei,ZHANG Zhao-li.Networked wireless meter reading system based on ZigBee technology[J].Control and Decision Conference,2008:3455-3460.
[3]呂治安.ZigBee網(wǎng)絡(luò)原理與應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2008.
[4]夏飛.基于Z-Stack協(xié)議的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)研究[J].電子元器件應(yīng)用,2009,11(12):74-76.
XIA Fei.Research of wireless sensor network node based on Z-Stack protocol[J]. Electronic Component & Device Application,2009,11(12):74-76.
[5]劉彤,樊宏,沈連豐.無線家庭網(wǎng)絡(luò)印制倒F型天線的分析與設(shè)計(jì)[J].東南大學(xué)學(xué)報(bào),2006,36(2):184-188.
LIU Tong,F(xiàn)AN Hong,SHEN Lian-feng.Analysis and design of printed IFA for WHAN[J].Journal of Southeast University,2006,36(2):184-188.
[6]宋國青,葉進(jìn),屈國旺,等.基于工作流的Zigbee無線抄表系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表,2010(4):22-25.
SONG Guo-qing,YE Jin,QU Guo-wang,et al.Design and implementation of zigbee wireless meter reading system based on workflow[J].Automation&Instrumentation,2010(4):22-25.