基于 ZigBee 技術(shù)的環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
引言
本文引用地址:http://cafeforensic.com/article/202204/433332.htm各行各業(yè)尤其是工農(nóng)業(yè)生產(chǎn)、環(huán)境監(jiān)測(cè)等領(lǐng)域,都對(duì)無線數(shù)字監(jiān)測(cè)系統(tǒng)提出了極大的需求和更高的要求。無線傳感網(wǎng)的迅速發(fā)展并逐漸走向成熟,使得這一需求得到了較好的滿足?;赯igBee技術(shù)的無線傳感網(wǎng)具有自組織、低功耗、以數(shù)據(jù)為中心、抗毀性強(qiáng)和無需架設(shè)網(wǎng)絡(luò)設(shè)施等優(yōu)勢(shì),可以在外界環(huán)境十分惡劣的條件下,完成其他監(jiān)測(cè)手段無法完成的任務(wù),代表了數(shù)字監(jiān)測(cè)的一個(gè)新的發(fā)展方向。本文以TI公司的CC2530和zstack協(xié)議棧為平臺(tái),給出了基于ZigBee技術(shù)的溫度及光照度無線傳感器網(wǎng)絡(luò)的設(shè)計(jì)方法。
1、系統(tǒng)總體設(shè)計(jì)
本文設(shè)計(jì)的基于ZigBee技術(shù)的無線傳感器網(wǎng)絡(luò)由一個(gè)協(xié)調(diào)器節(jié)點(diǎn)、若干路由節(jié)點(diǎn)和眾多傳感節(jié)點(diǎn)組成,圖1所示是其系統(tǒng)總體結(jié)構(gòu)。其中,傳感節(jié)點(diǎn)負(fù)責(zé)對(duì)環(huán)境溫度等數(shù)據(jù)的監(jiān)測(cè),然后通過路由節(jié)點(diǎn)以多跳方式將數(shù)據(jù)發(fā)送給協(xié)調(diào)器節(jié)點(diǎn),協(xié)調(diào)器節(jié)點(diǎn)負(fù)責(zé)將數(shù)據(jù)上報(bào)給監(jiān)測(cè)中心PC機(jī)。
圖1系統(tǒng)總體結(jié)構(gòu)
2、節(jié)點(diǎn)硬件設(shè)計(jì)
根據(jù)節(jié)點(diǎn)在系統(tǒng)中的應(yīng)用不同,可分為傳感節(jié)點(diǎn)、路由節(jié)點(diǎn)和協(xié)調(diào)器節(jié)點(diǎn)。各節(jié)點(diǎn)的功能不盡相同,可分為數(shù)據(jù)采集、數(shù)據(jù)處理、無線通信、能量供應(yīng)和串口通信等功能。各功能模塊采用模塊化的方法設(shè)計(jì),這樣可以實(shí)現(xiàn)各模塊的并行設(shè)計(jì)、調(diào)試,縮短開發(fā)周期,同時(shí)也便于后期更換和擴(kuò)展傳感器,從而方便后期維護(hù)或移植到其他監(jiān)測(cè)領(lǐng)域。
2.1ZigBee模塊
本設(shè)計(jì)中的各節(jié)點(diǎn)選用CC2530芯片作為ZigBee模塊,實(shí)現(xiàn)數(shù)據(jù)處理及ZigBee無線通信功能。CC2530內(nèi)部集成了一個(gè)高性能2.4GHz射頻收發(fā)器和一個(gè)增強(qiáng)型8051微處理器,最大256KB可編程FLASH、8KB的RAM并提供了一套廣泛的外設(shè)集,為2.4GIEEE802.15.4和ZigBee應(yīng)用提供了一種SOC解決方案。該模塊的電路如圖2所示,圖2中包含了最小系統(tǒng)、射頻前端及I/O接口電路。
2.2數(shù)據(jù)采集模塊
各傳感節(jié)點(diǎn)通過一線制數(shù)字溫度傳感器DS18B20和CDS光敏電阻5516對(duì)環(huán)境溫度、光照度進(jìn)行數(shù)據(jù)采集,圖3所示是數(shù)據(jù)采集模塊電路圖。其中,DS18B20可實(shí)現(xiàn)-55~+125℃測(cè)量范圍及最高12位測(cè)溫分辨率,測(cè)溫精度可達(dá)±0.0625℃,供電電壓范圍為+3~+5.5V[3]。本設(shè)計(jì)中供電電壓選擇來自LD1117穩(wěn)壓芯片的+3.3V輸出,數(shù)據(jù)線DQ和CC2530芯片的P2.0相連實(shí)現(xiàn)一線接口,如圖3(a)所示。5516光敏電阻的亮電阻為5~10kΩ,暗電阻為500kΩ,電路如圖3(b)所示,輸出電壓為0~2V,送至P0.5進(jìn)行AD轉(zhuǎn)換。
3、節(jié)點(diǎn)軟件設(shè)計(jì)
節(jié)點(diǎn)軟件是在TI公司的ZigBee協(xié)議?!猌-stack基礎(chǔ)上開發(fā)設(shè)計(jì)的。該協(xié)議棧支持ZigBee網(wǎng)絡(luò)的建立和加入、自組網(wǎng)、多跳傳輸和動(dòng)態(tài)網(wǎng)絡(luò)拓?fù)洹?/p>
3.1 Z-stack協(xié)議棧的運(yùn)行機(jī)制
OSAL是TI公司開發(fā)的用于Z-Stack協(xié)議棧的一個(gè)輪轉(zhuǎn)查詢式的操作系統(tǒng)。OSAL把優(yōu)先級(jí)放在最重要的地位,優(yōu)先級(jí)高的任務(wù)中的所有事件都具有很高的優(yōu)先級(jí),只要優(yōu)先級(jí)高的任務(wù)有事件沒有處理完,就一直處理,直到所有事件都得到處理,才去查詢下一個(gè)任務(wù)的事件。另外,即使當(dāng)前在處理的任務(wù)中有兩個(gè)以上事件等待處理,處理完一件后,也要回頭再去查詢優(yōu)先級(jí)更高的任務(wù)。只有在優(yōu)先級(jí)更高的任務(wù)沒有事件要處理的情況下,才會(huì)處理原來任務(wù)優(yōu)先級(jí)第二高的事件。如果此時(shí)發(fā)現(xiàn)優(yōu)先級(jí)高的任務(wù)有了新的事件要處理,則立刻處理該事件。通過這種調(diào)度方式,就賦予了優(yōu)先級(jí)高的任務(wù)最大的權(quán)利,盡可能保證高優(yōu)先級(jí)任務(wù)的每一個(gè)事件都能得到最及時(shí)的處理。
3.2 ZigBee網(wǎng)絡(luò)的組網(wǎng)過程
ZigBee網(wǎng)絡(luò)的組網(wǎng)過程包括網(wǎng)絡(luò)建立和加入網(wǎng)絡(luò)兩個(gè)方面,該部分是通過Z-Stack協(xié)議棧各層之間的原語通信實(shí)現(xiàn)的。協(xié)調(diào)器節(jié)點(diǎn)負(fù)責(zé)網(wǎng)絡(luò)的參數(shù)配置和建立,應(yīng)用層通過ZDO層調(diào)用網(wǎng)絡(luò)層函數(shù)NLME_NetworkFormationRequest(),在指定信道上進(jìn)行主動(dòng)掃描,即發(fā)送MAC層信標(biāo)請(qǐng)求命令,探測(cè)該信道上已存在的網(wǎng)絡(luò);然后網(wǎng)絡(luò)層根據(jù)主動(dòng)掃描結(jié)果,設(shè)置PANID,網(wǎng)絡(luò)地址,擴(kuò)展PANID等參數(shù);最后通知各應(yīng)用端點(diǎn)一個(gè)新的ZigBee網(wǎng)絡(luò)已經(jīng)建立起來了。其網(wǎng)絡(luò)建立過程如圖4所示。
加入網(wǎng)絡(luò)有多種方式,通過連接來加入網(wǎng)絡(luò),重新加入網(wǎng)絡(luò),孤立點(diǎn)加入網(wǎng)絡(luò),預(yù)先配置加入網(wǎng)絡(luò)等。子節(jié)點(diǎn)通過連接方式加入網(wǎng)絡(luò)的過程圖如圖5所示。
子節(jié)點(diǎn)應(yīng)用層通過ZDO層調(diào)用網(wǎng)絡(luò)層函數(shù)NLMENetworkDiscoveryRequest(),在指定信道上進(jìn)行主動(dòng)掃描,然后監(jiān)聽一段時(shí)間看是否收到信標(biāo)。通過多次發(fā)送MAC層信標(biāo)請(qǐng)求命令,子節(jié)點(diǎn)可以知道周圍已存在網(wǎng)絡(luò)的有關(guān)信息,從而確定要加入網(wǎng)絡(luò)的PANID,然后通過NLME_JoinRequest()函數(shù)向要加入的節(jié)點(diǎn)發(fā)送MAC層連接請(qǐng)求命令。如果收到成功的MAC層連接響應(yīng)命令,則可獲取父節(jié)點(diǎn)所分配的網(wǎng)絡(luò)地址。如果子節(jié)點(diǎn)是終端節(jié)點(diǎn),則憫絡(luò)加入過程到此完成。而如果子節(jié)點(diǎn)是路由節(jié)點(diǎn),則子節(jié)點(diǎn)還需通過NLME.
StartRouterRequestO函數(shù)啟動(dòng)路由器。無論子節(jié)點(diǎn)是傳感節(jié)點(diǎn)還是路由節(jié)點(diǎn)最后都要將加入網(wǎng)絡(luò)的結(jié)果通知各應(yīng)用端點(diǎn)。
協(xié)調(diào)器和路由器節(jié)點(diǎn)可以通過NLME_PermitJoiningRequest()函數(shù)決定是否允許子節(jié)點(diǎn)加入到自己的網(wǎng)絡(luò),這樣可以方便地控制子節(jié)點(diǎn)加入到指定的一個(gè)路由節(jié)點(diǎn)中,從而實(shí)現(xiàn)多跳組網(wǎng)。
3.3 數(shù)據(jù)采集程序設(shè)計(jì)
采用DS18B20作為測(cè)溫元件,其硬件電路相當(dāng)簡(jiǎn)單,但對(duì)于單片機(jī)來說,為獲取一次溫度數(shù)據(jù),需要先對(duì)其執(zhí)行復(fù)位操作,發(fā)送ROM命令和RAM命令操作,啟動(dòng)溫度的轉(zhuǎn)換;等待溫度轉(zhuǎn)換完成后,再重復(fù)執(zhí)行上述三步操作,才能實(shí)現(xiàn)溫度的讀取。根據(jù)DS18B20配置寄存器的不同,可分為9、10、11和12位的分辨率,所需轉(zhuǎn)換時(shí)間最小為93.75ms,最大為750ms。也就是說,在啟動(dòng)溫度轉(zhuǎn)換后,必須等待較長(zhǎng)的時(shí)間才能進(jìn)行溫度的讀取操作。為了避免無謂的等待,本設(shè)計(jì)中將溫度的測(cè)量分為兩個(gè)事件:溫度的“轉(zhuǎn)換”和“讀取”事件。溫度采集時(shí),可以設(shè)置一個(gè)“轉(zhuǎn)換”事件定時(shí)器。在處理“轉(zhuǎn)換”事件時(shí),先向DS18B20發(fā)送溫度轉(zhuǎn)換命令,緊接著設(shè)置一個(gè)“讀取”事件定時(shí)器,然后返回OSAL處理其他事件,從而保證系統(tǒng)能及時(shí)地響應(yīng)其他事件。在處理“讀取”事件時(shí),只需要直接讀取溫度,然后再次設(shè)置“轉(zhuǎn)換”事件定時(shí)器,實(shí)現(xiàn)周期性數(shù)據(jù)采集。溫度傳感器的“轉(zhuǎn)換”和“讀取”事件處理流程如圖6所示。
4、實(shí)驗(yàn)結(jié)果分析
4.1組網(wǎng)實(shí)驗(yàn)
組網(wǎng)測(cè)試時(shí),通過TI公司的CC2531UDUSBDONGLE和SmartRFPacket_Sniffer軟件對(duì)空中無線數(shù)據(jù)包進(jìn)行抓包分析。子節(jié)點(diǎn)加入網(wǎng)絡(luò)過程中所抓到的數(shù)據(jù)包如圖7所示。子節(jié)點(diǎn)(IEEE地址為0x00124B0002017B1D)先發(fā)出一個(gè)MAC層信標(biāo)請(qǐng)求命令,接著協(xié)調(diào)器節(jié)點(diǎn)(網(wǎng)絡(luò)地址為0x0000)發(fā)出了一個(gè)信標(biāo)幀作為響應(yīng)。然后,子節(jié)點(diǎn)又發(fā)出一個(gè)MAC層連接請(qǐng)求命令,接著協(xié)調(diào)器節(jié)點(diǎn)返回一個(gè)應(yīng)答幀。最后,子節(jié)點(diǎn)向協(xié)調(diào)器節(jié)點(diǎn)發(fā)送一個(gè)MAC層數(shù)據(jù)請(qǐng)求命令,接著協(xié)調(diào)器節(jié)點(diǎn)發(fā)出一個(gè)MAC層連接響應(yīng)命令作為響應(yīng),為子節(jié)點(diǎn)分配一個(gè)網(wǎng)絡(luò)地址0x0001。通過數(shù)據(jù)包圖可見子節(jié)點(diǎn)已成功加入網(wǎng)絡(luò)。4.2數(shù)據(jù)采集實(shí)驗(yàn)
實(shí)驗(yàn)中,設(shè)定各傳感節(jié)點(diǎn)每隔2s進(jìn)行一次數(shù)據(jù)采集,然后將采集數(shù)據(jù)經(jīng)過路由節(jié)點(diǎn)發(fā)送至協(xié)調(diào)器,協(xié)調(diào)器通過RS232串口將數(shù)據(jù)上傳給PC機(jī),最終顯示的采集數(shù)據(jù)如圖8所示。圖8中的采集數(shù)據(jù)分別是節(jié)點(diǎn)號(hào)為10650和10120的2個(gè)傳感節(jié)點(diǎn)通過路由節(jié)點(diǎn)2181(父節(jié)點(diǎn))發(fā)送至協(xié)調(diào)器的。實(shí)驗(yàn)時(shí)人工測(cè)量溫度值為20.3℃,與采集到的數(shù)據(jù)基本吻合。
5、結(jié)語
基于ZigBee技術(shù)的無線傳感網(wǎng)可以較好滿足各行各業(yè)對(duì)無線數(shù)字監(jiān)測(cè)的需求。本文以CC2530和Z-stack協(xié)議棧為平臺(tái),組建了一個(gè)多跳ZigBee網(wǎng)絡(luò),實(shí)現(xiàn)對(duì)環(huán)境溫度、光照度等數(shù)據(jù)的無線監(jiān)測(cè)。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)多跳組網(wǎng)成功,數(shù)據(jù)采集結(jié)果正確。
評(píng)論