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