曾明如,羅 浩,徐小勇,徐志敏
(南昌大學 信息工程學院,江西 南昌330031)
隨著人們在安全防范意識及需求上的不斷提高,開發(fā)功能強大的視頻監(jiān)控系統(tǒng)顯得尤為迫切。嵌入式系統(tǒng)作為日益成熟的平臺,在此方面的應用已經(jīng)非常普遍。文獻[1]提出了一種基于S3C2410處理器和Web技術(shù)的室內(nèi)設(shè)備監(jiān)控系統(tǒng),通過Internet完成對遠程設(shè)備的訪問和監(jiān)控操作,但需采用登錄 Web瀏覽器的方式;文獻 [2]以ARM9S3C2440作為核心處理器,移植了符合H.264標準的X264編碼器和jrtplib,對捕獲的視頻幀進行編碼后,經(jīng)網(wǎng)卡發(fā)送到主機,該方案僅能接收圖像,功能有待擴展;文獻 [11]設(shè)計了一種基于ARM Cortex-M3內(nèi)核微控制器和GPRS網(wǎng)絡的遠程圖像報警系統(tǒng),利用GSM網(wǎng)絡傳遞報警信息,實現(xiàn)了遠距離無線數(shù)據(jù)處理及控制;文獻 [12]提出了一種基于GSM的遠程分布式數(shù)據(jù)采集與控制系統(tǒng),通過分布在監(jiān)控區(qū)域的數(shù)據(jù)采集與通訊設(shè)備,對遠程的目標設(shè)備實施監(jiān)控。兩者都可以通過SMS短信操控系統(tǒng),但都因缺乏云臺裝置而限制了監(jiān)控范圍。如何更好地結(jié)合各項技術(shù)也為研究提出了新的要求。
本文綜合考慮了監(jiān)控現(xiàn)場的多種狀況,設(shè)計了一種基于ARM9S3C2440的嵌入式監(jiān)控系統(tǒng)。該系統(tǒng)利用了GPRS網(wǎng)絡和GSM通信,在監(jiān)控區(qū)域異常時能夠給予指定手機用戶短信提醒,對于彩信的發(fā)送、現(xiàn)場云臺和報警器的靈活控制豐富了用戶的監(jiān)控手段,可以極大地幫助用戶處理不同的現(xiàn)場情況。
系統(tǒng)在檢測到監(jiān)控區(qū)域有人員進入時開始采集圖像同時以短信形式通知設(shè)定手機,手機用戶可以短信回復相應數(shù)字決定是否需以彩信確認該人員,是否需要對安裝攝像頭的云臺進行各個方向的控制,是否發(fā)出或取消報警信號,從而使用戶不在現(xiàn)場就能夠?qū)崟r掌控監(jiān)控區(qū)域。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
由圖1可知,其中人體感應模塊在檢測到有人進入監(jiān)控區(qū)域時傳遞開關(guān)量信號給處理器,ZC301P型USB攝像頭接收到處理器發(fā)出的控制信號后采集視頻數(shù)據(jù)給處理器。GSM手機模塊完成短信或彩信發(fā)送、云臺控制命令和報警命令的接收工作。
圖1 系統(tǒng)結(jié)構(gòu)框架
基于Linux操作系統(tǒng)源代碼開放,內(nèi)核小且裁剪性好,性能穩(wěn)定效率高等優(yōu)點[1],采用其構(gòu)建視頻監(jiān)控終端。本文選取三星公司推出的S3C2440微處理器作為核心處理器,負責控制整個系統(tǒng)的運行。S3C2440是一款內(nèi)部集成了ARM公司ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,面向高性能、低功耗的應用[2]。
系統(tǒng)選用HC-SR501人體紅外感應模塊,它是基于紅外線技術(shù)的自動控制模塊,具有全自動感應功能。它的工作電壓范圍為直流4.5v--20v,感應范圍為小于100°錐角,7m以內(nèi),能夠滿足一般的監(jiān)控需求。當有人進入其感應范圍則輸出高電平,人離開感應范圍則自動延時關(guān)閉高電平,輸出低電平。
選取SIM900模塊作為通信模塊,它是SIMCOM公司推出的GSM/GPRS模塊,兩個工作頻段分別為EGSM 900MHz和DCS 1800MHz,其內(nèi)嵌TCP/IP協(xié)議,具有豐富的AT指令集。SIM900模塊具有電源接口、SIM卡接口、RS-232接口等。微處理器芯片通過串口與該模塊相連,模塊串口部分電平為2.8V左右,根據(jù)MCU串口電平進行電平匹配,以保證電壓匹配。
云臺是用來安裝、固定攝像頭的支撐設(shè)備,分為固定和電動云臺[3]。選用PTS-3030W型云臺,其旋轉(zhuǎn)速度為水平6°/s,垂直4°/s,旋轉(zhuǎn)角度為水平最大350°,垂直-50°--50°。該云臺作為電動云臺適合對大范圍區(qū)域進行掃描監(jiān)控,擴大了攝像頭的監(jiān)視范圍。云臺通訊控制方式是RS-485半雙工總線[4],而嵌入式終端串口輸出為TTL電平,采用 MAX485芯片來實現(xiàn)TTL與RS-485電平的轉(zhuǎn)換。MAX485工作電路如圖2所示。
報警部分采用XDD-905型智能報警燈光聯(lián)動控制器,只需一個常閉或常開開光量輸入,即可聯(lián)動另一端的強電開關(guān)實現(xiàn)燈光、警笛聯(lián)動。它內(nèi)置單片機,通過設(shè)置程序可達到精確的定時、延時效果。
圖2 MAX485工作電路
嵌入式開發(fā)板的資源相對有限,軟件開發(fā)通常采用交叉編譯的方式,因此第一步要搭建交叉編譯環(huán)境[5]。本文采用的交叉編譯器版本為arm-linux-gcc-4.3.2,Bootloader為u-boot-1.1.6,內(nèi)核為linux-2.6.32.2,可在網(wǎng)上下載源碼壓縮包。
解壓安裝各個壓縮包時要根據(jù)平臺需求進行相關(guān)修改、配置。對于內(nèi)核移植部分,主要是添加相應驅(qū)動,包括USB攝像頭的驅(qū)動和串口驅(qū)動。要想使用內(nèi)核和存取文件,還需構(gòu)建根文件系統(tǒng)[6]。Linux操作系統(tǒng)把所有的文件通過分級和分層的方式組織在一起,使其層次結(jié)構(gòu)形成樹形。在Linux樹形結(jié)構(gòu)中,根分區(qū)中只有一個根目錄,其它文件目錄都掛接在根目錄下面。將u-boot燒寫到Nor Flash之中,接著燒入配置好的內(nèi)核和根文件系統(tǒng)。應用軟件由C語言編寫,經(jīng)交叉編譯器編譯后移植到ARM平臺。
操作系統(tǒng)利用Video4Linux接口函數(shù)訪問USB攝像頭設(shè)備,從而捕獲到實時的視頻流。Video4Linux是Linux kernel里支持影像設(shè)備的一組APIs[7],它給針對視頻設(shè)備的應用程序編程提供了一系列接口函數(shù)。在linux-2.6.32.2中包含了所選攝像頭的驅(qū)動,相關(guān)配置選項如下:在Device Drivers菜單里面,選擇Multimedia devices,再依次選擇
圖像采集的具體過程是:調(diào)用grab_fd=open(“/dev/v4l/Video0”,O_RDWR)函數(shù),返回描述符grab_fd時意味著能打開設(shè)備并對設(shè)備文件進行操作。接著調(diào)用ioctl(grab_fd,VIDIOCGCAP,&grab_cap)函數(shù)來讀取video_capture中關(guān)于攝像頭的信息。之后調(diào)用ioctl(grab_fd,VIDIOCGPICT,&grab_pic)函數(shù)讀取保存于struct video_picture中的圖像信息。完成以上步驟后,系統(tǒng)選擇mmap()內(nèi)存映射方式實現(xiàn)對視頻圖像的采集[8]。
目前國內(nèi)外主要采用 MJPEG、MPEG1/2、MPEG4(SP/ASP)、H.264/AVC 等 幾 種 視 頻 編 碼 技 術(shù)。 其 中H.264是一種高度壓縮的數(shù)字視頻編解碼器標準,擁有良好的壓縮性能和網(wǎng)絡親和性,能夠在較低帶寬 (2M之內(nèi))情況下提供高質(zhì)量的圖像傳輸,相比其它的編碼標準節(jié)約了很多的傳輸碼流[9]。
H.264僅僅是規(guī)定了一個已編碼的視頻比特流以及如何對此比特流解碼,至于怎樣實現(xiàn)編碼,可以利用avc-src-0.14版本的 H.264編碼庫,解壓該編碼庫到avc-src-0.14/avc/build/linux/目錄下并對它進行編譯[10]。編譯之后便會在其文件夾下生成一系列目標文件,這些目標文件提供的功能函數(shù)能夠?qū)UV格式的視頻進行編碼。視頻壓縮編碼流程如圖3所示。
圖3 視頻壓縮編碼流程
在打開編碼庫后,分配一部分內(nèi)存用于存放一幀數(shù)據(jù),接著對視頻緩沖區(qū)進行讀取,獲得圖像數(shù)據(jù)。所用命令為ret=ioctl(camerfd,VIDIOCSYNC,&cam _cap),當ret>0時則圖像獲取完成。malloc函數(shù)為編碼器分配存儲編碼后的幀數(shù)據(jù)空間,編碼則用到了encode函數(shù),該函數(shù)的參數(shù)包括為視頻數(shù)據(jù)映射的內(nèi)存地址,同時它會返回編碼后的一幀數(shù)據(jù)的大小,之后視頻數(shù)據(jù)就壓縮到了所分配的內(nèi)存空間里面。需要注意的是,攝像頭采集的視頻圖像格式為JPEG,H.264編碼前需要先將其轉(zhuǎn)換為YUV格式,這樣才能將數(shù)據(jù)發(fā)送出去。編碼程序流程如圖4所示。
圖4 編碼程序流程
SIM900模塊使用AT指令實現(xiàn)GPRS傳輸數(shù)據(jù)、發(fā)送短信和彩信等通信功能[11]。將SIM900模塊和嵌入式系統(tǒng)平臺相結(jié)合,實現(xiàn)ARM與GSM兼容,這便構(gòu)成了信息傳輸模塊。
啟動Linux系統(tǒng)后,串口相關(guān)參數(shù)設(shè)置為:通訊波特率115200bps,8位數(shù)據(jù)位,無奇偶校驗,1位停止位,無數(shù)據(jù)流控。短信發(fā)送有兩種格式:TEXT格式和PDU格式[12]。TEXT格式只能發(fā)送ASCII字符,PDU格式可以發(fā)送中英文字符,本文采用PDU格式。首先通過向SIM900模塊發(fā)送AT+CMGF=0將其設(shè)置為PDU格式,接著發(fā)送AT+CMGS=23(15+短信字數(shù)*2)+回車鍵,返回“>”后寫入短信息的PDU碼,最后發(fā)送0x1a給模塊將執(zhí)行發(fā)送短信命令。短信中心號碼為+8613800791500,用戶手機號為+861375568XXXX。設(shè)置兩條短信,內(nèi)容分別是:“有人進入”、“恢復正常”。
彩信需要在GPRS網(wǎng)絡的支持下,以無線應用協(xié)議WAP為載體,通過手機上的一個URL網(wǎng)址獲取圖片信息,故需建立GPRS網(wǎng)絡連接。通信過程中先設(shè)置模塊的連接協(xié)議和端口號,所用AT指令為AT+CLPORT= “TCP”,“2022”。在 TCP 連 接 時,輸 入 AT+CIPSTART=“TCP”,“218.65.113.45” (本機外網(wǎng)IP地址), “8080”,連接成功則返回:CONNECT OK。為實現(xiàn)發(fā)送彩信功能還需進行如下配置:AT+CMMSEDIT=1設(shè)置以彩信形式發(fā)送;AT+CMMSDOWN= “PIC”,12963,20000設(shè)置彩信下載地址;AT+CMMSRECP= “1375568XXXX”設(shè)置接收彩信手機號碼。攝像頭采集幀速為25fps,處理像素640×480。處理器接收到人體紅外感應模塊發(fā)出的開關(guān)量信號后,設(shè)置每隔2s在內(nèi)存中選取一幀圖像作為彩信數(shù)據(jù),數(shù)據(jù)經(jīng)封裝后可直接發(fā)送至GPRS網(wǎng)絡,并以WAP Push的形式發(fā)到手機上。
模塊接收控制命令時,利用指令AT+CNMI=2,1設(shè)置短信提示功能;AT+CMGF=0設(shè)置PDU格式讀出短信;AT+CMGR=7讀取存在SIM卡第7個位置上的信息。SIM900模塊先將命令保存,數(shù)據(jù)幀經(jīng)拆封后傳輸至處理器,通過判定該命令的PDU碼,處理器接著發(fā)出相應控制信號。傳輸部分流程如圖5所示。
圖5 傳輸部分流程
S3C2440處理器由串口接收到手機用戶發(fā)送過來的云臺控制命令后,通過RS485端口傳送信號給云臺。所選云臺內(nèi)置解碼器,按照PELCO-D云臺控制協(xié)議將其解碼,實現(xiàn)對云臺的控制。PELCO-D協(xié)議數(shù)據(jù)格式為:1位起始位,8位數(shù)據(jù),1位停止位,無效驗位,波特率為2400B/S[13]。通過使用PELCO-D協(xié)議的云臺方位控制命令能夠?qū)崿F(xiàn)其向上、向下、向左、向右和停止轉(zhuǎn)動。設(shè)定每個轉(zhuǎn)動命令發(fā)出后1s時刻自動發(fā)出一個停止命令,這樣用戶每次在發(fā)出某個云臺轉(zhuǎn)動命令后,云臺能達到向上或向下轉(zhuǎn)動4°,向左或向右轉(zhuǎn)動6°的效果。以云臺從用戶設(shè)定位置動作為開始,依次記下云臺的每個轉(zhuǎn)動命令,對于每個方向都給云臺施加相同次數(shù)的反方向轉(zhuǎn)動命令,這樣就增加了一個云臺復位功能。
系統(tǒng)調(diào)試時,首先將能夠上網(wǎng)的SIM卡插進SIM900模塊卡槽中,模塊通過串口線與開發(fā)板相連。將系統(tǒng)上電,之后模擬監(jiān)控現(xiàn)場。當有人進入監(jiān)控區(qū)域時,設(shè)定手機接收到短信顯示:“有人進入”。在設(shè)計階段利用了多個判別語句,用戶回復數(shù)字1到9后系統(tǒng)便執(zhí)行9種不同的命令,見表1。如短信回復:”1”,則系統(tǒng)每隔2s發(fā)送一條彩信到手機,其中一條彩信截圖如圖6所示。短信回復:”3”,系統(tǒng)停止發(fā)送彩信。
表1 數(shù)字鍵功能
圖6 云臺動作前圖像
本系統(tǒng)中彩信部分 (1,3)、報警部分 (7,9)和云臺部分 (2,4,5,6,8)的三組功能可以任意組合使用。例如短信回復內(nèi)容:”127”,則現(xiàn)場報警的同時云臺會向上轉(zhuǎn)動4°,用戶也可以每隔2s接收到一條彩信。云臺向上動作后,手機所接收的一條彩信截圖如圖7所示。圖像較為清晰,具備實時性效果,有利于用戶對進入人員的判斷識別。
圖7 云臺動作后圖像
當人離開監(jiān)控區(qū)域后,處理器再次接收人體紅外感應模塊發(fā)送的開關(guān)量。手機再次接收短信,短信內(nèi)容:“恢復正?!?。實驗結(jié)果表明,各個功能可以成功執(zhí)行,該系統(tǒng)能夠?qū)崿F(xiàn)對所要求范圍內(nèi)的監(jiān)控且極少監(jiān)控盲區(qū),信息傳輸順利,具備安防報警效果。
本文結(jié)合ARM、GPRS網(wǎng)絡以及GSM通信技術(shù)設(shè)計了一種安防報警系統(tǒng),分析了攝像頭驅(qū)動和符合H.264標準的編碼器移植,通過SMS短信發(fā)送不同數(shù)字就能控制現(xiàn)場云臺轉(zhuǎn)動、發(fā)送彩信以及聲光報警。該系統(tǒng)安全穩(wěn)定、功能強大、使用簡單且快捷,使得監(jiān)控方式更加人性化、多樣化,在無人視頻監(jiān)控方面具備很好的應用價值。改進的方向可以是采用人臉識別技術(shù)來減少接收到報警短信的次數(shù)以及利用同一部手機控制多處監(jiān)控區(qū)域等,使得系統(tǒng)功能更加完善、合理。
[1]FANG Fang,MA Xudong.Design and realization of monitor system based on embedded Web technology [J].Computer Engineering,2009,35 (23):237-239 (in Chinese).[房芳,馬旭東.基于嵌入式Web技術(shù)的監(jiān)控系統(tǒng)設(shè)計與實現(xiàn) [J].計算機工程,2009,35 (23):237-239.]
[2]PENG Tiegang,LIU Guofan,CAO Shaokun,et al.Design of embedded video surveillance system based on ARM [J].Computer Engineering and Design,2010,31 (6):1191-1192 (in Chinese).[彭鐵鋼,劉國繁,曹少坤,等.基于ARM的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計 [J].計算機工程與設(shè)計,2010,31(6):1191-1192.]
[3]Ngo H T,Ives R W,Rakvic R N,et al.Real-time video surveillance on an embedded,programmable platform [J].Microprocessors and Microsystems,2013,37 (6):562-571.
[4]Brzoza-Woch R,Ruta A,ZielińSki K.Remotely reconfigurable hardware-software platform with web service interface for automated video surveillance [J].Journal of Systems Architecture,2013,59 (7):376-388.
[5]LIU Liang,LAI Wanchang,LI Ming.Design and implementation of image transmission system based on ARM9 & GPRS[J].Computer Engineering and Design,2010,31 (7):1477-1480(in Chinese). [劉良,賴萬昌,黎明.基于ARM9的GPRS圖像傳輸系統(tǒng)的設(shè)計與實現(xiàn) [J].計算機工程與設(shè)計,2010,31 (7):1477-1480.]
[6]PENG Hao,GONG Jie,QIN Jianmin.Build embedded Linux root file system based on S3C2440 [J].Electronic Design Engi-neering,2010,18 (6):20-22 (in Chinese). [彭浩,龔杰,秦建敏.基于S3C2440的嵌入式Linux根文件系統(tǒng)構(gòu)建 [J].電子設(shè)計工程,2010,18 (6):20-22.]
[7]ZHAO Manyi,ZHAO Li,MO Jinwang,et al.Video capture and encoding technology in video surveillance terminal [J].Computer Engineering and Science,2011,33 (1):122-126(in Chinese).[趙滿意,趙利,莫金旺,等.視頻采集與編碼技術(shù)在視頻監(jiān)控終端中的應用 [J].計算機工程與科學,2011,33 (1):122-126.]
[8]TANG Xiaofeng,ZHENG Shanxian.Design and Implementation of remote monitoring system based onμClinux [J].Computer Engineering and Science,2009,31 (10):140-142 (in Chinese).[湯霄峰,鄭善賢.基于μClinux的遠程監(jiān)控系統(tǒng)的設(shè)計 與實 現(xiàn) [J].計算機 工程與科學,2009,31 (10):140-142.]
[9]Soyak E,Tsaftaris S A,Katsaggelos A K.Low-complexity tracking-aware H.264video compression for transportation surveillance [J].IEEE Transactions on Circuits and Systems for Video Technology,2011,21 (10):1378-1389.
[10]LIN Xiaohuan,YANG Fangbiao.Video capture,compression and transmission based on ARM9 [J].Communications Technology,2012,45 (7):110-112 (in Chinese). [林曉煥,楊方彪.基于ARM9的視頻采集、壓縮及傳輸 [J].通信技術(shù),2012,45 (7):110-112.]
[11]ZHENG Daobao,WANG Huaijie.Design of remote image and alarm system based on ARM/GPRS [J].Computer Measurement & Control,2013,21 (1):149-151 (in Chinese).[鄭道寶,王懷杰.基于ARM/GPRS的遠程圖像報警系統(tǒng)的設(shè)計 [J].計算機測量與控制,2013,21 (1):149-151.]
[12]HOU Dawei,HE Jianzhong.Distributed remote data acquisition and control system based on GSM [J].Computer Engineering and Science,2009,30 (9):2102-2104 (in Chinese).[侯大偉,何建忠.基于GSM的遠程分布式數(shù)據(jù)采集與控制系統(tǒng) [J].計算機工程與設(shè)計,2009,30 (9):2102-2104.]
[13]ZHANG Qiulin,XIA Jingbo,QIU Jing,et al.Design and realization of PTZ control module in the video monitor system[J].Application of Electronic Technique,2011,37 (9):43-45(in Chinese). [張秋林,夏靖波,邱婧,等.視頻監(jiān)控系統(tǒng)中云臺控制模塊的設(shè)計與實現(xiàn) [J].電子技術(shù)應用,2011,37 (9):43-45.]