李少偉,王喜喜,傅 詩
(江漢大學 數學與計算機科學學院,武漢 430056)
環境監控系統廣泛應用于實驗室、工廠、農業以及軍工等各個領域.設計完善的環境監控系統可以大大減少災難事故的發生,從而間接提高安全生產效率.文獻[1]提出了一種基于Android 和Zigbee 的農業環境監控系統,可以實現移動端對環境的實時監控.但由于其所使用的傳感器與單片機之間采用固定的RS232 接口連接,因此整個系統的可擴展性較差;梁灼永、佟偉等人在論文中介紹了若干專用環境監控系統[2,3],其最大的特點就是針對特定的系統有完善的監控功能.但由于系統專用性強,無法實現大范圍推廣,同時不具備遠程訪問能力;文獻[4,5]將WIFI 及網絡技術引入系統中,但最終僅僅實現了局域網內的訪問,同時傳感器數據接口采用了與文獻[1]相似的方法,因此擴展性較差;文獻[6]采用了數據庫技術,將傳感器節點數據存放于數據庫中,可以方便對數據的各種操作.但是該文中將傳感器直接與服務器連接,這種做法在工程實踐中幾乎沒有實用性;文獻[7]中魏訪將Zigbee 技術與傳感器相結合,解決了傳感器部署的難題.但由于該系統僅僅實現了溫濕度監控,而且沒有引入必要的通信協議,導致無法形成復合傳感器網絡,降低了系統可擴展性,同時其監控端布置于PC 機,無法實現遠程監控.
綜合考慮以上系統中存在的不足,本文提出了一種基于Zigbee 無線傳感網絡與移動數據訪問技術的環境監控系統.為了實現在不增加接口硬件的情況下對不同傳感模塊的讀寫,該系統利用Zigbee 模塊內置的51 單片機系統模擬不同傳感網絡的接口協議,從實現對傳感模塊的數據讀取,提高了系統的可擴展性;在系統的設計過程中引入了ZStack 協議棧以及移動端訪問技術,實現了對環境的溫濕度、煙霧、漏水檢測等六個方面的監控;利用數據庫技術強大的存儲能力,將獲得的數據存儲于其中,方便任意網絡設備對環境系統的遠程監控.該系統在提高系統集成度的同時,簡化了傳感器的部署,提高了系統可擴展性,實現了移動端對監控系統的遠程訪問.
如圖1所示為環境監控系統的結構框圖.

圖1 系統結構框圖
從圖1可知,整個系統由Zigbee 無線傳感網絡、網關、數據庫服務器以及客戶端組成,其組成與功能如下:
(1)Zigbee 無線傳感網絡包含節點傳感器與協調器.其中的節點傳感器由傳感器模塊與基于CC2530 的Zigbee 無線數傳模塊組成.CC2530 模塊中內建有51 單片機系統,可以實現對傳感器數據的采集與打包,并通過其中的無線Zigbee 模塊定時發送至協調器;協調器則接收來自傳感器的數據,并將數據傳送至網關.由于ZStack 協議棧的存在,因此節點傳感器的數量可動態增減.
(2)基于Cortex A8 的網關上運行有一套Linux 操作系統.該系統一方面通過串口接口來自協調器的數據,另一方面則將數據通過網絡發送至數據庫服務器.
(3)數據庫服務器首先接收來自網關的傳感器數據,然后通過特定的協議對數據包進行解析并標以時間標簽,最后將數據存儲于表中,供遠程客戶端訪問.
(4)客戶端程序通過TCP/IP 協議連接到數據庫服務器上的數據服務程序,實時獲取當前環境信息.
為了簡化軟硬件設計上的難度,本系統中所有的無線數傳模塊均具有相同的硬件結構,同時引入ZStack 協議,并對數據傳輸格式進行了定義,實現了基于Zigbee 的無線傳感網絡.如圖2所示為基于CC2530 的無線數據傳輸系統硬件電路圖.
由圖2可知,CC2530 模塊共引出19 個I/O 引腳,這些引腳可全部配置為通用I/O 方式或者根據應用的需要,將其中的部分配置為模擬輸入引腳.對于本系統而言,所選用的傳感器接口共分為三種,分別是普通I/O 口、IIC 接口以及模擬數據接口.因此,我們可以利用CC2530 模塊中的單片機系統直接實現對I/O 端口以及模擬數據的讀取.但是對于IIC 接口,則需要利用普通I/O 口模擬實現IIC 協議[8].
由于本系統中引入了TI 公司的ZStack 協議棧技術,因此Zigbee 無線傳感網絡中的節點數傳模塊與協調器均具有相同的硬件結構以及相似的軟件結構.如表1所示為ZStack 協議棧中用戶需要修改的關鍵模塊.
在編程實現表1中所有模塊功能的前提下,所有基于ZStack 協議棧的節點傳感器均可以動態加入或者撤出整個傳感網絡.而且其傳輸過程對程序員而言完全透明,大大降低了數傳模塊的軟件開發難度.
在CC2530 模塊中并未集成IIC 接口,因此需要利用普通I/O 接口模擬IIC 總線協議中的SCL 和SDA 接口,從而實現對傳感器數據的讀取.總體而言,IIC 總線的工作流程包括以下幾個方面:

