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