◆靳堯凱 戴貽康 焦運良
(華北計算機系統工程研究所 北京 100083)
在工業生產、環境監測和日常生活中,要密切關注周圍環境的變化,只有適宜的環境,才能發揮最高的生產效率,創造出最大的效益。
隨著電子科學技術的不斷發展,使得人們對無線通信的傳輸質量、傳輸距離和快捷性的要求越來越高[1]。人們使用FF 基金會現場總線,CAN 總線等有線電纜的連接方式進行數據傳輸的監測系統有很大的局限性,例如設備位置較為固定,現場布線麻煩,不適宜復雜的環境,網絡脆弱,一個節點的失效可能導致整個系統癱瘓。隨著微機電系統(MEMS)的發展,片上系統解決方案的成熟,無線傳感已經開始走入尋常百姓家,發展越來越快,應用領域越來越廣闊,它的發展和運用給人們的生活和生產帶來了深遠的影響。
目前,短距離無線通信技術慢慢成為研究的一個熱點領域,它們包括無線局域網(Wi-Fi),藍牙(Bluetooth),紅外數據通信(ⅠrDA),近場通信(NFC),超寬帶通信(UWB),以及ZigBee 技術[2]。其中ZigBee 技術以其成本低廉,低功耗,高可靠性正廣泛應用于家庭和樓宇網絡,工業控制,公共場所等領域[3]。
知ZigBee 協議模型主要由應用層(APL)和網絡層(NWK),媒介訪問控制層(MAC)和物理層(PHY)組成,其中NWK 層和APL 層是被ZigBee 聯盟定義的,PHY 層和MAC 層是被ⅠEEE802.15.4標準定義的[4]。ZigBee 技術有以下幾個特點。
(1)功耗低:由于ZigBee 技術多用于偏僻或者人們難以到達的地方,因此ZigBee 設計之初就要求了低功耗,通常來說,一個ZigBee節點依靠兩節干電池即可工作6~24 個月[5]。
(2)成本低:由于ZigBee 協議棧簡單,工作流程清晰,開發和維護的成本較低,并且ZigBee 協議對外公開,不需要收取專利費,因此具有較低的成本,適合大規模使用。
(3)網絡容量大:一個ZigBee 網絡最高可以有65535 個數據模塊,此外,ZigBee 有27 個信道可以用來通信,而TⅠ公司所有支持ZigBee 底層協議的芯片CC2530 在2.4GHz 的頻段上,有16 個信道進行通信,這就保證了一個區域可以有多個網絡的存在。
(4)自組織能力:ZigBee 模塊上電后,協調器能夠自行建網,自動分配網絡地址,終端和路由器上電后能夠自行請求加入網絡。
(5)可靠性高:網絡通信采用了避免碰撞的機制,數據收發時不會產生沖突,并且預留了一些間隙專門為了一些需要固定帶寬的通信,每一個帶有明確地址的數據包在接收方接收后都會產生一個確認信息,數據可以重新發送,這些方法保證了數據在通信過程中不會丟失和出錯。
ZigBee 組網靈活多變,能夠組成星型、樹型、和網格型的網絡拓撲結構[6]。一般是根據現場需要決定選擇何種網絡結構。星型結構是ZigBee 網絡中最簡略的結構。一般由一個負責創建網絡維護網絡的協調器和一系列終端傳感器節點組成。由于每個傳感器只能和協調器傳遞信息,因此傳感器之間若想傳遞信息,只能通過整個網絡的核心—協調器,協調器將信息轉發后就可以實現傳感器之間的通信。星型拓撲網絡的結構如圖1 所示。

