摘 要: 設計和實現了一種基于ARM11平臺和GPRS通信技術的無線遠程圖像報警系統,論述了系統的總體結構及其設計思路。利用嵌入式ARM11和GPRS協議進行數字圖像處理,完成了圖像報警終端的軟硬件設計,使報警終端通過無線網絡與手機等設備連接,最終實現實時截圖報警監控的功能。
關鍵詞: ARM11;GPRS;嵌入式系統;圖像報警系統
0 引言
近幾年,隨著嵌入式技術迅速發展,數字化的圖像監控技術出現了新的特點:嵌入芯片更小,集成度更高,而且在某些工業應用領域中,利用無線網絡進行數據的傳輸逐漸成為了最為理想的選擇。然而傳統的圖像監控系統采用“單片機+GPRS”的系統結構,這樣的系統架構由于其硬件運算能力有限,導致整個系統的功能較弱,實時性較差,不能很好地滿足監控需要。這使得該圖像監控系統很難應用在一些特殊的環境監控中,例如教學大樓、家庭防盜、工廠或其他無人值守的場合。
本文以ARM11開發板結合ET-GPRS模塊的系統架構取代傳統的圖像監控系統,ARM11開發板通過控制攝像頭對其部署區域進行安防監控,能夠獲取圖像數據,并設計了報警系統,使其通過GPRS無線通信模塊將報警信息傳送到至有信號的任何地方,實現無線監控報警。
1 硬件平臺的選擇與設計
本系統采用了Samsung公司的S3C6410嵌入式處理器和嵌入式Linux 2.6.36操作系統。S3C6410采用ARM1176JZF-S的內核,主頻可以達到533 MHz/667 MHz,最大支持到8 bit糾錯,實現了MMU、AMBA BUS和Harvard高速緩沖體系結構,集成了通用的串口控制器、A/D轉換器、GPIO等功能,還集成了一個USB HOST插口,支持USB1.1協議,可插鼠標、U盤等。圖1所示的是運動圖像檢測系統的硬件模塊圖,該系統通過USB控制器控制攝像頭對可疑運動物體跟蹤拍照,然后經過編碼、DMA傳輸到存儲器中,同時檢測終端驅動MIC接口的音響發出警笛,當檢測到運動時,GPRS無線通信模塊被激活,檢測終端發出AT指令驅動GPRS發送短信告知用戶。
GPRS模塊采用飛凌公司的TE-GPRS,可以搭載西門子MC39i、華為GTM900-C等多種GPRS模組,具備5線串口,內部集成了TCP/IP協議棧,并且擴展了TCP/IP AT指令,使得用戶利用該模塊開發數據傳輸設備變得簡單方便,通過20P排線連接開發板的COM口和GPRS的CON8接口。
2 系統軟件的移植和配置
無線圖像報警系統分為兩個部分,即系統軟件的移植與配置[1]和高級應用程序的開發,其中前者是后者實現的基礎。
2.1 嵌入式操作系統移植
Linux是一種類Unix操作系統,穩定性好,開源免費,功能強大,并且支持眾多的CPU架構,同時對網絡有著良好的支持,支持TCP/IP、IPv4、IPv6、PPP、IGMP。一個完整的嵌入式操作系統包括:Bootloader、內核、根文件系統,三者缺一不可。本系統采用穩定性較高的Linux 2.6.36版本,為滿足系統的要求,對系統源代碼作了以下改動:
(1)改寫網卡驅動程序。ARM1176JZF-S芯片支持的網卡為DM9000,而實際的u-boot網絡驅動是CS8900,從而導致無法ping通宿主機,tftp網絡服務無法使用。因此本文對其發布源碼中的網卡驅動程序進行了改寫,使其能夠啟動網絡服務。
(2)添加日志型文件系統支持。該系統需要斷電后能保存數據和配置參數,所以更改根文件系統,把只讀文件系統RAMDISK升級為YAFFS2文件系統,這種支持讀寫的日志型文件系統能夠記錄存儲大量的圖片信息。
2.2 運動圖像動態監測算法及程序移植
背景差分算法是常用的基于圖像信息的運動檢測算法之一,其特點是運算速度快,位置精確,能夠分割出完整的運動對象。背景圖像差分算法的公式如下[2]:
ID(x,y)=|I(x,y)-BN(x,y)|(1)
其中,ID(x,y)是當前檢測到圖像差分后在(x,y)處的灰度值,I(x,y)為當前檢測圖像在(x,y)處的灰度值BN(x,y)更新后的背景圖像在(x,y)處的灰度值[2]。一般情況下,由于運動物體在灰度上與背景存在很明顯的差異,選取合適的閾值,差值圖像的灰度值大于閾值,則判定有運動物體在監視現場中,從而得到運動目標圖像,如圖2所示。通過大量實驗得出當系統取閾值為120時,能夠很好地進行監控并排除由照明或天氣的緩慢變換而導致的背景變換。如圖3所示,當現場異?;顒訄D像與背景圖像的閾值超過了系統設定值120時,則認為現場有異常,即有人闖入。
?。?)移植motion程序
在宿主機Linux系統中打開motion程序并交叉編譯得到motion應用程序的可執行文件,motion.conf是程序與操作者的接口文件,通過修改motion.conf的配置來實現多重功能。
?。?)配置motion.conf
On_event_start motion_start:當探測到運動,執行所設定目錄中的文件腳本motion_start,該腳本用來連接motion程序、報警程序和GPRS主程序。
Target_dir/sdcard/motion:當探測到運動時,截取圖片并存儲在SD卡的motion文件夾中。
Threshold 120定義比較的閾值,對兩幀圖像進行比較時,變化的像素點超過閾值則認為圖像發生變化。
2.3 GPRS聯網
GPRS的網絡連接是整個無線圖像監控的基礎,它是通過PPP協議來完成的。PPP協議主要是用來通過撥號或專線方式進行點對點連接發送數據,使其成為各種主機、網橋和路由器之間連接的一種共通的解決方案。嵌入式Linux系統已完整實現了PPP協議,Linux內核關于PPP協議的配置選項都包含在“Network device support”選項中,需要通過make menuconfig打開內核文件并勾選包括PPP協議支持、PPP壓縮、PPP異步/同步串口通信。完成配置后,重新編譯內核文件。
3 高級程序設計[3-6]
3.1 驅動攝像頭工作
在Linux下,所有外設都被看成是一種文件,稱為設備文件。設備驅動程序就是外設與內核之間的橋梁,它完成設備的初始化和釋放、中斷處理和對設備文件的各種操作等功能,能夠為用戶編寫的應用程序屏蔽外設的硬件細節,使得應用程序可以像普通文件一樣對外設進行操作。對于USB攝像頭,Linux內核的驅動程序為其提供了基本的I/O操作的接口函數open、close、read、write,內存映射功能、中斷的處理以及對I/O通道的控制接口函數ioctl,并將其定義在struct ile_operations的結構體中。當應用程序對外設進行訪問時,Linux內核將通過對struct file_operations結構來訪問驅動程序提供相應的函數。
對USB攝像頭進行驅動時,先將USB控制器的驅動程序模塊靜態地編譯進內核文件中,在使用攝像頭時,需使用insmode加載攝像頭驅動文件,并在/dev目錄下創建video2文件。
3.2 報警主程序編程
當USB攝像頭檢測到運動物體時,系統將驅動音響發出警笛聲,只需編寫一個播放軟件即可。根據嵌入式系統開發特性,需先在Linux宿主機上編寫應用程序,在通過交叉編譯、鏈接生成能在目標板上運行的可執行文件。
由于系統的警笛文件格式是FLAC格式,則需要移植FLAC編碼庫文件,使用其中的API函數實現音頻文件解碼工作,首先通過函數FLAC_stream_decoder_new()申請解碼對象,然后對解碼音頻對象進行相關的初始化FLAC_stream_decoder_init_file()。利用函數FLAC_stream_cecoder_set_md5_checking()來對MD5值進行相關的檢測,通過函數FLAC_stream_decoder_process_single()進行FLAC數據幀的解碼工作,完成后刪除解碼對象FLAC_stream_decoder_delete()。每解碼一幀的數據,還會執行一個回調函數,該函數會將解碼后的音頻數據送入到聲卡設備中播放。
3.3 GPRS模塊編程
AT即Attention,AT指令集是從終端設備(Terminal Equipment,TE)或者數據終端設備(Data Terminal Equipment,DTE)向終端適配器(Terminal Adapter,TA)或者數據電路終結設備(Data Circuit Terminating Equipment,DCTE)發送的。通過TA、TE,發送AT命令來控制MS(Mobile Station)的功能,與GSM網絡業務進行交互。圖4所示為GPRS系統結構圖。通過對TE、TA、ME之間的控制,用戶可以通過命令進行呼叫、短信、電話本、數據業務、補充業務、傳真等方面的控制[1]。
前面所述Linux的設備全都被看成特殊的文件,所以對于串口等設備的函數完全可以使用Linux內核提供的API函數。由于ARM11通過串口與GPRS模塊通信,因此,首先通過get_baudrate(int argc,char**argv)設置波特率,從終端獲取參數。打開串口,子函數tty_init()通過使用fd=open(“/dev/ttySAC1”,D_RDWR)來打開串口文件,串口對應的設備文件為/dev/ttySAC1,fd是設備打開后返回的文件描述符(打開錯誤返回-1)。以后與之相關的操作都可以使用該文件描述符進行操作,初始化串口并通過tcsetattr(fd,TCSANOW,&newtio)設置終端控制屬性。函數gprs_msg()通過tty_write()讀取串口信息,串口通過讀取如下相關GPRS指令來確定相關配置:
AT+CMGF=1,表示英文發送短信方式;
AT+CMGS=電話號碼,表示GPRS需發送的電話號碼;
AT+CMGL,表示列舉短息消息。
每次配置的參數都會被存儲到ROM存儲器中,如果下次沒有收到新的參數配置命令,則會按保存的參數運行。圖5所示為手機接收GPRS發送的警報短信提示,系統工作時,GPRS連接到中國聯通的內網中,圖像檢測終端通過控制GPRS工作實現報警。
4 結論
本文在深入研究了嵌入式技術和GPRS技術的基礎上,結合數字通信技術、網絡技術和計算機技術,提出了一種基于嵌入式ARM11平臺和GPRS遠程無線圖像監控系統的設計方案。該系統采用三星公司的S3C6410為核心的硬件平臺,搭建嵌入式Linux操作系統,能夠把攝像頭拍攝的圖像信息保存在SD擴展卡中,實現實時報警,并發送報警短信到用戶手機中。本系統具有很好的實時多任務性、穩定性和可靠性,能夠滿足大多數場合的使用需求。
參考文獻
[1] 河泰,王洪濤.Linux2.6內核標準教程[M].北京:人民郵電出版社,2008.
[2] 曹丹華,鄒偉,吳裕斌.基于背景圖像差分的運動人體檢測[J].光電工程,2007,34(6):107-111.
[3] 唐人財,劉連浩.基于嵌入式Linux遠程圖像監控系統的設計[J].計算機與現代化,2010(1):31-34.
[4] BLANCHETTE J, SUMMERFIELD M. C++ GUI programming with Qt4(Sencond Edition)[M]. Prentice Hall, 2008.
[5] 韋東山.Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
[6] MICBAEL B.C C/C++F嵌入式系統編程[M].北京:中國電力出版社,2004.