《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于無線傳感器技術(shù)的實(shí)驗(yàn)室監(jiān)控系統(tǒng)設(shè)計(jì)
基于無線傳感器技術(shù)的實(shí)驗(yàn)室監(jiān)控系統(tǒng)設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第3期
黃小天,吳曉紅,吳小強(qiáng),卿粼波
(四川大學(xué) 電子信息學(xué)院 圖像信息研究所,四川 成都 610064)
摘要: 設(shè)計(jì)了一種基于ZigBee無線傳感器技術(shù)與嵌入式Linux平臺(tái)的實(shí)驗(yàn)室監(jiān)控系統(tǒng)。系統(tǒng)通過多種傳感器獲取實(shí)驗(yàn)室的環(huán)境信息,并將信息通過ZigBee構(gòu)建的無線網(wǎng)絡(luò)發(fā)送到嵌入式Linux平臺(tái)。嵌入式Linux平臺(tái)作為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)。
Abstract:
Key words :

  摘  要: 設(shè)計(jì)了一種基于ZigBee無線傳感器技術(shù)與嵌入式Linux平臺(tái)的實(shí)驗(yàn)室監(jiān)控系統(tǒng)。系統(tǒng)通過多種傳感器獲取實(shí)驗(yàn)室的環(huán)境信息,并將信息通過ZigBee構(gòu)建的無線網(wǎng)絡(luò)發(fā)送到嵌入式Linux平臺(tái)。嵌入式Linux平臺(tái)作為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ù);嵌入式平臺(tái);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)用場(chǎ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)對(duì)實(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平臺(tái),用戶計(jì)算機(jī)可以通過B/S模式對(duì)嵌入式Linux平臺(tái)進(jìn)行訪問,從而獲取監(jiān)控信息。系統(tǒng)結(jié)構(gòu)如圖1所示。

001.jpg

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ò)是最合適的選擇。

002.jpg

  1.2 傳感器

  傳感器位于整個(gè)系統(tǒng)的最末端,用于獲取實(shí)驗(yàn)室的環(huán)境信息。系統(tǒng)選用溫度、紅外和煙霧三種傳感器。

  溫度傳感器用于獲取實(shí)驗(yàn)室的溫度信息,選用DS18B20[3],其內(nèi)部已經(jīng)集成了傳感器元件及轉(zhuǎn)換電路,其溫度測(cè)量范圍是-55℃~+125℃,滿足實(shí)驗(yàn)室溫度監(jiān)控的要求。

  紅外傳感器用于實(shí)驗(yàn)室空閑無人的情況下監(jiān)測(cè)是否有人員非法闖入。當(dāng)檢測(cè)到有人員位置移動(dòng)時(shí),紅外傳感器節(jié)點(diǎn)將向協(xié)調(diào)器發(fā)送觸發(fā)信號(hào)并由監(jiān)控終端發(fā)出報(bào)警信息。紅外傳感器由BISS0001[4]熱釋電紅外開關(guān)和LHI-778熱釋電紅外傳感器組合構(gòu)成。LHI-778檢測(cè)到紅外輻射時(shí)會(huì)將其轉(zhuǎn)換為電信號(hào)送入BISS0001,BISS0001對(duì)輸入信號(hào)進(jìn)行處理后會(huì)向終端節(jié)點(diǎn)輸出一個(gè)數(shù)字信號(hào)。

  采用MQ-7氣敏傳感器作為本系統(tǒng)的煙霧傳感器,該傳感器對(duì)一氧化碳的檢測(cè)靈敏度較高。一氧化碳的濃度在一般情況下很低,但在火災(zāi)發(fā)生時(shí)其濃度會(huì)迅速上升,因此煙霧傳感器可以作為檢測(cè)火災(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è)級(jí)的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)器需增加與嵌入式平臺(tái)通信的串行通信電路,終端傳感器節(jié)點(diǎn)需增加傳感器模塊。節(jié)點(diǎn)硬件結(jié)構(gòu)如圖3所示。

003.jpg

  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平臺(tái)通信。

004.jpg

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ā)送給嵌入式平臺(tái)。

