安 康,張慧熙,王李冬,呂明琪
(杭州師范大學(xué) 錢江學(xué)院,浙江 杭州310012)
目前,針對(duì)一定區(qū)域內(nèi)信息和設(shè)備進(jìn)行監(jiān)測(cè)和控制多采用有線方式通信,網(wǎng)絡(luò)在布線和維護(hù)過(guò)程中由于線路腐蝕和損壞造成網(wǎng)絡(luò)中斷,給正常生產(chǎn)工作帶來(lái)影響,同時(shí)也增加了人力資源成本比重?;诖?,從節(jié)省成本和網(wǎng)絡(luò)穩(wěn)定性考慮,給出一種基于ZigBee技術(shù)的多節(jié)點(diǎn)設(shè)備無(wú)線自組網(wǎng)設(shè)計(jì)方案。
基于IEEE 802.15.4協(xié)議的ZigBee技術(shù)[1-3]是一種新興的短距離無(wú)線通信技術(shù),具有功耗低、成本低、網(wǎng)絡(luò)容量大、可靠性和安全性高等特點(diǎn)。采用ZigBee技術(shù)[4-6]傳感器節(jié)點(diǎn)只需要很少的能量,就可以在多個(gè)傳感器之間相互協(xié)調(diào),以接力棒的方式利用無(wú)線傳輸將數(shù)據(jù)信息從一個(gè)傳感器傳到另一個(gè)傳感器。ZigBee技術(shù)目前被廣泛應(yīng)用到無(wú)線工業(yè)、精準(zhǔn)農(nóng)業(yè)、家庭和樓宇自動(dòng)化、消費(fèi)家電以及醫(yī)療服務(wù)等領(lǐng)域,是國(guó)家“十二五”規(guī)劃中信息技術(shù)重點(diǎn)扶持方向。
本文主要內(nèi)容包括網(wǎng)絡(luò)節(jié)點(diǎn)硬件設(shè)計(jì)、ZigBee網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)和無(wú)線Mesh網(wǎng)絡(luò)測(cè)試。系統(tǒng)利用終端節(jié)點(diǎn)采集數(shù)據(jù),通過(guò)多跳路由匯聚到協(xié)調(diào)器節(jié)點(diǎn)實(shí)現(xiàn)多節(jié)點(diǎn)設(shè)備無(wú)線自組網(wǎng)。
系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,采用基于樹(shù)狀Mesh拓?fù)浣Y(jié)構(gòu)[1],網(wǎng)絡(luò)由協(xié)調(diào)器節(jié)點(diǎn)(Coordinator)、路由節(jié)點(diǎn)(Router)和終端節(jié)點(diǎn)(End Device)3種類型的功能模塊構(gòu)成。
圖1 基于樹(shù)狀無(wú)線Mesh拓?fù)渚W(wǎng)絡(luò)結(jié)構(gòu)圖
無(wú)線自組網(wǎng)絡(luò)節(jié)點(diǎn)能耗決定整個(gè)網(wǎng)絡(luò)的生命周期,從硬件結(jié)構(gòu)看,節(jié)點(diǎn)能耗主要在微處理器模塊,選擇高性能低功耗微處理器可以降低節(jié)點(diǎn)能耗,延長(zhǎng)網(wǎng)絡(luò)生命周期?;诖耍捎肨I公司的CC2530[6-7]作為主控芯片,用于ZigBee的片上系統(tǒng),內(nèi)部集成射頻收發(fā)器、增強(qiáng)型8051內(nèi)核、8 KB RAM,封裝小、功耗低。
終端節(jié)點(diǎn)主要負(fù)責(zé)信息采集,通過(guò)射頻電路傳送信息到協(xié)調(diào)器節(jié)點(diǎn)。路由節(jié)點(diǎn)允許子設(shè)備加入網(wǎng)絡(luò),多跳路由并協(xié)助終端節(jié)點(diǎn)進(jìn)行通信,完成數(shù)據(jù)信息的轉(zhuǎn)發(fā),延長(zhǎng)數(shù)據(jù)傳輸距離。兩種節(jié)點(diǎn)硬件電路結(jié)構(gòu)如圖2所示。路由節(jié)點(diǎn)沒(méi)有傳感器電路,由于實(shí)現(xiàn)功能不同,兩種節(jié)點(diǎn)軟件驅(qū)動(dòng)也不同。
圖2 終端和路由節(jié)點(diǎn)硬件結(jié)構(gòu)圖
傳感器電路負(fù)責(zé)采集數(shù)據(jù)并完成數(shù)據(jù)轉(zhuǎn)換;片上系統(tǒng)CC2530負(fù)責(zé)對(duì)采集信息進(jìn)行處理以及整個(gè)節(jié)點(diǎn)設(shè)備的任務(wù)管理 (包括無(wú)線信號(hào)的收發(fā)處理以及ZigBee協(xié)議操作);電路射頻部分采用阻抗匹配電路與天線饋線組成[6],用一個(gè)巴倫優(yōu)化處理,滿足輸入輸出匹配電阻(50 Ω)要求[7];液晶電路顯示節(jié)點(diǎn)狀態(tài);Flash ROM 負(fù)責(zé)存儲(chǔ)數(shù)據(jù)信息;按鍵電路方便用戶對(duì)節(jié)點(diǎn)設(shè)置,如收發(fā)數(shù)據(jù)時(shí)通過(guò)按鍵配置;LED電路指示網(wǎng)絡(luò)連接狀態(tài)。
協(xié)調(diào)器節(jié)點(diǎn)硬件結(jié)構(gòu)圖如圖3所示。節(jié)點(diǎn)負(fù)責(zé)整個(gè)網(wǎng)絡(luò)初始化,確定ZigBee網(wǎng)絡(luò)ID號(hào)和操作的物理信道,并統(tǒng)籌短地址分配,提供數(shù)據(jù)路由和安全管理服務(wù)。協(xié)調(diào)器節(jié)點(diǎn)與終端節(jié)點(diǎn)以及路由節(jié)點(diǎn)最大的區(qū)別在于:(1)協(xié)調(diào)器節(jié)點(diǎn)通過(guò)SP3232電路與上位機(jī)通信,由于PC與單片機(jī)之間接口不一致,通過(guò)SP3232實(shí)現(xiàn)USB到串口轉(zhuǎn)換;(2)協(xié)調(diào)器節(jié)點(diǎn)負(fù)責(zé)與終端節(jié)點(diǎn)或者路由節(jié)點(diǎn)進(jìn)行信息通信,不具有信息采集功能。
圖3 協(xié)調(diào)器節(jié)點(diǎn)硬件結(jié)構(gòu)圖
系統(tǒng)設(shè)計(jì) ZigBee協(xié)議[7-8]選擇 ZigBee-pro,協(xié)議棧版本為ZSTACK-CC2530-2.3.0-1.4.0。整個(gè)系統(tǒng)無(wú)線網(wǎng)絡(luò)由事先被定義為協(xié)調(diào)器的主節(jié)點(diǎn)建立。
協(xié)調(diào)器軟件設(shè)計(jì)包括初始化設(shè)備、協(xié)調(diào)器組網(wǎng)、路由節(jié)點(diǎn)和傳感器節(jié)點(diǎn)入網(wǎng)以及數(shù)據(jù)信息處理(包括數(shù)據(jù)收發(fā)功能)等。協(xié)調(diào)器節(jié)點(diǎn)上電后監(jiān)測(cè)到ZigBee網(wǎng)絡(luò),則協(xié)調(diào)器節(jié)點(diǎn)作為路由節(jié)點(diǎn)加入到該網(wǎng)絡(luò);若監(jiān)測(cè)無(wú)網(wǎng)絡(luò),則該節(jié)點(diǎn)作為協(xié)調(diào)器節(jié)點(diǎn)構(gòu)建ZigBee網(wǎng)絡(luò),終端節(jié)點(diǎn)和路由節(jié)點(diǎn)加入到該網(wǎng)絡(luò)。ZigBee網(wǎng)絡(luò)在2.4 GHz頻帶劃分 16個(gè)信道,步長(zhǎng)值為 5 MHz,編號(hào)為 11~26[7-8],載波頻率 fc=2 405+5(k-11)MHz,k取值為 11~26。協(xié)調(diào)器通過(guò)調(diào)用函數(shù)MAC_MlmeScanReq((macMlmeScan-Req_t*)pData)對(duì)信道能量掃描,能量水平高標(biāo)志該信道無(wú)線信號(hào)活躍,協(xié)調(diào)器根據(jù)能量掃描信息選擇一個(gè)可以利用的信道建立自己的無(wú)線網(wǎng)絡(luò)。另外,每個(gè)協(xié)調(diào)器設(shè)備已經(jīng)具有唯一固定的64 bit MAC地址作為組網(wǎng)標(biāo)識(shí),同時(shí)必須分配給自己一個(gè)16 bit的網(wǎng)絡(luò)短地址(PAN ID),節(jié)點(diǎn)設(shè)備使用短地址通信可以使網(wǎng)絡(luò)更輕量級(jí)、更加高效。PAN ID值可以在ZDAPP_CONFIG_PAN_ID中進(jìn)行修改,協(xié)調(diào)器默認(rèn)網(wǎng)絡(luò)短地址為0x0000。協(xié)調(diào)器節(jié)點(diǎn)的主要功能是對(duì)網(wǎng)絡(luò)中各子節(jié)點(diǎn)進(jìn)行管理,接收各子節(jié)點(diǎn)的狀態(tài)信息并將信息上報(bào)上位機(jī)進(jìn)行數(shù)據(jù)處理。圖4為協(xié)調(diào)器通信流程圖。
圖4 協(xié)調(diào)器通信流程圖
路由節(jié)點(diǎn)一旦監(jiān)測(cè)到網(wǎng)絡(luò)便會(huì)自動(dòng)綁定[7-8]到一個(gè)相應(yīng)的協(xié)調(diào)器節(jié)點(diǎn)或者父路由節(jié)點(diǎn),申請(qǐng)加入網(wǎng)絡(luò)。作為入網(wǎng)申請(qǐng),無(wú)論是路由節(jié)點(diǎn)還是終端節(jié)點(diǎn),都需要對(duì)設(shè)備進(jìn)行配置,作為路由節(jié)點(diǎn)令logiclType=ZG_DEVICETYPE_ROUTER,通過(guò)調(diào)用函數(shù)zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE,sizeof(),&logicalType)選擇路由節(jié)點(diǎn)。在路由節(jié)點(diǎn)上加載系統(tǒng)引導(dǎo)項(xiàng),令startOption=ZCD_STARTOPI_AUTO_START,通過(guò)調(diào)用函數(shù) zb_WriteConfiguration(ZCD_NV_STARTUP_OPTION,sizeof(),&startOption)驅(qū)動(dòng)路由節(jié)點(diǎn)啟動(dòng)系統(tǒng)。路由節(jié)點(diǎn)申請(qǐng)入網(wǎng)成功后若有其他節(jié)點(diǎn)申請(qǐng)加入,需要判斷申請(qǐng)節(jié)點(diǎn)是路由節(jié)點(diǎn)還是終端節(jié)點(diǎn),為節(jié)點(diǎn)配置系統(tǒng)加載項(xiàng),完成節(jié)點(diǎn)入網(wǎng)工作。若節(jié)點(diǎn)入網(wǎng)成功則該路由節(jié)點(diǎn)為申請(qǐng)入網(wǎng)節(jié)點(diǎn)分配網(wǎng)絡(luò)地址,通過(guò)多跳數(shù)據(jù)轉(zhuǎn)發(fā)機(jī)制進(jìn)行數(shù)據(jù)交換,并根據(jù)選擇的路由節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù),提供網(wǎng)絡(luò)的連通性,數(shù)據(jù)的發(fā)送和接收通過(guò)應(yīng)用層調(diào)用完成數(shù)據(jù)幀ACK應(yīng)答機(jī)制[8]。圖5給出了路由節(jié)點(diǎn)通信流程圖。
圖5 路由節(jié)點(diǎn)通信流程圖
終端感知節(jié)點(diǎn)主要完成信息采集,通過(guò)路由節(jié)點(diǎn)傳送到協(xié)調(diào)器節(jié)點(diǎn)以RS232方式進(jìn)行傳輸供上位機(jī)對(duì)數(shù)據(jù)進(jìn)行處理。終端節(jié)點(diǎn)上電后,對(duì)節(jié)點(diǎn)設(shè)備進(jìn)行配置,令logiclType=ZG_DEVICETYPE_ENDDEVICE,通過(guò)調(diào)用ZDO_Start()申請(qǐng)加入父節(jié)點(diǎn)。但是在終端節(jié)點(diǎn)入網(wǎng)之前,路由或者協(xié)調(diào)器節(jié)點(diǎn)無(wú)法獲得終端節(jié)點(diǎn)的網(wǎng)絡(luò)地址,可通過(guò)對(duì)設(shè)備綁定解決該問(wèn)題[7-8]。終端節(jié)點(diǎn)調(diào)用zb_Bind-DeviceRequest()發(fā)出綁定請(qǐng)求,并通過(guò)zb_AllowBindResponse()對(duì)配對(duì)請(qǐng)求作出響應(yīng),同時(shí)路由或者協(xié)調(diào)器節(jié)點(diǎn)執(zhí)行 zb_BindDevice(TRUE,clusterID,NULL)與終端節(jié)點(diǎn)發(fā)生綁定,如果綁定成功則綁定表建立在路由或者協(xié)調(diào)器節(jié)點(diǎn)上,綁定表中的ClusterID(簇標(biāo)識(shí)符)值相等,且屬性相反。通過(guò)clusterID獲得終端節(jié)點(diǎn)的網(wǎng)絡(luò)地址,綁定成功后終端節(jié)點(diǎn)執(zhí)行zb_SendDataReques()周期性發(fā)送采集的數(shù)據(jù)信息。圖6為終端節(jié)點(diǎn)通信流程圖。
圖6 終端節(jié)點(diǎn)通信流程圖
進(jìn)行ZigBee組網(wǎng)測(cè)試時(shí),通過(guò)設(shè)置4個(gè)節(jié)點(diǎn)(其中1個(gè)協(xié)調(diào)器節(jié)點(diǎn)、兩個(gè)路由節(jié)點(diǎn)、1個(gè)終端感知節(jié)點(diǎn))進(jìn)行自組和自愈網(wǎng)絡(luò)測(cè)試。采用串口調(diào)試助手和TI公司監(jiān)控軟件ZigBee_Sensor_Monitor進(jìn)行組網(wǎng)測(cè)試。串口配置:端口號(hào)COM8,波特率 38 400 b/s、8位數(shù)據(jù)位、1位停止位。測(cè)試過(guò)程中,系統(tǒng)通過(guò)串口實(shí)現(xiàn)協(xié)調(diào)器與上位機(jī)監(jiān)控端通信。協(xié)調(diào)器匯聚各個(gè)節(jié)點(diǎn)采集的信息,串口接收到的數(shù)據(jù)幀定義[8]如表1所示。
由于每個(gè)網(wǎng)絡(luò)只能擁有網(wǎng)絡(luò)內(nèi)唯一一個(gè)協(xié)調(diào)器,協(xié)調(diào)器通電后,初始化其中64位IEEE地址為0x(00124B-0001FA9D87),網(wǎng)絡(luò)短地址 PAN ID為 0x0000,協(xié)調(diào)器執(zhí)行zb_BindDevice()接收其他節(jié)點(diǎn)綁定請(qǐng)求,組建網(wǎng)絡(luò)。
路由節(jié)點(diǎn)1上電后,自動(dòng)搜索父節(jié)點(diǎn) (即協(xié)調(diào)器節(jié)點(diǎn))加入網(wǎng)絡(luò),入網(wǎng)成功則路由節(jié)點(diǎn)1周期性發(fā)送節(jié)點(diǎn)信息經(jīng)協(xié)調(diào)器上傳到PC端,串口接收到數(shù)據(jù)信息為0x(FE 0A 46 87 01 00 02 00 04 00 FF FF 00 00 CC),根據(jù)表1中對(duì)數(shù)據(jù)幀定義,其中路由節(jié)點(diǎn)1短地址PAN ID為 0x0001,其父節(jié)點(diǎn) PAN ID為0x0000。繼續(xù)將路由節(jié)點(diǎn)2上電加入到網(wǎng)絡(luò)中,路由節(jié)點(diǎn)2搜索父節(jié)點(diǎn)(即協(xié)調(diào)器節(jié)點(diǎn)),入網(wǎng)成功后路由節(jié)點(diǎn)2周期性發(fā)送數(shù)據(jù)信息,上位機(jī)通過(guò)串口接收數(shù)據(jù)信息為0x(FE 0A 46 87 3E 14 02 00 04 00 FF FF 00 00 E7),根據(jù)表1中對(duì)數(shù)據(jù)幀定義,其中路由節(jié)點(diǎn)2短地址PAN ID為0x143E,其父節(jié)點(diǎn)PAN ID為0x0000。
繼續(xù)將終端節(jié)點(diǎn)上電加入到網(wǎng)絡(luò)中,終端節(jié)點(diǎn)自動(dòng)搜索并綁定到距離其最近的路由節(jié)點(diǎn)2,成功入網(wǎng)后終端節(jié)點(diǎn)周期性地將采集到的信息通過(guò)路由節(jié)點(diǎn)2和協(xié)調(diào)器節(jié)點(diǎn)上傳到PC端。串口接收數(shù)據(jù)信息為:0x(FE 0A 46 87 6D 28 02 00 04 00 14 23 3E 14 95),其終端節(jié)點(diǎn)短地址PAN ID為0x286D,其父節(jié)點(diǎn)PAN ID為0x143E,信息位0x14表示當(dāng)前采集溫度為 20℃,4個(gè)節(jié)點(diǎn)無(wú)需人工干預(yù),組網(wǎng)成功,實(shí)現(xiàn)了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的自動(dòng)組建功能。終端節(jié)點(diǎn)入網(wǎng)成功后通過(guò)上位機(jī)組網(wǎng)監(jiān)控界面如圖7所示。
表1 數(shù)據(jù)幀格式
設(shè)定路由節(jié)點(diǎn)2故障,中斷信號(hào)傳輸,則終端節(jié)點(diǎn)會(huì)自動(dòng)搜索網(wǎng)絡(luò)找到距離其最近的父節(jié)點(diǎn)(即路由節(jié)點(diǎn)1),綁定并入網(wǎng)成功,同時(shí)周期性地向協(xié)調(diào)器發(fā)送采集數(shù)據(jù)信息。串口接收到的數(shù)據(jù)信息為:0x(FE 0A 46 87 30 14 02 00 04 00 13 23 01 00 D8)。其中終端節(jié)點(diǎn)短地址 PAN ID為 0x1430,其父節(jié)點(diǎn) PAN ID為 0x0001,信息位0x13表示當(dāng)前采集溫度為19℃。當(dāng)節(jié)點(diǎn)2發(fā)生故障時(shí),網(wǎng)絡(luò)能夠自我修復(fù),并對(duì)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行相應(yīng)的調(diào)整,無(wú)須人工干擾,系統(tǒng)能夠正常工作。節(jié)點(diǎn)自我修復(fù)后上位機(jī)組網(wǎng)監(jiān)控界面如圖8所示。
圖7 節(jié)點(diǎn)組網(wǎng)結(jié)構(gòu)圖
圖8 節(jié)點(diǎn)修復(fù)組網(wǎng)結(jié)構(gòu)圖
本文給出了一種基于ZigBee技術(shù)多節(jié)點(diǎn)設(shè)備無(wú)線自組網(wǎng)方案,詳細(xì)介紹了節(jié)點(diǎn)硬件電路和軟件系統(tǒng)設(shè)計(jì),通過(guò)對(duì)多個(gè)節(jié)點(diǎn)進(jìn)行組網(wǎng)測(cè)試完成網(wǎng)絡(luò)的自組織連接和自愈修復(fù)功能,使網(wǎng)絡(luò)系統(tǒng)運(yùn)行正常。節(jié)點(diǎn)設(shè)備具有通信協(xié)議簡(jiǎn)單可靠、靈敏度高、測(cè)量準(zhǔn)確、功耗低,節(jié)點(diǎn)布置靈活、系統(tǒng)易于擴(kuò)展等優(yōu)點(diǎn)。另外,系統(tǒng)可應(yīng)用于農(nóng)村蔬菜種植、花卉園藝等各種類型溫室大棚環(huán)境的智能化監(jiān)控、智能家居節(jié)點(diǎn)設(shè)備的組網(wǎng)、工業(yè)節(jié)點(diǎn)的無(wú)線定位、醫(yī)療物聯(lián)網(wǎng)等領(lǐng)域,具有較大的市場(chǎng)競(jìng)爭(zhēng)力和廣闊的應(yīng)用前景。
[1]GISLASON D.ZigBee wireless networks[M].Elsevier Inc,2008.
[2]王龍山,馬俊.基于物聯(lián)網(wǎng)的家居綜合監(jiān)測(cè)系統(tǒng)[J].電子技術(shù)應(yīng)用,2013,39(2):78-81.
[3]曹明勤,張濤,王建.基于 ZigBee的農(nóng)業(yè)物聯(lián)網(wǎng)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(12):86-89.
[4]崔遜學(xué),趙湛,王成.無(wú)線傳感器網(wǎng)絡(luò)的領(lǐng)域應(yīng)用與設(shè)計(jì)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2009.
[5]GILL K,Yang Shuanghua,Yao Fang,et al.A ZigBee-based home automation system[J].IEEE Transactions on Consumer Electronics,2009,55(2):422-430.
[6]Zhang Chunlong,Zhang Min,Su Yongsheng,et al.Smart home design based on ZigBee wireless sensor network[C].International ICST Conference on Communications and Networking,2012:463-466.
[7]王鳳.基于CC2530的 ZigBee無(wú)線傳感器網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2012.
[8]FARAHANI S.ZigBee wireless networks and transceivers[M].Butlington:Newnes,2008.