徐媛媛,匡 斐,鐘璐遠(yuǎn)(西南石油大學(xué) 計算機(jī)科學(xué)學(xué)院,四川 成都 610500)
基于ARM11平臺和GPRS遠(yuǎn)程無線圖像報警系統(tǒng)的研究
徐媛媛,匡 斐,鐘璐遠(yuǎn)
(西南石油大學(xué) 計算機(jī)科學(xué)學(xué)院,四川 成都 610500)
設(shè)計和實(shí)現(xiàn)了一種基于ARM11平臺和GPRS通信技術(shù)的無線遠(yuǎn)程圖像報警系統(tǒng),論述了系統(tǒng)的總體結(jié)構(gòu)及其設(shè)計思路。利用嵌入式ARM11和GPRS協(xié)議進(jìn)行數(shù)字圖像處理,完成了圖像報警終端的軟硬件設(shè)計,使報警終端通過無線網(wǎng)絡(luò)與手機(jī)等設(shè)備連接,最終實(shí)現(xiàn)實(shí)時截圖報警監(jiān)控的功能。
ARM11;GPRS;嵌入式系統(tǒng);圖像報警系統(tǒng)
近幾年,隨著嵌入式技術(shù)迅速發(fā)展,數(shù)字化的圖像監(jiān)控技術(shù)出現(xiàn)了新的特點(diǎn):嵌入芯片更小,集成度更高,而且在某些工業(yè)應(yīng)用領(lǐng)域中,利用無線網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的傳輸逐漸成為了最為理想的選擇。然而傳統(tǒng)的圖像監(jiān)控系統(tǒng)采用“單片機(jī)+GPRS”的系統(tǒng)結(jié)構(gòu),這樣的系統(tǒng)架構(gòu)由于其硬件運(yùn)算能力有限,導(dǎo)致整個系統(tǒng)的功能較弱,實(shí)時性較差,不能很好地滿足監(jiān)控需要。這使得該圖像監(jiān)控系統(tǒng)很難應(yīng)用在一些特殊的環(huán)境監(jiān)控中,例如教學(xué)大樓、家庭防盜、工廠或其他無人值守的場合。
本文以ARM11開發(fā)板結(jié)合ET-GPRS模塊的系統(tǒng)架構(gòu)取代傳統(tǒng)的圖像監(jiān)控系統(tǒng),ARM11開發(fā)板通過控制攝像頭對其部署區(qū)域進(jìn)行安防監(jiān)控,能夠獲取圖像數(shù)據(jù),并設(shè)計了報警系統(tǒng),使其通過 GPRS無線通信模塊將報警信息傳送到至有信號的任何地方,實(shí)現(xiàn)無線監(jiān)控報警。
本系統(tǒng)采用了Samsung公司的S3C6410嵌入式處理器和嵌入式 Linux2.6.36操作系統(tǒng)。S3C6410采用ARM1176JZF-S的內(nèi)核,主頻可以達(dá)到533 MHz/667 MHz,最大支持到 8 bit糾錯,實(shí)現(xiàn)了 MMU、AMBA BUS和Harvard高速緩沖體系結(jié)構(gòu),集成了通用的串口控制器、A/D轉(zhuǎn)換器、GPIO等功能,還集成了一個 USB HOST插口,支持USB1.1協(xié)議,可插鼠標(biāo)、U盤等。圖 1所示的是運(yùn)動圖像檢測系統(tǒng)的硬件模塊圖,該系統(tǒng)通過USB控制器控制攝像頭對可疑運(yùn)動物體跟蹤拍照,然后經(jīng)過編碼、DMA傳輸?shù)酱鎯ζ髦?,同時檢測終端驅(qū)動MIC接口的音響發(fā)出警笛,當(dāng)檢測到運(yùn)動時,GPRS無線通信模塊被激活,檢測終端發(fā)出AT指令驅(qū)動GPRS發(fā)送短信告知用戶。
圖1 運(yùn)動圖像檢測終端系統(tǒng)的硬件模塊圖
GPRS模塊采用飛凌公司的TE-GPRS,可以搭載西門子MC39i、華為GTM900-C等多種GPRS模組,具備5線串口,內(nèi)部集成了TCP/IP協(xié)議棧,并且擴(kuò)展了TCP/IP AT指令,使得用戶利用該模塊開發(fā)數(shù)據(jù)傳輸設(shè)備變得簡單方便,通過20P排線連接開發(fā)板的COM口和GPRS 的CON8接口。
無線圖像報警系統(tǒng)分為兩個部分,即系統(tǒng)軟件的移植與配置[1]和高級應(yīng)用程序的開發(fā),其中前者是后者實(shí)現(xiàn)的基礎(chǔ)。
2.1嵌入式操作系統(tǒng)移植
Linux是一種類 Unix操作系統(tǒng),穩(wěn)定性好,開源免費(fèi),功能強(qiáng)大,并且支持眾多的 CPU架構(gòu),同時對網(wǎng)絡(luò)有著良好的支持,支持TCP/IP、IPv4、IPv6、PPP、IGMP。一個完整的嵌入式操作系統(tǒng)包括:Bootloader、內(nèi)核、根文件系統(tǒng),三者缺一不可。本系統(tǒng)采用穩(wěn)定性較高的Linux 2.6.36版本,為滿足系統(tǒng)的要求,對系統(tǒng)源代碼作了以下改動:
(1)改寫網(wǎng)卡驅(qū)動程序。ARM1176JZF-S芯片支持的網(wǎng)卡為 DM9000,而實(shí)際的u-boot網(wǎng)絡(luò)驅(qū)動是 CS8900,從而導(dǎo)致無法 ping通宿主機(jī),tftp網(wǎng)絡(luò)服務(wù)無法使用。因此本文對其發(fā)布源碼中的網(wǎng)卡驅(qū)動程序進(jìn)行了改寫,使其能夠啟動網(wǎng)絡(luò)服務(wù)。
(2)添加日志型文件系統(tǒng)支持。該系統(tǒng)需要斷電后能保存數(shù)據(jù)和配置參數(shù),所以更改根文件系統(tǒng),把只讀文件系統(tǒng)RAMDISK升級為YAFFS2文件系統(tǒng),這種支持讀寫的日志型文件系統(tǒng)能夠記錄存儲大量的圖片信息。
2.2運(yùn)動圖像動態(tài)監(jiān)測算法及程序移植
背景差分算法是常用的基于圖像信息的運(yùn)動檢測算法之一,其特點(diǎn)是運(yùn)算速度快,位置精確,能夠分割出完整的運(yùn)動對象。背景圖像差分算法的公式如下[2]:
其中,ID(x,y)是當(dāng)前檢測到圖像差分后在(x,y)處的灰度值,I(x,y)為當(dāng)前檢測圖像在(x,y)處的灰度值BN (x,y)更新后的背景圖像在(x,y)處的灰度值[2]。一般情況下,由于運(yùn)動物體在灰度上與背景存在很明顯的差異,選取合適的閾值,差值圖像的灰度值大于閾值,則判定有運(yùn)動物體在監(jiān)視現(xiàn)場中,從而得到運(yùn)動目標(biāo)圖像,如圖2所示。通過大量實(shí)驗(yàn)得出當(dāng)系統(tǒng)取閾值為120時,能夠很好地進(jìn)行監(jiān)控并排除由照明或天氣的緩慢變換而導(dǎo)致的背景變換。如圖3所示,當(dāng)現(xiàn)場異常活動圖像與背景圖像的閾值超過了系統(tǒng)設(shè)定值120時,則認(rèn)為現(xiàn)場有異常,即有人闖入。
圖2 運(yùn)動圖像
圖3 處理后圖像
(1)移植motion程序
在宿主機(jī) Linux系統(tǒng)中打開 motion程序并交叉編譯得到 motion應(yīng)用程序的可執(zhí)行文件,motion.conf是程序與操作者的接口文件,通過修改 motion.conf的配置來實(shí)現(xiàn)多重功能。
(2)配置motion.conf
On_event_start motion_start:當(dāng)探測到運(yùn)動,執(zhí)行所設(shè)定目錄中的文件腳本 motion_start,該腳本用來連接motion程序、報警程序和GPRS主程序。
Target_dir/sdcard/motion:當(dāng)探測到運(yùn)動時,截取圖片并存儲在SD卡的motion文件夾中。
Threshold 120定義比較的閾值,對兩幀圖像進(jìn)行比較時,變化的像素點(diǎn)超過閾值則認(rèn)為圖像發(fā)生變化。
2.3GPRS聯(lián)網(wǎng)
GPRS的網(wǎng)絡(luò)連接是整個無線圖像監(jiān)控的基礎(chǔ),它是通過PPP協(xié)議來完成的。PPP協(xié)議主要是用來通過撥號或?qū)>€方式進(jìn)行點(diǎn)對點(diǎn)連接發(fā)送數(shù)據(jù),使其成為各種主機(jī)、網(wǎng)橋和路由器之間連接的一種共通的解決方案。嵌入式 Linux系統(tǒng)已完整實(shí)現(xiàn)了PPP協(xié)議,Linux內(nèi)核關(guān)于PPP協(xié)議的配置選項(xiàng)都包含在 “Network device support”選項(xiàng)中,需要通過 make menuconfig打開內(nèi)核文件并勾選包括 PPP協(xié)議支持、PPP壓縮、PPP異步/同步串口通信。完成配置后,重新編譯內(nèi)核文件。
3.1驅(qū)動攝像頭工作
在 Linux下,所有外設(shè)都被看成是一種文件,稱為設(shè)備文件。設(shè)備驅(qū)動程序就是外設(shè)與內(nèi)核之間的橋梁,它完成設(shè)備的初始化和釋放、中斷處理和對設(shè)備文件的各種操作等功能,能夠?yàn)橛脩艟帉懙膽?yīng)用程序屏蔽外設(shè)的硬件細(xì)節(jié),使得應(yīng)用程序可以像普通文件一樣對外設(shè)進(jìn)行操作。對于 USB攝像頭,Linux內(nèi)核的驅(qū)動程序?yàn)槠涮峁┝嘶镜?I/O操作的接口函數(shù) open、close、read、write,內(nèi)存映射功能、中斷的處理以及對I/O通道的控制接口函數(shù) ioctl,并將其定義在 struct ile_operations的結(jié)構(gòu)體中。當(dāng)應(yīng)用程序?qū)ν庠O(shè)進(jìn)行訪問時,Linux內(nèi)核將通過對struct file_operations結(jié)構(gòu)來訪問驅(qū)動程序提供相應(yīng)的函數(shù)。
對USB攝像頭進(jìn)行驅(qū)動時,先將USB控制器的驅(qū)動程序模塊靜態(tài)地編譯進(jìn)內(nèi)核文件中,在使用攝像頭時,需使用 insmode加載攝像頭驅(qū)動文件,并在/dev目錄下創(chuàng)建video2文件。
3.2報警主程序編程
當(dāng)USB攝像頭檢測到運(yùn)動物體時,系統(tǒng)將驅(qū)動音響發(fā)出警笛聲,只需編寫一個播放軟件即可。根據(jù)嵌入式系統(tǒng)開發(fā)特性,需先在 Linux宿主機(jī)上編寫應(yīng)用程序,在通過交叉編譯、鏈接生成能在目標(biāo)板上運(yùn)行的可執(zhí)行文件。
由于系統(tǒng)的警笛文件格式是FLAC格式,則需要移植FLAC編碼庫文件,使用其中的API函數(shù)實(shí)現(xiàn)音頻文件解碼工作,首先通過函數(shù) FLAC_stream_decoder_new()申請解碼對象,然后對解碼音頻對象進(jìn)行相關(guān)的初始化FLAC_stream_decoder_init_file()。利用函數(shù)FLAC_stream_cecoder_set_md5_checking()來對 MD5值進(jìn)行相關(guān)的檢測, 通過函數(shù) FLAC_stream_decoder_process_single()進(jìn)行FLAC數(shù)據(jù)幀的解碼工作,完成后刪除解碼對象 FLAC_stream_decoder_delete()。每解碼一幀的數(shù)據(jù),還會執(zhí)行一個回調(diào)函數(shù),該函數(shù)會將解碼后的音頻數(shù)據(jù)送入到聲卡設(shè)備中播放。
3.3GPRS模塊編程
AT即 Attention,AT指令集是從終端設(shè)備(Terminal Equipment,TE)或 者 數(shù) 據(jù) 終 端 設(shè) 備(DataTerminal Equipment,DTE)向終端適配器(Terminal Adapter,TA)或者數(shù)據(jù)電路終結(jié)設(shè)備(Data Circuit Terminating Equipment,DCTE)發(fā)送的。通過TA、TE,發(fā)送AT命令來控制MS (Mobile Station)的功能,與GSM網(wǎng)絡(luò)業(yè)務(wù)進(jìn)行交互。圖4所示為GPRS系統(tǒng)結(jié)構(gòu)圖。通過對TE、TA、ME之間的控制,用戶可以通過命令進(jìn)行呼叫、短信、電話本、數(shù)據(jù)業(yè)務(wù)、補(bǔ)充業(yè)務(wù)、傳真等方面的控制[1]。
圖4 GPRS模塊系統(tǒng)結(jié)構(gòu)圖
前面所述 Linux的設(shè)備全都被看成特殊的文件,所以對于串口等設(shè)備的函數(shù)完全可以使用 Linux內(nèi)核提供的API函數(shù)。由于ARM11通過串口與GPRS模塊通信,因此,首先通過 get_baudrate(int argc,char**argv)設(shè)置波特率,從終端獲取參數(shù)。打開串口,子函數(shù)tty_init()通過使用 fd=open(“/dev/ttySAC1”,D_RDWR)來打開串口文件,串口對應(yīng)的設(shè)備文件為/dev/ttySAC1,fd是設(shè)備打開后返回的文件描述符 (打開錯誤返回-1)。以后與之相關(guān)的操作都可以使用該文件描述符進(jìn)行操作,初始化串口并通過 tcsetattr(fd,TCSANOW,&newtio)設(shè)置終端控制屬性。函數(shù)gprs_msg()通過tty_write()讀取串口信息,串口通過讀取如下相關(guān)GPRS指令來確定相關(guān)配置:
AT+CMGF=1,表示英文發(fā)送短信方式;
AT+CMGS=電話號碼,表示GPRS需發(fā)送的電話號碼;
AT+CMGL,表示列舉短息消息。
每次配置的參數(shù)都會被存儲到ROM存儲器中,如果下次沒有收到新的參數(shù)配置命令,則會按保存的參數(shù)運(yùn)行。圖5所示為手機(jī)接收GPRS發(fā)送的警報短信提示,系統(tǒng)工作時,GPRS連接到中國聯(lián)通的內(nèi)網(wǎng)中,圖像檢測終端通過控制GPRS工作實(shí)現(xiàn)報警。
圖5 手機(jī)接收GPRS發(fā)送的警報短信
本文在深入研究了嵌入式技術(shù)和GPRS技術(shù)的基礎(chǔ)上,結(jié)合數(shù)字通信技術(shù)、網(wǎng)絡(luò)技術(shù)和計算機(jī)技術(shù),提出了一種基于嵌入式ARM11平臺和GPRS遠(yuǎn)程無線圖像監(jiān)控系統(tǒng)的設(shè)計方案。該系統(tǒng)采用三星公司的 S3C6410為核心的硬件平臺,搭建嵌入式 Linux操作系統(tǒng),能夠把攝像頭拍攝的圖像信息保存在SD擴(kuò)展卡中,實(shí)現(xiàn)實(shí)時報警,并發(fā)送報警短信到用戶手機(jī)中。本系統(tǒng)具有很好的實(shí)時多任務(wù)性、穩(wěn)定性和可靠性,能夠滿足大多數(shù)場合的使用需求。
[1]河泰,王洪濤.Linux2.6內(nèi)核標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社,2008.
[2]曹丹華,鄒偉,吳裕斌.基于背景圖像差分的運(yùn)動人體檢測[J].光電工程,2007,34(6):107-111.
[3]唐人財,劉連浩.基于嵌入式Linux遠(yuǎn)程圖像監(jiān)控系統(tǒng)的設(shè)計[J].計算機(jī)與現(xiàn)代化,2010(1):31-34.
[4]BLANCHETTE J,SUMMERFIELD M.C++GUI programming with Qt4(Sencond Edition)[M].Prentice Hall,2008.
[5]韋東山.Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[6]MICBAEL B.C C/C++F嵌入式系統(tǒng)編程 [M].北京:中國電力出版社,2004.
Research of remote wireless image alarm system based on ARM11 and GPRS
Xu Yuanyuan,Kuang Fei,Zhong Luyuan
(Southwest Petroleum University,School of Computer Science,Chengdu 610500,China)
The essay designs and realizes a remote image alarm system which utilized ARM11 and GPRS communication technology,and states the structure model and design thought of system.Using ARM11 and GPRS protocol to process the image,the system completes the design of hardware and software of the system,makes connection between alarm terminal and mobile devices,and finally realizes the monitoring and alarm by screenshot in time.
ARM11;GPRS;embedded system;image alarm system
TP311;TP391
A
1674-7720(2015)02-0038-03
(2014-09-08)
徐媛媛(1982-),通信作者,女,碩士,講師,主要研究方向:嵌入式系統(tǒng)開發(fā)。E-mail:13880429223@163.com。
匡斐(1992-),男,本科在校生,主要研究方向:計算機(jī)科學(xué)與技術(shù)。
鐘璐遠(yuǎn)(1994-),女,本科在校生,主要研究方向:物聯(lián)網(wǎng)工程專業(yè)。