摘 要: 設計了一種基于ZigBee無線傳感器技術與嵌入式Linux平臺的實驗室監控系統。系統通過多種傳感器獲取實驗室的環境信息,并將信息通過ZigBee構建的無線網絡發送到嵌入式Linux平臺。嵌入式Linux平臺作為Web服務器將數據共享給局域網中的用戶計算機,達到監控的目的。該系統具有結構靈活、運行穩定、易于擴展等優點。
關鍵詞: 無線傳感器技術;嵌入式平臺;Linux;安全監控
0 引言
傳統的實驗室安全監控系統一般是基于有線專用網絡來設計的,需要安裝專用的固定線路,這使得系統移動性差,不易擴展,同時系統的維護與更新也很不方便。無線傳感器技術恰好能夠解決這些問題。無線傳感器技術具有較低的系統成本、可靠的數據傳輸、極強的可擴展性等特點,這些特點均符合實驗室安全監控網絡的設計要求,而且無線傳感器技術具備靈活的網絡結構,可以根據不同的應用場合調整網絡結構。ZigBee是一種新興的基于IEEE 802.15.4的無線網絡技術,具備網絡容量大、功耗低等優點[1]。本文設計的實驗室監控系統是以ZigBee技術和嵌入式Linux技術為基礎,實現對實驗室的安全監控。該系統首先通過傳感器實時獲取實驗室的溫度、煙霧等環境數據,然后將這些信息經由ZigBee構建的無線網絡發送到嵌入式Linux平臺,用戶計算機可以通過B/S模式對嵌入式Linux平臺進行訪問,從而獲取監控信息。系統結構如圖1所示。
1 ZigBee無線傳感器網絡
1.1 ZigBee網絡結構
ZigBee網絡是以單獨的節點為基礎,通過無線通信構成一個協同工作的網絡。ZigBee網絡中定義了三種功能不同的節點設備類型:協調器(Coordinator)、路由器(Router)和終端設備(End Device)[2]。一個ZigBee網絡中必須有一個協調器,它的功能是建立和管理整個網絡;路由器的主要功能是在其通信范圍內允許其他終端設備或者其他路由器加入網絡并轉發數據;終端設備與監控傳感器連接,實現數據的采集和傳送。ZigBee網絡可以根據不同的情況構成三種不同的拓撲結構:星型、簇狀、網狀,如圖2所示。根據本系統具體的應用環境,簇狀網絡是最合適的選擇。
1.2 傳感器
傳感器位于整個系統的最末端,用于獲取實驗室的環境信息。系統選用溫度、紅外和煙霧三種傳感器。
溫度傳感器用于獲取實驗室的溫度信息,選用DS18B20[3],其內部已經集成了傳感器元件及轉換電路,其溫度測量范圍是-55℃~+125℃,滿足實驗室溫度監控的要求。
紅外傳感器用于實驗室空閑無人的情況下監測是否有人員非法闖入。當檢測到有人員位置移動時,紅外傳感器節點將向協調器發送觸發信號并由監控終端發出報警信息。紅外傳感器由BISS0001[4]熱釋電紅外開關和LHI-778熱釋電紅外傳感器組合構成。LHI-778檢測到紅外輻射時會將其轉換為電信號送入BISS0001,BISS0001對輸入信號進行處理后會向終端節點輸出一個數字信號。
采用MQ-7氣敏傳感器作為本系統的煙霧傳感器,該傳感器對一氧化碳的檢測靈敏度較高。一氧化碳的濃度在一般情況下很低,但在火災發生時其濃度會迅速上升,因此煙霧傳感器可以作為檢測火災的傳感器。
1.3 節點硬件設計
ZigBee網絡中的協調器、路由器、終端三種設備的核心電路相同,均由MCU模塊、無線通信模塊和電源模塊構成其最小系統。本文采用TI公司開發的滿足一體化ZigBee解決方案的CC2430芯片,它結合了一個高性能的射頻收發核心和一顆工業級的8051內核。CC2430功耗低,工作時電流損耗為27 mA,電壓范圍較寬(2.0~3.6 V),工作頻帶范圍為2.400~2.483 5 GHz,具有較高的靈敏度和較強的抗干擾性能[5]。
CC2430是無線SoC設計,內部已經集成了大量電路,添加較少的外圍電路便可以實現無線收發功能[5]。根據功能的不同,協調器需增加與嵌入式平臺通信的串行通信電路,終端傳感器節點需增加傳感器模塊。節點硬件結構如圖3所示。
1.4 節點軟件設計
ZigBee網絡中節點之間通信遵循ZigBee協議棧。ZigBee協議棧的基礎是IEEE802.15.4,具體由物理層(PHY)、媒體接入控制層(MAC)、網絡層(NWK)和應用層(APL)4個子層構成。本系統中網絡節點的程序均是基于TI公司的Z-Stack協議棧開發的,為了實現各節點的功能,需要在ZigBee協議棧中添加特定的任務事件處理函數。
協調器一方面組建和管理ZigBee網絡,并與ZigBee網絡中其他路由器和終端節點通信,接收其發來的數據;另一方面通過串行通信接口與嵌入式Linux平臺通信。
Coordinator_ProcessEvent()是協調器的任務事件處理函數,程序流程如圖4所示。協調器開始運行后,首先初始化硬件和ZigBee協議棧并建立網絡,然后運行Coordinator_ProcessEvent()函數。本系統中協調器的任務事件函數只需處理網絡狀態事件和數據接收事件。網絡構建成功后便會觸發網絡狀態事件,指示燈閃爍用以示意網絡建立成功;如果待處理事件是接收到的數據,則從數據中提取出傳感器的類型、數值等信息并將這些數據打包,然后通過串口將數據發送給嵌入式平臺。
終端設備將采集到的傳感器數據發送給路由器,其任務事件處理函數為End_ProcessEvent(),程序流程如圖5所示。終端設備開始運行后,首先初始化硬件和ZigBee協議棧,然后尋找并加入已經建立的網絡,成功加入網絡后觸發網絡狀態事件,在End_ProcessEvent()中設置定時器從而周期性地觸發傳感器采集事件,定時器設定為1 s。
Coordinator_ProcessEvent()是路由器的任務事件處理函數,負責將終端設備的數據轉發給協調器,其流程圖與終端設備相似。
2 嵌入式Linux平臺
嵌入式Linux平臺在本系統起到信息樞紐的作用,一方面通過串口接收協調器設備發來的數據,另一方面通過局域網將數據共享給用戶計算機。
2.1 嵌入式平臺硬件設計
嵌入式平臺主控芯片選用Samsung公司的S3C2440A微處理器,該處理器具有功耗低、性能高等特點。S3C2440A是以ARM920T為核心,具備16 KB的數據緩存和16 KB的指令緩存以及MMU[6]。該芯片集成了外部存儲控制器、LCD控制器、4通道DMA、3通道UART等片上資源。本系統構建的嵌入式平臺硬件結構如圖6所示。系統主要由處理器、32 MB SDRAM、32 MB Nand Flash、串口、網絡接口等模塊組成。
硬件系統搭建完成后,將Bootloader和Linux內核燒寫到Flash中,上電后Bootloader完成系統初始化,將Linux拷貝并解壓到SDRAMD中適當的位置,然后直接跳到Linux的入口點即可使系統運行起來[7]。
2.2 Linux應用程序設計
為了通過B/S模式實現數據在局域網中的共享,需要在嵌入式平臺上搭建Web服務器。Boa是一種小型的Web服務器,源代碼開放,所需運行空間小,在嵌入式開發中很常見。Boa是單任務的Web服務器,工作時依次完成用戶的請求,但Boa能夠為CGI程序創建新進程。Boa處理速度快,占用資源少,符合本系統的需求。可以從網站www.boa.org獲取Boa的源碼,然后將其解壓并移植[8]到嵌入式平臺,完成Web服務器的搭建。
嵌入式Linux平臺上還需要運行兩個進程:串口數據接收進程和CGI進程。這兩個進程通過共享內存的方式實現通信,使用信號量實現各個進程對共享內存的互斥訪問。
串口接收進程的程序流程如圖7所示。首先創建鍵值為sem_key的共享內存和鍵值為shm_key的信號量,然后進程開始監聽串口數據;接收到數據后,獲取shm_key信號量,保證進程對共享內存的互斥訪問,然后將數據寫入到共享內存中,釋放shm_key信號量,之后繼續監聽串口。
嵌入式平臺的Web服務器運行起來后,便開始等待客戶端的請求。服務器收到請求后,調用fork()創建一個子進程,在子進程上下文中調用execve()運行CGI進程。CGI流程如圖8所示,首先將串口接收進程創建的共享內存映射到自己的地址空間,獲取串口接收進程創建的信號量,然后讀取環境變量QUERY_STRING中的參數,對參數據進行判斷,若參數為“Start_Monitoring”,則在獲取到共享內存資源后讀出所需信息。如果發現有任何數據超過閾值,則設置報警信息,接著更新瀏覽器頁面,顯示監控數據和報警信息。顯示完成之后調用sleep()函數,將進程掛起1 s,然后重復上述過程。
3 系統測試
系統測試以三個實驗室為例進行,每個實驗室配備溫度、紅外、煙霧三種傳感器終端節點。系統搭建完成并運行起來后,打開用戶計算機上的瀏覽器,在URL中輸入嵌入式Linux平臺的IP地址,即可訪問本系統的Web監控頁面,如圖9所示。
瀏覽器頁面中顯示實驗室的狀態信息,每隔1 s刷新一次數據。在各個實驗室中,采用人工干預的方式依次觸發溫度、紅外、煙霧傳感器后,監控頁面刷新之后便會用紅色字體顯示出異常信息。經過大量測試,系統工作正常,滿足設計需求。
4 結論
本文以ZigBee無線傳感器技術為基礎,并結合嵌入式Linux平臺,設計了實驗室監控系統,克服了傳統安全監控系統自由度低,不易擴展、維護與更新等缺點。同時,系統還具有網絡結構靈活、低功耗、易于擴展等特點,采用B/S模式使得局域網中的計算機用戶都能實時掌握傳感器網絡采集的數據,從而大大提高了系統的監控性能。本系統雖然是以實驗室為背景設計的,但是同樣適用于其他需要安全監控的場合。
參考文獻
[1] 鐘勇鋒,劉永俊.ZigBee無線傳感器網絡[M].北京:北京郵電大學出版社,2011.
[2] 賀志楠,宋旭文,沈冬冬,等.ZigBee家庭組網技術研究與實現[J].電子科技,2014,27(8):36-39.
[3] 湯鍇杰,栗燦,王迪,等.基于DS18B20的數字式溫度采集報警系統設計[J].傳感器與微系統,2014,33(3):99-102.
[4] 陳文星,付繼宗,魏建英.基于BISS0001信號放大電路的人體紅外感應開關設計[J].電腦開發與應用,2013,26(2):66-68.
[5] 李文仲,段朝玉.ZigBee2006無線網絡與無線定位實戰[M].北京:北京航空航天大學出版社,2008.
[6] Samsung Electronics Co., Ltd. S3C2440A 32-bit RISC Microprocessor User′s Manual(Preliminary) Revison 0.12[S]. 2004.
[7] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
[8] 王建敏,魏海波.基于Linux3.0.1和S3C6410的智能家居控制系統的嵌入式Web服務器的移植和應用[J].江西科技師范大學學報,2013(6):95-99.