圖1 星型網絡結構圖
樹型結構是由一個負責創建網絡、維護網絡的協調器,若干個數據轉發用的路由器和一系列采集現場數據的傳感器組成的。協調器可以與路由器和傳感器節點互相連接,下一級的路由器仍然可以無線連接更下一級的路由器和傳感器。其結構圖可表示為如圖2 所示。
樹型網絡的優點是可以進行中繼路由,理論上經過路由,ZigBee的傳輸距離可以達到很遠,它的網絡結構比星型結構復雜,但是也相對靈活。缺點是信息的路由只有一條通道可以選擇。
網格結構:一個網絡只能有一個協調器節點,因此網格網絡結構也有一個網絡核心協調器,同時還有眾多的路由器和傳感器節點,與樹型網絡的結構組成相類似,而且這種結構與樹型網絡結構也相似,但是節點之間的路由通道增加為多條。主要表現是路由器節點之間可以直接進行通信,由此節點與節點之間的通信便可以通過路由器作為橋梁來通信,當某個路由器節點因故障而失去作用,節點之間的通信便可以繞過該路由器節點,通過其他的路徑進行通信。網格型的網絡結構可以參考圖3 所示。

圖2 樹型網絡結構圖

圖3 網格型網絡結構圖
終端即為傳感器,首先將各傳感器節點分散放置在不同位置,傳感器節點在上電工作后感知到周圍的溫度和濕度的電信號,并且經過放大,模擬/數字轉換,經傳感器節點內嵌的8051 核的單片機讀取傳感器數字信息后,經過運算得出真實的溫濕度值。
如果傳感器已經入網,則將這些信息以無線的方式先發送給路由器,路由器再轉發給協調器。協調器負責整個ZigBee 監測系統網絡的組建和維護,并且還需要接受來自路由器節點轉發來的傳感器感知到的信息。協調器上電后先組網,網絡組建成功后,路由器和各傳感器節點加入該網絡中來。當傳感器開始工作后,協調器開始接收路由器節點轉發過來的信息,通過串口顯示到LCD 屏幕上。
2.1.1 傳感器節點的硬件設計
傳感器節點包括了傳感器單元,電源供電單元,射頻收發單元,數據處理單元[7]。其結構圖如圖4 所示。

