王會清,程 勇
(1.武漢工程大學(xué)智能機(jī)器人湖北省重點實驗室,湖北 武漢 430074;2.武漢工程大學(xué)計算機(jī)科學(xué)與工程學(xué)院,湖北 武漢 430074)
隨著社會物質(zhì)生活的不斷進(jìn)步,人們的家庭安防意識也不斷增強(qiáng),家用以及社區(qū)安防系統(tǒng)是否完備已成為社會日益關(guān)注的問題.所以,開發(fā)功能完善、運(yùn)行平穩(wěn)、使用方便、費(fèi)用低的家庭安防系統(tǒng)具有重要的現(xiàn)實意義.
以LabWIEW2010為開發(fā)平臺,開發(fā)家庭智能安防系統(tǒng),對包括多個攝像頭的現(xiàn)場視頻監(jiān)控子系統(tǒng)進(jìn)行了研究和試驗.視頻監(jiān)控是家庭安防系統(tǒng)的重要組成部分,主要用于出現(xiàn)警情時完成現(xiàn)場的視頻采集、存儲等操作,并通過Internet網(wǎng)與保安終端進(jìn)行遠(yuǎn)程實時報警和數(shù)據(jù)通信.視頻監(jiān)控不僅為保安終端提供處警的信息,而且真實記錄事件經(jīng)過,具有不可替代的法律效力,是任何一個安防報警系統(tǒng)必不可少的功能.LabVIEW軟件功能強(qiáng)大、編程靈活,適宜作為家庭安防報警系統(tǒng)的開發(fā)平臺.在此平臺上準(zhǔn)確無誤地完成多個攝像頭的視頻采集、數(shù)據(jù)存儲和即時網(wǎng)絡(luò)傳輸過程.
整個家庭安防報警系統(tǒng)的硬件組成在文獻(xiàn)中[1-3]有詳細(xì)介紹,這里僅做簡要敘述.系統(tǒng)的客戶端硬件主要由控制主機(jī)、數(shù)據(jù)采集卡、探測器、遙控器等組成;保安終端由PC機(jī)和警報設(shè)備等構(gòu)成.客戶端PC機(jī)主要監(jiān)控各傳感器的報警指令以及各功能模塊的設(shè)防與撤防,并進(jìn)行現(xiàn)場數(shù)據(jù)的采集與處理.傳感器有USB接口紅外攝像頭、拾音器、多光束紅外柵欄和門磁檢測器等.用戶使用遙控器控制報警器,通過按鍵設(shè)置報警器的設(shè)防、撤防,緊急求助等狀態(tài).整個系統(tǒng)的硬件連接圖參見文獻(xiàn)[1].
遙控接收裝置通過USB接口與控制主機(jī)相連,門磁門縫開關(guān)及紅外柵欄等的信號線分別連接數(shù)據(jù)采集卡的DI和GND引腳.USB紅外攝像頭以及GPRS彩信貓,直接插入系統(tǒng)的USB HUB口.攝像頭采集現(xiàn)場數(shù)據(jù),送到主機(jī)處理,然后通過網(wǎng)絡(luò)與保安終端遠(yuǎn)程傳送信息.
系統(tǒng)的開發(fā)以LabVIEW2010軟件為中心,利用其強(qiáng)大的功能和計算機(jī)的資源使一些需要硬件實現(xiàn)的技術(shù)軟件化,最大限度的降低系統(tǒng)成本.在必需的硬件環(huán)境下盡可能發(fā)揮軟件功能,完成信號采集、處理、存儲、顯示以及網(wǎng)絡(luò)傳輸?shù)裙ぷ?系統(tǒng)軟件分為用戶端和保安終端兩大部分.用戶端主要有四大模塊:即防騙子模塊、緊急報警模塊、晚間休息或離家模塊以及緊急求助模塊,各模塊可通過遙控器或語音進(jìn)行操縱控制.在各模塊處于設(shè)防的條件下,若某傳感器被觸發(fā),則該傳感器通過采集卡的數(shù)字IO向PC機(jī)發(fā)送報警信息.或者當(dāng)用戶通過遙控器向計算機(jī)發(fā)送緊急報警指令時,系統(tǒng)通過相應(yīng)的模塊啟動相應(yīng)的探測器進(jìn)行現(xiàn)場聲音與圖像采集,將采集到的數(shù)據(jù)進(jìn)行處理后通過網(wǎng)絡(luò)傳送到保安終端.也可以彩信的形式將數(shù)據(jù)發(fā)往用戶的手機(jī).同時用戶也可通過其它遠(yuǎn)程終端或手機(jī)進(jìn)行現(xiàn)場實時瀏覽.其中的緊急報警模塊同時還具有語音發(fā)送報警信息的功能.而緊急求助模塊是針對家里有老人、病人等需要幫助時,利用遙控器發(fā)出求助指令,并把現(xiàn)場的視頻等數(shù)據(jù)傳送給小區(qū)保安中心及設(shè)定的手機(jī).
保安端主要是實時檢測用戶端的報警指令,顯示和處理相應(yīng)的報警用戶信息.一旦有報警信息,就閃爍燈光和發(fā)聲報警.此時可調(diào)出報警用戶的信息,并在地圖中進(jìn)行定位.也可利用NI的DataSocket技術(shù)進(jìn)行現(xiàn)場數(shù)據(jù)的遠(yuǎn)程讀取、保存等操作.同時預(yù)先設(shè)定的手機(jī)也可接收到現(xiàn)場的圖片及聲音文件的結(jié)構(gòu)資源彩信.在保安端的主界面中,可實時顯示10個報警用戶的視頻及其相應(yīng)的歷史信息.如果有更多戶,則采用列表方式顯示,以選擇方式顯示報警用戶信息.為了避免被動出警,還可利用界面的打印功能為出警人員提供報警用戶的具體信息;點擊“視頻保存”按鈕對現(xiàn)場信息保存.作為接警終端可以是小區(qū)保安中心,用戶辦公室等地方和用戶手機(jī)等.
在計算機(jī)系統(tǒng)中,控制主機(jī)對USB外設(shè)的使用是隨機(jī)記錄的,即首先插入的USB攝像頭硬件描述符如果設(shè)為“camera0”時,拔下后重新插入另一個口上就可能為“camera 3”等.為此,編寫了USB視頻設(shè)備硬件描述符檢測程序,用來確定所插的每一個攝像頭的序號,以避免出現(xiàn)某一探測器出現(xiàn)報警指令而另一個攝像頭采集圖像的錯誤.程序界面如圖1所示,圖2是其相關(guān)的處理程序.
圖1 USB硬件設(shè)備描述符檢測界面Fig.1 Front panel detecting descriptor of USB device
圖2 用戶菜單選擇事件及顯示攝像頭硬件描述符程序Fig.2 Block diagram selecting event of user’s menu and displaying descriptor of camera
每當(dāng)有一個攝像頭安裝到系統(tǒng),檢測程序在設(shè)置的數(shù)組中確定其硬件描述符,顯示相應(yīng)的序號,使各個攝像頭與相應(yīng)的傳感器一一對應(yīng).使用時,攝像頭直接插在與控制主機(jī)相連的USB HUB上USB母口,運(yùn)行USB口檢測程序,當(dāng)插上一個攝像頭時,通過數(shù)組顯示控件可看到其硬件描述符及其所對應(yīng)的序號.
程序中的具體實現(xiàn)是,先調(diào)用相關(guān)的子VI獲得系統(tǒng)中全部攝像頭具體的信息,使用數(shù)組索引函數(shù)等取得其中每一個攝像頭的詳細(xì)信息.將得到的每個攝像頭的信息元素接線端子連接數(shù)組插入函數(shù)的新元素/子數(shù)組接線端子,采用數(shù)組插入函數(shù)創(chuàng)建輸出控件,顯示每個攝像頭的標(biāo)識符,通過排序得到各攝像頭的序號,使之與連接數(shù)據(jù)采集卡的相應(yīng)探測器匹配.
在用戶端主界面中[1],當(dāng)用戶點擊讀取圖片、讀取視頻按鈕時,則程序跳轉(zhuǎn)到相應(yīng)的采集數(shù)據(jù)保存目錄,按預(yù)設(shè)或默認(rèn)方式進(jìn)行瀏覽,或者通過界面中的視頻窗口進(jìn)行在線瀏覽.
如果系統(tǒng)是由探測器被觸動而發(fā)生報警指令時,則110布爾全局變量被賦予真值,其相關(guān)的while程序賦予相應(yīng)的條件結(jié)構(gòu)為真值,利用目錄上傳子VI將現(xiàn)場數(shù)據(jù)發(fā)送到接警終端.
在主程序中間while循環(huán)中,事件結(jié)構(gòu)的第2幀是處理用戶點擊“讀取采集圖片”按鈕事件,通過LabVIEW平臺的庫與其執(zhí)行系統(tǒng)命令函數(shù)進(jìn)入采集的圖片存放目錄,以默認(rèn)方式打開圖片.在點擊“讀取采集視頻”按鈕時,通過調(diào)用LabVIEW的子VI動態(tài)的啟動與控制DataSocket server,自動運(yùn)行DataSocket函數(shù)瀏覽視頻[3-6].
在目錄上傳子程序中,先運(yùn)行系統(tǒng)命令函數(shù)檢測本機(jī)MAC地址,使用FTP Open SessionFTP、Login FTP、FTP MKD三個函數(shù)在設(shè)定的FTP站點目錄中以其MAC地址和用戶姓名為目錄名創(chuàng)建目錄.并在此目錄中再使用FTPMKD函數(shù)創(chuàng)建目錄用以存放上傳的信息,運(yùn)行FTP PUT FILE子程序?qū)⑸蟼鞯默F(xiàn)場數(shù)據(jù)存儲到設(shè)定的目錄中.
當(dāng)非法入戶者觸動了探測器發(fā)送報警指令時,視頻采集是通過數(shù)據(jù)采集卡上的DI號控制所對應(yīng)的USB攝像頭采集圖像,子程序如圖3所示.
圖3 視頻和圖片采集程序Fig.3 Bloch diagram of video and image acquisition triggered by sensor
首先,處理攝像頭的子程序?qū)⑾到y(tǒng)中的全部攝像頭標(biāo)識符按數(shù)字遞增順序排序,再由索引數(shù)組函數(shù)與發(fā)出報警指令的傳感器對應(yīng)的DI序號確定其索引號.運(yùn)行Imaqdx open camera函數(shù)打開報警探測器所對應(yīng)的攝像頭;通過Imaqdx函數(shù)面板中的相關(guān)函數(shù)執(zhí)行視頻采集.由Imaqdx Configure Grab 子VI對圖像采集參數(shù)實現(xiàn)動態(tài)設(shè)置;Imaqcreat子VI為圖像的采集動態(tài)的分配存儲空間;Imaqdx Grab 函數(shù)對圖像進(jìn)行采集.通過條件結(jié)構(gòu)中的拍相片子VI把采集的圖像以jpg格式保存,通過DataSocket技術(shù)進(jìn)行視頻保存.對于用戶手機(jī),在保存前,需對采集的圖像數(shù)據(jù)重新處理,使其分辨率為320×240,以便于手機(jī)瀏覽.
當(dāng)非探測器觸動模塊有報警指令時,程序為非110布爾變量賦真值,接著While循環(huán)也為相應(yīng)的條件結(jié)構(gòu)賦予真值,調(diào)用目錄上傳子VI在線傳送數(shù)據(jù).當(dāng)瀏覽采集圖片的按鈕或瀏覽采集視頻的按鈕被點擊時,中間while循環(huán)中的事件結(jié)構(gòu)執(zhí)行相應(yīng)的處理.在左側(cè)的While 循環(huán)檢測到兩個布爾變量110或非110中任一為1,且用于控制五個While循環(huán)同步的布爾變量為0條件下,采用一個全局變量為用戶顯示現(xiàn)場視頻圖像.
在報警指令是通過遙控器或緊急報警語音密碼發(fā)送情況下,其視頻采集、圖片子VI是非觸動的,由多個攝像頭循環(huán)采集數(shù)據(jù),其程序代碼如圖4所示.其中while循環(huán)的控制循環(huán)次數(shù)變量i和攝像頭的個數(shù)決定了具體是由哪個攝像頭來采集圖像.如果i加1后與攝像頭的個數(shù)相除余數(shù)為0,則用攝像頭的個數(shù)減1后作為索引號調(diào)用對應(yīng)的攝像頭工作;若i加1后與攝像頭的個數(shù)相除余數(shù)非0,則用余數(shù)減1后作為索引號調(diào)用對應(yīng)的攝像頭采集圖像.
在客戶端主程序中,緊急報警程序下面的while循環(huán)里等待集合點的任務(wù)執(zhí)行是由遙控器按鈕或語音密碼控制.當(dāng)用戶按下需緊急報警的按鈕,或者有關(guān)函數(shù)在wordout全局變量中搜索到語音密碼時,都將觸發(fā)順序結(jié)構(gòu)第1幀中的等待集合點函數(shù),從而在第2幀通過文本播報,該模塊啟動語音提示.然后在第3幀判斷緊急報警指令是否取消.若是誤報后取消,則可在第3幀檢測到該信息已取消,并運(yùn)行文本播報子程序提示.沒有取消,則通過條件結(jié)構(gòu)的真分支,為后面的條件結(jié)構(gòu)及110布爾變量賦真值,運(yùn)行程序采集視頻以及運(yùn)行圖片Email子程序.值得一提的是在這個while循環(huán)里用了沿檢測概念.沿檢測分為上升沿和下降沿,由FALSE變成TRUE稱之為上升沿,由TRUE變?yōu)镕ALSE稱之為下降沿,利用這個編程技巧實現(xiàn)了用常閉探測器代替比之貴五六倍的常開探測器.
接警端程序主要是接收客戶端發(fā)送的報警信息,并通過LabVIEW中的DataSocket技術(shù)實時獲取報警用戶端采集的數(shù)據(jù).其主界面程序[1]中的.vit子面板模板程序由四個while循環(huán)組成.其中的右上方while循環(huán)用于控制視頻的采集與存儲.布爾3、4、5、6用來控制程序中四個循環(huán)之間的同步.當(dāng)該循環(huán)程序檢測到布爾5為1時,執(zhí)行讀取視頻的操作.點擊保存按鈕,需在彈出的對話框中設(shè)置存儲位置,設(shè)定好保存位置后調(diào)用IMAQ AVI Creat子VI創(chuàng)建AVI文件,將采集的視頻圖像寫入AVI文件.當(dāng)同時有多位用戶報警時視頻的帶寬受到限制,可采用手動保存視頻.
當(dāng)用戶手機(jī)設(shè)定為報警終端時,可按照客戶端應(yīng)用程序發(fā)布的網(wǎng)頁域名在手機(jī)瀏覽器中輸入其網(wǎng)址完成對客戶端的實時瀏覽.
本系統(tǒng)開發(fā)是基于LabVIEW2010軟件,在該平臺下系統(tǒng)中的大部分硬件可用軟件虛擬化代替.利用軟件解決了用常閉型的探測器代替常開型探測器的問題,采用while循環(huán)移位寄存器和多態(tài)的是否小于函數(shù)來判斷下降沿發(fā)生,用以確定數(shù)據(jù)采集卡中各DI引腳具體連接的探測器以及哪一個探測器產(chǎn)生下降沿,進(jìn)而控制對應(yīng)的攝像頭采集圖像.考慮到系統(tǒng)的存儲容量有保證,視頻是以avi文件格式保存,即不需進(jìn)行數(shù)據(jù)壓縮等處理.
整個系統(tǒng)經(jīng)過反復(fù)測試,其結(jié)果是性能穩(wěn)定可靠,各功能模塊與每個探測器之間的組合理想,達(dá)到實時視頻等數(shù)據(jù)采集、存儲及網(wǎng)絡(luò)傳送等功能,并將傳感器采集的信息以手機(jī)短信方式發(fā)送用戶,未出現(xiàn)誤報、漏報等現(xiàn)象;系統(tǒng)操作簡便,功能完善,具有較高的性價比,符合預(yù)期的效果.
參考文獻(xiàn):
[1] 程勇. 基于LabVIEW的家庭智能報警系統(tǒng)研究[D]. 武漢:武漢工程大學(xué), 2011.
[2] 王會清,程勇. 家庭安防系統(tǒng)中聲音信號的小波分析與降噪[J]. 武漢工程大學(xué)學(xué)報,2011,33(10):96-99.
[3] National Instrument Corporation, Virtual Instrument Based on PC [J]. Electronic Engineering & Product World ,2003(1):86-88.
[4] 吳成東,孫秋野,盛科. LabVIEW虛擬儀器程序設(shè)計及應(yīng)用[M]. 北京:人民郵電出版社,2008:193-197.
[5] 馬海瑞,周愛軍. 基于Datasocket技術(shù)的LabVIEw遠(yuǎn)程測控[J]. 現(xiàn)代儀器,2005(4):20-22.
[6] 楊樂平,李海濤,趙勇,等.LabVIEW高級程序設(shè)計[M].北京:清華大學(xué)出版社,2003: 427-445.