基于ZigBee技術的環境監測系統設計
摘要:以CC2530和zstack協議棧為平臺,給出了基于ZigBee技術的溫度、光照度無線傳感器網絡的設計方法,同時對協議棧的運行機制、組網過程及應用層的數據采集進行了分析與設計。實驗結果表明,該設計方法可行,各節點工作良好,能成功實現多跳網絡的數據采集。
本文引用地址:http://www.j9360.com/article/201610/306816.htm0 引言
各行各業尤其是工農業生產、環境監測等領域,都對無線數字監測系統提出了極大的需求和更高的要求。無線傳感網的迅速發展并逐漸走向成熟,使得這一需求得到了較好的滿足。基于ZigBee技術的無線傳感網具有自組織、低功耗、以數據為中心、抗毀性強和無需架設網絡設施等優勢,可以在外界環境十分惡劣的條件下,完成其他監測手段無法完成的任務,代表了數字監測的一個新的發展方向。本文以TI公司的CC2530和zstack協議棧為平臺,給出了基于ZigBee技術的溫度及光照度無線傳感器網絡的設計方法。
1 系統總體設計
本文設計的基于ZigBee技術的無線傳感器網絡由一個協調器節點、若干路由節點和眾多傳感節點組成,圖1所示是其系統總體結構。其中,傳感節點負責對環境溫度等數據的監測,然后通過路由節點以多跳方式將數據發送給協調器節點,協調器節點負責將數據上報給監測中心PC機。

2 節點硬件設計
根據節點在系統中的應用不同,可分為傳感節點、路由節點和協調器節點。各節點的功能不盡相同,可分為數據采集、數據處理、無線通信、能量供應和串口通信等功能。各功能模塊采用模塊化的方法設計,這樣可以實現各模塊的并行設計、調試,縮短開發周期,同時也便于后期更換和擴展傳感器,從而方便后期維護或移植到其他監測領域。
2.1 ZigBee模塊
本設計中的各節點選用CC2530芯片作為ZigBee模塊,實現數據處理及ZigBee無線通信功能。CC2530內部集成了一個高性能2.4 GHz射頻收發器和一個增強型8051微處理器,最大256 KB可編程FLASH、8 KB的RAM并提供了一套廣泛的外設集,為2.4 G IEEE 802.15.4和ZigBee應用提供了一種SOC解決方案。該模塊的電路如圖2所示,圖2中包含了最小系統、射頻前端及I/O接口電路。

2.2 數據采集模塊
各傳感節點通過一線制數字溫度傳感器DS18B20和CDS光敏電阻5 516對環境溫度、光照度進行數據采集,圖3所示是數據采集模塊電路圖。其中,DS18B20可實現-55~+125℃測量范圍及最高12位測溫分辨率,測溫精度可達±0.062 5℃,供電電壓范圍為+3~+5.5 V。本設計中供電電壓選擇來自LD1117穩壓芯片的+3.3 V輸出,數據線DQ和CC2530芯片的P2.0相連實現一線接口,如圖3(a)所示。5516光敏電阻的亮電阻為5~10 kΩ,暗電阻為500 kΩ,電路如圖3(b)所示,輸出電壓為0~2 V,送至P0.5進行AD轉換。

3 節點軟件設計
節點軟件是在TI公司的ZigBee協議棧——Z-stack基礎上開發設計的。該協議棧支持ZigBee網絡的建立和加入、自組網、多跳傳輸和動態網絡拓撲。
3.1 Z-stack協議棧的運行機制
OSAL是TI公司開發的用于Z-Stack協議棧的一個輪轉查詢式的操作系統。OSAL把優先級放在最重要的地位,優先級高的任務中的所有事件都具有很高的優先級,只要優先級高的任務有事件沒有處理完,就一直處理,直到所有事件都得到處理,才去查詢下一個任務的事件。另外,即使當前在處理的任務中有兩個以上事件等待處理,處理完一件后,也要回頭再去查詢優先級更高的任務。只有在優先級更高的任務沒有事件要處理的情況下,才會處理原來任務優先級第二高的事件。如果此時發現優先級高的任務有了新的事件要處理,則立刻處理該事件。通過這種調度方式,就賦予了優先級高的任務最大的權利,盡可能保證高優先級任務的每一個事件都能得到最及時的處理。
3.2 ZigBee網絡的組網過程
ZigBee網絡的組網過程包括網絡建立和加入網絡兩個方面,該部分是通過Z-Stack協議棧各層之間的原語通信實現的。協調器節點負責網絡的參數配置和建立,應用層通過ZDO層調用網絡層函數NLME NetworkFormationRequest(),在指定信道上進行主動掃描,即發送MAC層信標請求命令,探測該信道上已存在的網絡;然后網絡層根據主動掃描結果,設置PAN ID,網絡地址,擴展PAN ID等參數;最后通知各應用端點一個新的ZigBee網絡已經建立起來了口其網絡建立過程如圖4所示。

