ZigBee技術(shù)的樹(shù)簇網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 介紹一種基于ZigBee協(xié)議棧Z-Stack的倉(cāng)庫(kù)無(wú)線實(shí)時(shí)監(jiān)控系統(tǒng)解決方案;應(yīng)用首款支持ZigBee協(xié)議的單芯片 CC2430及多種傳感器實(shí)現(xiàn)了硬件平臺(tái)。分析Z-stack NWK層工作原理,完成了多跳路由樹(shù)簇網(wǎng)絡(luò)的組網(wǎng)實(shí)驗(yàn),并實(shí)際應(yīng)用于某煙草倉(cāng)庫(kù)。結(jié)果表明:所設(shè)計(jì)的監(jiān)控系統(tǒng)具有較好的通用性、網(wǎng)絡(luò)魯棒性,很容易在工業(yè)控制監(jiān)控、樓宇自動(dòng)化領(lǐng)域推廣應(yīng)用。
關(guān)鍵詞 ZigBee Z-Stack 樹(shù)簇拓?fù)?CC2430 監(jiān)控系統(tǒng)
引 言
倉(cāng)庫(kù)監(jiān)控系統(tǒng)是倉(cāng)庫(kù)自動(dòng)化管理的重要組成部分。監(jiān)控系統(tǒng)可對(duì)大面積范圍多部位地區(qū)實(shí)行實(shí)時(shí)有效的監(jiān)控,并對(duì)得到的信息進(jìn)行及時(shí)處理,以保證物資安全儲(chǔ)存。傳統(tǒng)監(jiān)控系統(tǒng)存在因采用有線連接方式而導(dǎo)致的可靠性差、易受損、布線麻煩等問(wèn)題。隨著半導(dǎo)體技術(shù)、微系統(tǒng)技術(shù)、通信技術(shù)和計(jì)算機(jī)技術(shù)的飛速發(fā)展,無(wú)線傳感器網(wǎng)絡(luò)(WSN)的出現(xiàn)恰好可以解決這類問(wèn)題;而具有低成本、小體積、低功耗、低傳輸速率的ZigBee技術(shù)無(wú)疑成為目前無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用的首選技術(shù)之一。
自2004年ZigBee聯(lián)盟正式發(fā)布ZigBee技術(shù)標(biāo)準(zhǔn)以來(lái),許多公司廠商陸續(xù)推出了自己的芯片產(chǎn)品和開(kāi)發(fā)系統(tǒng),如飛思卡爾公司的MC13192, TI公司的CC24xx系列,Atmel公司的AT86RF系列等。目前,對(duì)ZigBee技術(shù)的研究與應(yīng)用也幾乎是基于以上的芯片。
本文在Z-Stack基礎(chǔ)上,成功組建了一個(gè)樹(shù)簇拓?fù)?strong>網(wǎng)絡(luò)監(jiān)控系統(tǒng)。在該網(wǎng)絡(luò)中,子節(jié)點(diǎn)將傳感器采集的4類數(shù)據(jù)以多跳的方式發(fā)往sink節(jié)點(diǎn),在父節(jié)點(diǎn)失效的情況下,子節(jié)點(diǎn)能夠找到其他數(shù)據(jù)路徑,從而實(shí)現(xiàn)了數(shù)據(jù)的可靠傳輸。
1 總體方案架構(gòu)
1.1 系統(tǒng)需求分析
倉(cāng)庫(kù)為長(zhǎng)方形,面積600 m2,所存儲(chǔ)物資是煙草,屬于貴重物品,所以設(shè)計(jì)的系統(tǒng)需要具備以下功能:
①防盜防破壞。貴重物品是犯罪分子盜竊和破壞的目標(biāo)。案例分析表明,破門(mén)破窗而人占有很大比例,還有挖墻和揭頂而入的。
②防火報(bào)警。庫(kù)房物資屬于易燃物品,而且非常密集,如果火災(zāi)發(fā)現(xiàn)晚會(huì)增加滅火困難,造成重大經(jīng)濟(jì)損失;對(duì)其監(jiān)控有利于提前發(fā)現(xiàn)災(zāi)情,及時(shí)采取對(duì)策。
③溫濕度監(jiān)控。物資在倉(cāng)庫(kù)集中存儲(chǔ),易受環(huán)境影響,對(duì)環(huán)境溫濕度的監(jiān)控可以避免因庫(kù)房溫濕度的變化而造成煙葉霉變或糙碎,達(dá)到提高煙葉自然醇化質(zhì)量和卷煙制成品的內(nèi)在品質(zhì)的目的。
④無(wú)線通信。采用電纜布線缺點(diǎn)明顯,易對(duì)系統(tǒng)造成不必要的干擾且存在火災(zāi)的隱患。
1.2 系統(tǒng)方案設(shè)計(jì)
無(wú)線通信中,在接收靈敏度一定的情況下,無(wú)線發(fā)射功率P和接收半徑R之間的關(guān)系是P正比于 R2~R5。在長(zhǎng)距離數(shù)據(jù)傳輸情況下,能耗情況會(huì)十分嚴(yán)重,特別是對(duì)于能量有限的系統(tǒng)來(lái)說(shuō),會(huì)造成節(jié)點(diǎn)過(guò)早死亡,所以直接數(shù)據(jù)傳輸?shù)男切尉W(wǎng)絡(luò)不能滿足需要,只能采用具有多級(jí)中繼路由節(jié)點(diǎn)的樹(shù)簇網(wǎng)絡(luò)。系統(tǒng)總體結(jié)構(gòu)示意圖如圖1所示。
網(wǎng)絡(luò)中的設(shè)備分為三種:終端設(shè)備、路由器、協(xié)調(diào)器。其中終端設(shè)備為RFD,其他兩種為FFD。RFD作為樹(shù)枝末位的節(jié)點(diǎn),一次只能連接一個(gè)FFD設(shè)備。
因?yàn)闇囟葷穸刃盘?hào)不會(huì)突變,所以在正常情況下每120s采集1次的頻率足夠滿足要求。成功發(fā)送數(shù)據(jù)后RFD節(jié)點(diǎn)進(jìn)入休眠狀態(tài),以節(jié)省能量;但是若探測(cè)到煙霧或者有人闖入,節(jié)點(diǎn)將以突發(fā)的方式傳送數(shù)據(jù),以求數(shù)據(jù)達(dá)到監(jiān)控終端的延時(shí)最小。[!--empirenews.page--]
2 節(jié)點(diǎn)硬件設(shè)計(jì)
由于節(jié)點(diǎn)的數(shù)量較大,為了方便生產(chǎn),將FFD和RFD設(shè)備的主要區(qū)別放在軟件方面;而硬件部分除了協(xié)調(diào)器具有UART接口外,其他都是相同的??傮w分為核心單元CC2430、傳感器模塊以及電源管理模塊3部分。硬件的總體框圖如圖2所示。
2.1 核心單元CC2430
CC2430是TI公司推出的支持ZigBee協(xié)議的SoC解決方案,可用于各種ZigBee無(wú)線節(jié)點(diǎn),包括協(xié)調(diào)器、路由器和終端設(shè)備。它延用了 CC2420芯片的架構(gòu),在單個(gè)芯片上整合了ZigBee射頻(RF)前端、存儲(chǔ)器和微控制器。CC2430F128內(nèi)嵌增強(qiáng)型8051 MCU,8 KB RAM,128 KBFlash,包含8路ADC、3個(gè)定時(shí)器、AESl28加密電路,MAC協(xié)處理器、看門(mén)狗定時(shí)器,以及21個(gè)可編程I/O引腳,支持4種不同程度的休眠模式。
2.2 傳感器模塊
(1)溫濕度傳感器
采用瑞士Sensirion傳感器公司推出的SHT1O溫濕度一體傳感器。該傳感器芯片由溫度和濕度探頭、校準(zhǔn)存儲(chǔ)器、14位模數(shù)轉(zhuǎn)換器、雙向I/O兩線串行輸出接口組成。其工作電壓為2.4~5.5 V,支持閑時(shí)自動(dòng)低功耗。測(cè)濕精度為±4.5%RH,25℃時(shí)測(cè)溫精度為±0.5℃。SHT10對(duì)溫度或濕度的測(cè)量由串行輸入的指令確定,測(cè)量值的輸出可選擇為8位、12位或14位。
(2)煙霧報(bào)警傳感器和人體紅外傳感器考慮到監(jiān)控人員對(duì)煙霧和闖入人員的信息需求只限為“有”或“沒(méi)有”,因此兩種傳感器只需在事件發(fā)生時(shí)傳遞一個(gè)脈沖信號(hào)即可。此脈沖經(jīng)過(guò)濾波限流后輸入CC2430的I/O口,將相應(yīng)的I/O口設(shè)置為上升沿中斷檢測(cè)模式即可檢測(cè)信號(hào)。
煙霧報(bào)警傳感器采用SH-533模塊,搭載TP1.1氣體傳感器,附帶蜂鳴器、LED報(bào)警指示;工作電壓7~20 V,靜態(tài)電流10 mA,檢測(cè)面積為10 m2左右。煙霧觸發(fā)輸出為5 V高電平脈沖信號(hào),由于CC2430工作電壓為3.3 V,所以用電阻對(duì)其做了簡(jiǎn)單的分壓。
人體紅外傳感器采用sH-912模塊,搭載PIR熱釋電傳感器并配合菲涅爾透鏡使用;工作電壓4.5~20 V,靜態(tài)電流50 μA,感應(yīng)角度110°,最大感應(yīng)距離7 m。紅外觸發(fā)輸出3.3 V脈沖信號(hào)。
2.3 電源管理模塊
為保證傳感器采集數(shù)據(jù)的及時(shí)傳遞,減小終端在競(jìng)爭(zhēng)信道過(guò)程中產(chǎn)生的碰撞造成能量的損耗,本系統(tǒng)中FFD設(shè)備采用不間斷供電(UPS)。即使在庫(kù)房掉電的情況下,F(xiàn)FD設(shè)備也能靠充電電池維持工作。
3 軟件設(shè)計(jì)
3.1 Z-Stack簡(jiǎn)介
Z-Stack是由TI公司推出的基于ZigBee標(biāo)準(zhǔn)的協(xié)議棧軟件,可在www.focu.ti.com.cn免費(fèi)下載。它包含了ZigBee標(biāo)準(zhǔn)描述的各層次的功能組件模塊,向開(kāi)發(fā)人員提供了一系列的API。通過(guò)調(diào)用這些API,可以實(shí)現(xiàn)ZigBee標(biāo)準(zhǔn)中各層次的相應(yīng)功能。基于這些功能模塊,可以更便捷地開(kāi)發(fā)出各種基于ZigBee協(xié)議的應(yīng)用產(chǎn)品。圖3為Z-Stack結(jié)構(gòu)。(注:Z-Stack協(xié)議棧核心的部分,包括安全模塊、路由模塊、Mesh 網(wǎng)絡(luò)支持等,都只以庫(kù)的方式提供。)
在終端設(shè)備嵌入式軟件中,操作系統(tǒng)模塊主要實(shí)現(xiàn)的是簡(jiǎn)單的任務(wù)輪詢和工作調(diào)度的功能,同時(shí)還需實(shí)現(xiàn)節(jié)點(diǎn)硬件的初始化和功能配置。這個(gè)操作系統(tǒng)模塊不是真正意義上的操作系統(tǒng),而是一個(gè)具有操作系統(tǒng)任務(wù)調(diào)度功能的模塊。該操作系統(tǒng)模塊在Z-Stack中由OSAL組件構(gòu)成。操作系統(tǒng)模塊的任務(wù)調(diào)度具體方式是:首先,為需要實(shí)現(xiàn)的功能建立任務(wù),且每一個(gè)任務(wù)有不同的事件。當(dāng)操作系統(tǒng)運(yùn)行時(shí),會(huì)不間斷地輪詢所有任務(wù)的標(biāo)志位。若標(biāo)志位有效,則表明該任務(wù)有事件發(fā)生,調(diào)用任務(wù)事件處理函數(shù),并在任務(wù)處理函數(shù)中,根據(jù)標(biāo)志位,判斷是什么事件發(fā)生。然后,系統(tǒng)做出對(duì)應(yīng)的操作,最后將標(biāo)志位清零。
3.2 樹(shù)簇拓?fù)涞男纬杉奥窂桨l(fā)現(xiàn)與維護(hù)
由于文章篇幅有限,不能依次介紹方案中比較關(guān)鍵的應(yīng)用層、硬件描述層、NWK層以及OSAL,以下著重描述NWK層的樹(shù)簇拓?fù)涞男纬梢约奥窂降陌l(fā)現(xiàn)與維護(hù)。
Z-Stack總共默認(rèn)65 000個(gè)設(shè)備入網(wǎng)。為保證網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的地址是唯一的,使用了分布式尋址方案,由父節(jié)點(diǎn)分配子節(jié)點(diǎn)地址。此種算法保證了控制端的數(shù)據(jù)包能夠精確地發(fā)送到指定設(shè)備,子節(jié)點(diǎn)也只能有一個(gè)父節(jié)點(diǎn),有助于網(wǎng)絡(luò)的可測(cè)量性。在網(wǎng)絡(luò)初始化之前,有幾個(gè)參數(shù)需要配置,分別是MAX_DEPTH、MAX_ROUTERS 和MAX_CHILDREN[6]。
MAX_DEPTH決定了網(wǎng)絡(luò)的最大深度。協(xié)調(diào)器在最頂層,位于深度0;它的子節(jié)點(diǎn)位于深度1,依此類推。MAX_CHILDREN決定了一個(gè)路由器或者一個(gè)協(xié)調(diào)器可以處理的最大子節(jié)點(diǎn)個(gè)數(shù)。MAX_ROUTERS決定了一個(gè)路由器或者一個(gè)協(xié)調(diào)器可以連接的最大路由器的個(gè)數(shù)。這個(gè)參數(shù)是 MAX_CHILDREN的一個(gè)子集,終端設(shè)備使用(MAX_CHILDREN-MAX_ROUTERS)剩下的地址空間。圖4為使用自定義棧配置后的網(wǎng)絡(luò)拓?fù)浜凸?jié)點(diǎn)地址分配示意圖。LAYER1最多20個(gè)節(jié)點(diǎn),其中包含6個(gè)路由節(jié)點(diǎn)。
在網(wǎng)絡(luò)初始化過(guò)程中,協(xié)調(diào)器先將自身設(shè)置為一個(gè)簇標(biāo)識(shí)符為0的簇頭,并向臨近的設(shè)備以廣播方式發(fā)送信標(biāo)幀。接收到信標(biāo)幀的設(shè)備(路由器或終端設(shè)備)向簇頭請(qǐng)求加入網(wǎng)絡(luò),如果作為父節(jié)點(diǎn)的協(xié)調(diào)器允許該設(shè)備的加入,則將其作為子節(jié)點(diǎn)加入到它的鄰居表中,同時(shí),請(qǐng)求加入的設(shè)備將協(xié)調(diào)器作為父節(jié)點(diǎn)加入到鄰居表中,成為從設(shè)備。已經(jīng)加入網(wǎng)絡(luò)的路由器也廣播信標(biāo)幀,以這種方式,直到所有設(shè)備都接入網(wǎng)絡(luò)。在接入網(wǎng)絡(luò)的同時(shí),廣播信標(biāo)幀的父節(jié)點(diǎn)會(huì)向接人的子節(jié)點(diǎn)分配唯一的 16位網(wǎng)絡(luò)短地址。圖5是網(wǎng)絡(luò)建立和節(jié)點(diǎn)入網(wǎng)流程。
終端設(shè)備沒(méi)有路由功能。它需要將數(shù)據(jù)發(fā)送給它的父節(jié)點(diǎn),父節(jié)點(diǎn)以它自己的名義執(zhí)行路由。當(dāng)路由器從應(yīng)用層或子節(jié)點(diǎn)收到單點(diǎn)發(fā)送數(shù)據(jù)包時(shí),NWK層會(huì)將其傳遞到下層。如果目標(biāo)節(jié)點(diǎn)是相鄰路由器中的一個(gè),則數(shù)據(jù)包被直接發(fā)送;否則,路由器會(huì)檢索它的路由表中與所要傳送的數(shù)據(jù)包的目標(biāo)地址相符合的記錄。如果存在與目標(biāo)地址相符合的路由記錄,則數(shù)據(jù)包將被發(fā)往記錄中的下一級(jí)地址;如果沒(méi)有發(fā)現(xiàn)任何相關(guān)的路由記錄,則路由器發(fā)起路徑尋找,數(shù)據(jù)包存儲(chǔ)在緩沖區(qū)中直到路徑尋找結(jié)束。如果數(shù)據(jù)包沿著某條路由路徑傳送失敗,這個(gè)路徑就被認(rèn)定是壞鏈,父節(jié)點(diǎn)將啟動(dòng)路徑修復(fù)。節(jié)點(diǎn)發(fā)起重新發(fā)現(xiàn)直到下一次數(shù)據(jù)包到達(dá)該節(jié)點(diǎn),標(biāo)志路徑修復(fù)完成。如果不能夠啟動(dòng)發(fā)現(xiàn)或者由于某種原因失敗了,節(jié)點(diǎn)則向數(shù)據(jù)包的源節(jié)點(diǎn)發(fā)送一個(gè)錯(cuò)誤包(RERR),它將重新啟動(dòng)路徑發(fā)現(xiàn)。[!--empirenews.page--]
3.3上位機(jī)GUI設(shè)計(jì)
在GUI中將節(jié)點(diǎn)編號(hào)和其IEEE地址綁定,實(shí)現(xiàn)了對(duì)突發(fā)事件地點(diǎn)的報(bào)警和定位。采用數(shù)據(jù)庫(kù),分別將每個(gè)節(jié)點(diǎn)上傳數(shù)據(jù)寫(xiě)入,同時(shí)貼上時(shí)間標(biāo)簽。監(jiān)控人員可以自由查看選定時(shí)段的倉(cāng)庫(kù)任意地點(diǎn)的狀況,同時(shí)GUI將突發(fā)事件數(shù)據(jù)以列表方式單獨(dú)抽取出來(lái),以供查閱方便。在工作時(shí)間可以將人體紅外傳感器采集的數(shù)據(jù)屏蔽,避免誤觸發(fā)。
4 運(yùn)行及測(cè)試結(jié)果
4.1 節(jié)點(diǎn)性能測(cè)試
通信距離測(cè)試:CC2430芯片工作電壓為3.3 V,射頻發(fā)送功率0 dBm,空曠地帶可靠傳輸距離30 m。功耗測(cè)試:CC2430射頻發(fā)射峰值功耗30 mA,接收峰值25 mA,休眠狀態(tài)0.1μA;為了保證實(shí)時(shí)監(jiān)控,傳感器得24小時(shí)工作,由此選擇了低功耗的傳感器。節(jié)點(diǎn)整機(jī)平均電流消耗17 mA。UPS功能測(cè)試:路由器接上220 V市電,正常入網(wǎng)后拔掉電源插頭,節(jié)點(diǎn)不掉電,不重啟;工作一段時(shí)間再插上電源,節(jié)點(diǎn)無(wú)死機(jī),不重啟,充電芯片給電池正常充電。表1為不同通信距離節(jié)點(diǎn)數(shù)據(jù)包丟包率比較。丟包率在2%以下時(shí),認(rèn)為數(shù)據(jù)可靠傳輸。
4.2 網(wǎng)絡(luò)測(cè)試
由于節(jié)點(diǎn)個(gè)體有差異,在實(shí)際布局時(shí),F(xiàn)FD設(shè)備間隔15~20 m,終端設(shè)備按照8 m2一個(gè)的密度布置。設(shè)置2條路由路徑,每條路徑中繼節(jié)點(diǎn)4個(gè),終端20個(gè),在網(wǎng)絡(luò)拓?fù)浞€(wěn)定后,關(guān)閉LAYER1的一個(gè)路由節(jié)點(diǎn),路由路徑中斷后, LAYER2及以下路由器的新路由路徑重新建立時(shí)間為26 s,斷路的所有節(jié)點(diǎn)全部重新入網(wǎng)的時(shí)間為134 s。網(wǎng)絡(luò)較快的自修復(fù)能力保證了網(wǎng)絡(luò)的魯棒性、系統(tǒng)的穩(wěn)定性和監(jiān)控的實(shí)時(shí)性,避免了多跳網(wǎng)絡(luò)中由于主要路由器故障導(dǎo)致大面積網(wǎng)絡(luò)癱瘓。
4.3 系統(tǒng)測(cè)試
節(jié)點(diǎn)正常工作時(shí)120 s采集傳送一次溫度濕度信號(hào),人體紅外傳感器和煙霧報(bào)警傳感器在觸發(fā)后,節(jié)點(diǎn)立即傳送信號(hào)。實(shí)驗(yàn)中人體接近監(jiān)控區(qū)域,監(jiān)控GUI在3 s內(nèi)發(fā)出報(bào)警信號(hào),并且隨著人體移動(dòng),移動(dòng)軌跡上的節(jié)點(diǎn)依次報(bào)警。煙霧信號(hào)測(cè)試也符合要求。
結(jié) 語(yǔ)
本文重點(diǎn)介紹了硬件平臺(tái)的搭建和對(duì)Z-Stack的NWK層的分析與修改,完成了對(duì)樹(shù)簇拓?fù)渚W(wǎng)絡(luò)的組建。所設(shè)計(jì)的節(jié)點(diǎn)能夠正確采集多種傳感器信號(hào),網(wǎng)絡(luò)也具有較好的穩(wěn)定性和自愈能力。系統(tǒng)在人體紅外傳感器的配合下,可以對(duì)監(jiān)控范圍內(nèi)活動(dòng)的人員實(shí)行跟蹤定位。該方案已經(jīng)應(yīng)用于某煙草倉(cāng)庫(kù)的自動(dòng)化管理項(xiàng)目中。
由于本設(shè)計(jì)中FFD設(shè)備與RFD設(shè)備射頻發(fā)送功率相同,通信距離較短,還不能顯著體現(xiàn)ZigBee樹(shù)簇多跳網(wǎng)絡(luò)優(yōu)勢(shì);給關(guān)鍵路由器添加射頻功放,拓展其通信距離,可在低功耗、大面積監(jiān)控領(lǐng)域中大顯身手。