圖4 傳感器節點硬件結構圖
傳感器模塊用來感知周圍的溫濕度信息,并將采集到的溫濕度的模擬電信號經過模擬/數字轉換成可供CC2530 讀取的數字信號。CC2530 中的處理器單元負責控制處理信息的存儲,Ⅰ/O 口,控制射頻模塊的發送等,電源模塊負責給整個節點供電。
本設計需要采集周圍環境的溫度和濕度信息,采用的國內奧松公司推出的集溫度采集和濕度采集于一體的溫濕度傳感器DHT11。
ZigBee 芯片具有自己的協議棧,我們不需要知道協議棧里具體程序的運行流程,只需將傳感器采集到的信息,通過串口發送到ZigBee 芯片。ZigBee 芯片能夠將這些信息經過運算處理后以無線的方式發送出去,接收器按照某種配置,能夠實時、無誤的接受這些數據或者命令。因此,要求該ZigBee 芯片具有射頻,數據處理,同時該芯片業必須支持ZigBee 底層協議。選擇TⅠ公司推出的CC2530 芯片作為該設計的主控芯片。CC2530 芯片成本較低,內置增強型的8051 單片機,具有8Kb 的RAM,可在線下載,支持Z-Stack 協議棧。CC2530 運行功耗較低,能夠在一塊干電池的供電下持續運行6 個月以上。
2.1.2 協調器節點的硬件設計
協調器節點負責組建網絡,維護網絡,接收路由器轉發來的傳感器節點的數據,是整個網絡的核心。本質上來說,終端節點,協調器節點,路由器節點的硬件部分一樣,只是終端外接了一個傳感器只需要下載不同功能的代碼就可以實現不同的功能。因此協調器節點的硬件電路與傳感器節點的硬件電路相同,只是少了傳感器,這里不再贅述。
2.1.3 路由器節點的硬件設計
如果測量的范圍過大,且障礙物過多,那么協調器與終端節點的數據發送可能會中斷,因此設置一個路由器節點負責數據的轉發。由于路由器節點也沒有傳感器,因此該節點與協調器節點的硬件相同,下載對應的代碼即可實現路由功能。
2.2.1 Z-Stack 協議棧
TⅠ公司除了推出其公司的ZigBee 芯片,也公開了很完整實用的協議棧供開發者下載使用。ZigBee 協議的內層分為不同的兩大部分[8],一部分是由ⅠEEE802.15.4 標準規范的物理層和媒體訪問控制層,另一部分則是由ZigBee 聯盟規范制定的網絡層和應用層,Z-Stack 就是將這些規范打包整理,并且用C 語言呈現出來。
Z-Stack 相當于一個簡易的操作系統,在協議棧中的文件夾Zmain.c 是它的主函數,負責整個程序大框架的運行,它有兩個重要的功能,一個是進行ZigBee 的初始化操作,另一個是執行該操作系統,保證ZigBee 的正常工作。
2.2.2 傳感器(終端)節點軟件設計
終端節點主要利用傳感器來感知環境收集數據,然后將溫濕度信息打包發送給路由器[9]。傳感器節點首先需要初始化并且嘗試加入協調器已經創建成功的網絡中,然后將自己設備綁定到父節點上,就可以將終端收集到的溫濕度信息以無線通信的方式傳送到路由器上。
先初始化,之后開始掃描信道,查看附近是否有可以加入的ZigBee 網絡,若發現有可以加入的網絡,則終端會向協調器發送請求幀請求加入網絡。若協調器收到該幀并且同意其入網,則會向傳感器(終端)發送一個16 位獨一無二的地址。加入網絡成功后進入休眠模式,當定時時間到,讀取傳感器的數值,存儲在數據緩沖區,并且在主控芯片的控制下打包將數據發送給路由器,發送不成功再次發送,直到成功后再次進入休眠狀態,等待下一次的周期性發送。
2.2.3 協調器節點軟件設計
協調器決定了當前環境網絡的存在與否,所以它處于非常重要的位置。在該設計中它的軟件主要實現的功能包括創建該區域的ZigBee 網絡,同時負責其他節點的入網事項,在穩定工作后還需要接收相應的數據信息,還需要將收到的數據通過串口加上屏幕驅動程序在LCD 上顯示。協調器的軟件工作流程如圖5 所示。
(1)無線傳感器網絡的建立和加入。開發者不需要關注協議棧的細節部分,只需要知道數據的流動過程,并且使用協議棧提供的相關函數實現我們需要的功能即可。
(2)數據的接收。在ZigBee 網絡的正常工作中,協調器會將收到的數據打包儲存起來,因此只需要通過相關函數找到存儲起來的數據,就可以經過相應的驅動程序顯示在LCD 屏幕上。
2.2.4 路由器節點軟件設計
本設計采用樹型網絡拓撲結構,在中間有一級數據的中繼,這一功能由路由器實現。路由器的工作流程與終端的工作流程相似,上電后先進行軟件和硬件的初始化操作,然后進行信道的掃描,選擇一個信道,然后進行網絡的搜索,搜索到合適的網絡后請求加入。
路由器的唯一功能就是進行數據的轉發,下載相應的代碼后,設備以路由器的身份入網后,就可以實現數據的轉發。
硬件:協調器節點,路由器節點、終端節點、仿真器、LCD 顯示屏,PC 機。軟件:ⅠAR Embeded workbench,串口調試助手。
本設計采用樹型網絡,由終端節點采集溫濕度數據,將采集到的數據發送給路由器,經過路由器轉發給協調器,協調器收到溫濕度信息后驅動LCD 顯示屏顯示當前溫濕度,并且在測試過程中可以打開串口調試助手查看串口上發送的具體數據。
將相應的代碼經過編譯,環境配置后下載到對應的模塊中,待各個模塊初始化完成后,便可測得相應的溫濕度信息。打開串口調試助手,可以看到在串口上的溫濕度信息每隔10 秒鐘刷新一下。

圖5 協調器軟件工作流程
綜合以上設計結果,可知,該設計基本符合要求。但本設計還存在以下的不足:本設計中只做了三個節點,完成了最基礎的樹型網絡組建,但是往往在實際應用時,會有更多的節點參與進來。因此本設計可考慮增加傳感器,增加路由器節點,設計成更為復雜的網狀結構。另外本設計采用的芯片RAM 只有8K,若要設計更復雜的功能,可以考慮加片外RAM 或者功能更為強大的芯片。