加入網絡有多種方式,通過連接來加入網絡,重新加入網絡,孤立點加入網絡,預先配置加入網絡等。子節點通過連接方式加入網絡的過程圖如圖5所示。

子節點應用層通過ZDO層調用網絡層函數NLME_NetworkDiscoveryRequest(),在指定信道上進行主動掃描,然后監聽一段時間看是否收到信標。通過多次發送MAC層信標請求命令,子節點可以知道周圍已存在網絡的有關信息,從而確定要加入網絡的PAN ID,然后通過NLME_Join Request()函數向要加入的節點發送MAC層連接請求命令。如果收到成功的MAC層連接響應命令,則可獲取父節點所分配的網絡地址。如果子節點是終端節點,則網絡加入過程到此完成。而如果子節點是路由節點,則子節點還需通過NLME_StartRouterRequest()函數啟動路由器。無論子節點是傳感節點還是路由節點,最后都要將加入網絡的結果通知各應用端點。
協調器和路由器節點可以通過NLME_PermitJoining Request()函數決定是否允許子節點加入到自己的網絡,這樣可以方便地控制子節點加入到指定的一個路由節點中,從而實現多跳組網。
3.3 數據采集程序設計
采用DS18B20作為測溫元件,其硬件電路相當簡單,但對于單片機來說,為獲取一次溫度數據,需要先對其執行復位操作,發送ROM命令和RAM命令操作,啟動溫度的轉換;等待溫度轉換完成后,再重復執行上述三步操作,才能實現溫度的讀取。根據DS18B20配置寄存器的不同,可分為9、10、11和12位的分辨率,所需轉換時間最小為93.75 ms,最大為750 ms。也就是說,在啟動溫度轉換后,必須等待較長的時間才能進行溫度的讀取操作。為了避免無謂的等待,本設計中將溫度的測量分為兩個事件:溫度的“轉換”和“讀取”事件。溫度采集時,可以設置一個“轉換”事件定時器。在處理“轉換”事件時,先向DS18B20發送溫度轉換命令,緊接著設置一個“讀取”事件定時器,然后返回OSAL處理其他事件,從而保證系統能及時地響應其他事件。在處理“讀取”事件時,只需要直接讀取溫度,然后再次設置“轉換”事件定時器,實現周期性數據采集。溫度傳感器的“轉換”和“讀取”事件處理流程如圖6所示。

4 實驗結果分析
4.1 組網實驗
組網測試時,通過TI公司的CC2531UD USB DONGLE和SmartRF Packet_Sniffer軟件對空中無線數據包進行抓包分析。子節點加入網絡過程中所抓到的數據包如圖7所示。子節點(IEEE地址為0x001248000201781D)先發出一個MAC層信標請求命令,接著協調器節點(網絡地址為0x0000)發出了一個信標幀作為響應。然后,子節點又發出一個MAC層連接請求命令,接著協調器節點返回一個應答幀。最后,子節點向協調器節點發送一個MAC層數據請求命令,接著協調器節點發出一個MAC層連接響應命令作為響應,為子節點分配一個網絡地址0x0001。通過數據包圖可見子節點已成功加入網絡。

4.2 數據采集實驗
實驗中,設定各傳感節點每隔2 s進行一次數據采集,然后將采集數據經過路由節點發送至協調器,協調器通過RS232串口將數據上傳給PC機,最終顯示的采集數據如圖8所示。圖8中的采集數據分別是節點號為10 650和10 120的2個傳感節點通過路由節點2 181(父節點)發送至協調器的。實驗時人工測量溫度值為20.3℃,與采集到的數據基本吻合。

5 結語
基于ZigBee技術的無線傳感網可以較好滿足各行各業對無線數字監測的需求。本文以CC2530和Z-stack協議棧為平臺,組建了一個多跳ZigBee網絡,實現對環境溫度、光照度等數據的無線監測。實驗結果表明,本設計多跳組網成功,數據采集結果正確。
評論