圖2 基于CC2530 無線數傳模塊

表1 ZStack 關鍵模塊
(1)起始和結束.如圖3所示為IIC 總線的起始和結束時序圖.當總線處于空閑狀態時,且SCL 處于高電平,SDA 線上的下降沿表示起始信號;當總線上的數據傳輸完成后,且SCL 處于高電平時,SDA 線上的上升沿表示結束信號.

圖3 總線起始與結束
(2)數據有效性.如圖4所示為總線上數據傳輸的時序圖.在數據傳輸過程中,一旦SCL 處于高電平狀態,SDA 上的數據則必須保持穩定.

圖4 總線數據有效性
(3)應答.當主機向從機發送完一個字節的數據后,需要等待從機返回一個應答信號,以確認從機是否成功接收到數據.其中低電平0 表示應答,1 表示非應答.如圖5所示.

圖5 應答信號時序
根據上文所述,本系統中實現了對六種不同種類傳感器數據的讀取與監控.為了防止不同傳感器數據在發送過程中由于產生沖突而出現的數據混亂以及丟失,所有數據在發送前必須按照協議進行編碼.接收方在獲取數據后,則需要按照規則進行解碼.如表2所示為數據編碼協議.
表2中有下劃線的部分表示實時讀取的傳感器信息,除協議結尾0x10 為16 進制外,其余部分均采用ASCII 碼表示.

表2 數據編碼協議
本系統中所采用的服務器運行有Windows 操作系統,因此選擇SQL Sever 數據庫軟件來存儲獲取到的傳感器數據信息.由于所傳輸的數據較為簡單,因此數據庫中僅建立有一張表,如表3所示為表中的列.

表3 數據表
整個系統的軟件設計分為四個部分,分別是傳感器節點(含協調器)、網關、服務器以及客戶端.各部分軟件工作流程如圖6所示.
為了驗證該系統的實用性,同時分析系統的運行效率,在江漢大學交叉科學院與數學與計算機科學學院的協助下,本系統最終部署于江漢大學高性能計算實驗室.如圖7所示,為傳感器部署圖.其中圓圈內為傳感器節點.
由圖7可知,該實驗室內部已安裝部署有煙霧、溫濕度等傳感器節點用以監控室內環境.但其采用有線的安裝方式,無疑會增加安裝難度同時限制了其擴展性;采用無線節點實現數據的讀取與傳輸,恰恰可以克服上述缺點,同時能靈活實現節點數量及種類的改變.
本系統無線部分由6 個傳感器節點以及一個路由節點組成.為了測試整個網絡的擴展性、抗干擾性及數據傳輸速率,網關節點會將收到的信息如圖8所示實時顯示在屏幕上.用戶只需要觀察收到的信息是否有序,即可判斷無線收發是否正常.
本文采用如表4所示的數據設定數據發送間隔(見表1).得到的結果如表4右側所示.
根據CC2530 用戶手冊[8]可知,該芯片最大傳輸速率約為30 kbps.表2所列舉的數據編碼協議最長不超過21 個字符,即0.7 ms 即可發送完畢.但由于ZStack協議棧的存在占用了大量資源,因此數據發送間隔不能太小.

圖6 系統工作流程

圖7 傳感器部署圖

圖8 網關數據

表4 速率測試數據表(單位:ms)
如圖9所示為基于Android 的移動客戶端監控軟件.軟件運行后會提醒用戶輸入服務器IP 地址以及數據轉發軟件所占用的端口號,以便與數據轉發軟件建立連接,從而獲取傳感器數據.由于當前系統主要用于內網測試,因此并沒有加入身份驗證功能.

圖9 軟件登錄
若上述信息輸入正確,則軟件跳轉進入如圖10所示的運行界面.在運行界面中,弧形進度條表示當前粉塵量,同時輔以優、良、差的文字進行描述;云朵下方的雨滴圖形表示是否漏水有雨滴滲入;云朵圖案右方為煙霧狀態;溫度和濕度采用文字的形式告知用戶.

圖10 軟件運行界面
本文提出了一種基于CC2530 模塊的Zigbee 無線環境監控系統.該系統利用CC2530 內部的51 單片機作為主控芯片,模擬外部傳感器的接口協議,從而在不增加接口器件的情況下,適應不同傳感設備的讀寫需求,增強了整個系統的擴展性;在完成對數據的采集后,該主控芯片對環境信息進行采集、編碼以及傳輸,同時引入了ZStack 協議,降低了傳感網絡中控制軟件的復雜程度;通過數據庫服務器的建立,實現了對數據的動態、遠程訪問.與現有技術相比,該系統在網絡動態布局、擴展性以及軟件靈活性方面有了一定的改善.在下一步的工作中,可以嘗試對多個場所的監控系統進行互聯,建立多層次網絡結構,從而可以實現對更大范圍的環境進行有效監控.