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