005.jpg

  終端設(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平臺(tái)

  嵌入式Linux平臺(tái)在本系統(tǒng)起到信息樞紐的作用,一方面通過串口接收協(xié)調(diào)器設(shè)備發(fā)來的數(shù)據(jù),另一方面通過局域網(wǎng)將數(shù)據(jù)共享給用戶計(jì)算機(jī)。

  2.1 嵌入式平臺(tái)硬件設(shè)計(jì)

  嵌入式平臺(tái)主控芯片選用Samsung公司的S3C2440A微處理器,該處理器具有功耗低、性能高等特點(diǎn)。S3C2440A是以ARM920T為核心,具備16 KB的數(shù)據(jù)緩存和16 KB的指令緩存以及MMU[6]。該芯片集成了外部存儲(chǔ)控制器、LCD控制器、4通道DMA、3通道UART等片上資源。本系統(tǒng)構(gòu)建的嵌入式平臺(tái)硬件結(jié)構(gòu)如圖6所示。系統(tǒng)主要由處理器、32 MB SDRAM、32 MB Nand Flash、串口、網(wǎng)絡(luò)接口等模塊組成。

006.jpg

  硬件系統(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)中的共享,需要在嵌入式平臺(tái)上搭建Web服務(wù)器。Boa是一種小型的Web服務(wù)器,源代碼開放,所需運(yùn)行空間小,在嵌入式開發(fā)中很常見。Boa是單任務(wù)的Web服務(wù)器,工作時(shí)依次完成用戶的請(qǐng)求,但Boa能夠?yàn)镃GI程序創(chuàng)建新進(jìn)程。Boa處理速度快,占用資源少,符合本系統(tǒng)的需求??梢詮木W(wǎng)站www.boa.org獲取Boa的源碼,然后將其解壓并移植[8]到嵌入式平臺(tái),完成Web服務(wù)器的搭建。

  嵌入式Linux平臺(tái)上還需要運(yùn)行兩個(gè)進(jìn)程:串口數(shù)據(jù)接收進(jìn)程和CGI進(jìn)程。這兩個(gè)進(jìn)程通過共享內(nèi)存的方式實(shí)現(xiàn)通信,使用信號(hào)量實(shí)現(xiàn)各個(gè)進(jìn)程對(duì)共享內(nèi)存的互斥訪問。

  串口接收進(jìn)程的程序流程如圖7所示。首先創(chuàng)建鍵值為sem_key的共享內(nèi)存和鍵值為shm_key的信號(hào)量,然后進(jìn)程開始監(jiān)聽串口數(shù)據(jù);接收到數(shù)據(jù)后,獲取shm_key信號(hào)量,保證進(jìn)程對(duì)共享內(nèi)存的互斥訪問,然后將數(shù)據(jù)寫入到共享內(nèi)存中,釋放shm_key信號(hào)量,之后繼續(xù)監(jiān)聽串口。

  嵌入式平臺(tái)的Web服務(wù)器運(yùn)行起來后,便開始等待客戶端的請(qǐng)求。服務(wù)器收到請(qǐng)求后,調(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)建的信號(hào)量,然后讀取環(huán)境變量QUERY_STRING中的參數(shù),對(duì)參數(shù)據(jù)進(jìn)行判斷,若參數(shù)為“Start_Monitoring”,則在獲取到共享內(nèi)存資源后讀出所需信息。如果發(fā)現(xiàn)有任何數(shù)據(jù)超過閾值,則設(shè)置報(bào)警信息,接著更新瀏覽器頁(yè)面,顯示監(jiān)控?cái)?shù)據(jù)和報(bào)警信息。顯示完成之后調(diào)用sleep()函數(shù),將進(jìn)程掛起1 s,然后重復(fù)上述過程。

3 系統(tǒng)測(cè)試

  系統(tǒng)測(cè)試以三個(gè)實(shí)驗(yàn)室為例進(jìn)行,每個(gè)實(shí)驗(yàn)室配備溫度、紅外、煙霧三種傳感器終端節(jié)點(diǎn)。系統(tǒng)搭建完成并運(yùn)行起來后,打開用戶計(jì)算機(jī)上的瀏覽器,在URL中輸入嵌入式Linux平臺(tái)的IP地址,即可訪問本系統(tǒng)的Web監(jiān)控頁(yè)面,如圖9所示。

009.jpg

  瀏覽器頁(yè)面中顯示實(shí)驗(yàn)室的狀態(tài)信息,每隔1 s刷新一次數(shù)據(jù)。在各個(gè)實(shí)驗(yàn)室中,采用人工干預(yù)的方式依次觸發(fā)溫度、紅外、煙霧傳感器后,監(jiān)控頁(yè)面刷新之后便會(huì)用紅色字體顯示出異常信息。經(jīng)過大量測(cè)試,系統(tǒng)工作正常,滿足設(shè)計(jì)需求。

4 結(jié)論

  本文以ZigBee無線傳感器技術(shù)為基礎(chǔ),并結(jié)合嵌入式Linux平臺(tái),設(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)控的場(chǎng)合。

參考文獻(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信號(hào)放大電路的人體紅外感應(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ā)完全手冊(cè)[M].北京:人民郵電出版社,2008.

  [8] 王建敏,魏海波.基于Linux3.0.1和S3C6410的智能家居控制系統(tǒng)的嵌入式Web服務(wù)器的移植和應(yīng)用[J].江西科技師范大學(xué)學(xué)報(bào),2013(6):95-99.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。