張洪濤,楊名軍,葛 林,裴 浩,范羖豪
(1湖北工業(yè)大學電氣與電子工程學院,湖北 武漢430068;2北京工業(yè)大學軟件學院,北京100081)
長期以來移動圖像監(jiān)控系統(tǒng)都是監(jiān)控領(lǐng)域中的熱點.它以方便、直觀、信息內(nèi)容豐富等優(yōu)點,在很多行業(yè)有著廣泛應用.例如工業(yè)控制、倉庫管理、銀行、私人車庫等領(lǐng)域.目前,在基于嵌入式移動圖像監(jiān)控的研究中對移動圖像進行采集和處理,主要采用DSP、ARM及DSP和ARM組合.
本系統(tǒng)以高性能低功耗的ARM9芯片為處理器,Linux為系統(tǒng),來實現(xiàn)移動圖像的監(jiān)控和傳輸.
整個系統(tǒng)由圖像采集模塊、報警模塊、傳輸模塊、PC服務器等組成.系統(tǒng)以S3C2440為中央控制和數(shù)據(jù)處理中心,完成對移動圖像的采集和傳輸、系統(tǒng)報警.傳輸?shù)絇C端后,PC自動將圖像壓縮并發(fā)到指定的郵箱.
本系統(tǒng)的微處理器選用三星公司ARM9內(nèi)核的S3C2440[1]芯片,系統(tǒng)時鐘采用400MHz的工作主頻,最高可達533MHz.它集成有SDRAM、Nor-Flash及 NandFlash,外 設(shè) 有 RS-232 串 口、USB Host接口、IIC接口、IIS接口、以太網(wǎng)接口及下載引導程序的JTAG接口等.可以滿足移動圖像采集和傳輸?shù)挠布枨?
本系統(tǒng)的主要硬件結(jié)構(gòu)如圖1所示.
圖像采集模塊使用中星微ZC301P[2]芯片的攝像頭,ZC301P芯片最高支持VGA(Video Graphics Array)分辨率(640×480).在 VGA模式下速率可達到15幀/s,在 CIF(Common Intermediate Format)(352×288)和 SIF(Standard Image Format)(320×240)模式下速率可達到30幀/s.ZC301P芯片內(nèi)部集成了JPEG壓縮引擎、CMOS圖像感光芯片和USB設(shè)備控制接口,通過它采集得到移動的圖像,再通過USB接口傳輸?shù)絪3c2440中去處理.
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
報警模塊使用飛利浦(Philips)公司生產(chǎn)的語音芯片 UDA1341[3],UDA1341提供了標準的IIS(Inter-IC Sound)接口,IIS總線是飛利浦公司為數(shù)字音頻設(shè)備間傳輸音頻數(shù)據(jù)而制定的一種總線標準.UDA1341可直接和S3C2440內(nèi)置IIS總線控制器的引腳連接,該控制器是用來實現(xiàn)到外部一個8/16位立體聲 Audio Codec IC的接口.
傳輸模塊采用 DM9000[4]網(wǎng)卡芯片,DM9000是一款完全集成的,單芯片快速以太網(wǎng)MAC(數(shù)據(jù)鏈路層)控制器.它集成了一個一般處理接口,一個4K雙字的SRAM和自適應的10/100MPHY(物理層)收發(fā)器.是為了使高性能和低功耗進程兼容3.3V和5V的輸入輸出電壓.此外DM9000還支持介質(zhì)無關(guān)接口,用來與家用電話線網(wǎng)絡(luò)設(shè)備或其他收發(fā)器的質(zhì)無關(guān)接口相連接.該DM9000網(wǎng)卡芯片為了支持不同的處理器接口訪問內(nèi)部存儲器支持8、16和32位.100MBps下5類非屏蔽雙絞線和10MBps下3類、4類、5類非屏蔽雙絞線可以與DM9000網(wǎng)卡芯片的物理層接口連接.這是與IEEE 802.3u規(guī)格相符的.它有自動協(xié)調(diào)功能,可以自動完成配置以適合其線路帶寬.還支持背壓模式半雙工流量控制模式及IEEE 802.3x全雙工流量控制.
移動圖像監(jiān)控系統(tǒng)的終端軟件設(shè)計以開源的Linux為操作系統(tǒng),Linux系統(tǒng)支持多種硬件平臺,有良好的網(wǎng)絡(luò)功能及豐富的設(shè)備驅(qū)動等特點[5].根據(jù)終端硬件設(shè)備及其應用的需要進行內(nèi)核配置,裁剪出合適的內(nèi)核.監(jiān)控系統(tǒng)終端的應用軟件是建立在硬件平臺和Linux操作系統(tǒng)上的.
制作好合適的系統(tǒng)移植到開發(fā)板后,移植Madplay用于報警模塊中播放報警音樂.移植Madplay所需四個軟件包分別為zlib-1.2.3.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz和 madplay-0.15.2b.tar.gz.分別解壓、編譯安裝后會生成可以在ARM開發(fā)板上運行的二進制文件madplay.
移動圖像檢測采用的是motion方案,在Linux系統(tǒng)下,視頻設(shè)備的各種操作通過V4L(Video for Linux)實現(xiàn).移動圖像檢測算法采用幀間差分法,其思想是將前后兩幀圖像逐像素求差值,計算改變點數(shù).當改變點構(gòu)成的區(qū)域占圖像的比例大于某個值時認為有物體進入.應用程序運用V4L提供的接口函數(shù)實現(xiàn)設(shè)備的操作.motion中使用的API(Application Programming Interface)接口是 V4L.
修改配置文件motion.conf的主要配置選項:
daemon off //關(guān)掉daemon模式
locate on //將移動區(qū)域用矩形框起來
videodevice/dev/video0//設(shè)置加載USB攝像頭的設(shè)備文件
width 320
height 240 //采集圖像的大小
framerate 5 //攝像頭每秒采集的幀數(shù)
quality 85 //圖像壓縮質(zhì)量
threshold 5000//設(shè)置閥值,當兩幀圖像變化的像素點超過閥值時,則認為圖像變化
threshold_tune off//使用閥值自動調(diào)節(jié)
ffmpeg_video_codec swf //視頻編碼器
jpeg_filename%v-%Y%m%d%H%M%S-%q//圖像保存文件名的命名格式
snapshot_interval 0 //自動采集圖片
target_dir/root/motion //圖像保存路徑
on_event_start/motion/appon//檢測到移動時執(zhí)行里面的文件
gap 5//檢測到移動后5s沒有移動就觸發(fā)移動結(jié)束指令on_event_end
on_event_end/motion/appoff
//檢測到移動后若連續(xù)5s檢測不到移動則執(zhí)行該文件
移動圖像檢測主程序流程如圖2所示.
圖2 程序流程圖
判斷是否有圖像變化主要看pic.txt中的記錄是1還是0.
pic_fd = open("pic.txt",O_RDWR|O_CREAT,0666);
lseek(pic_fd,0,SEEK_SET);
ret=read(pic_fd,pic_buf,1);
系統(tǒng)睡眠標志sleep_flag=1時系統(tǒng)睡眠.
報警標志play_flag=1時系統(tǒng)正在報警.
子進程創(chuàng)建孫子進程播放MP3報警,fd=fork();
if(fd==0)
//調(diào)用madplay播放器
execl("/motion/madplay","madplay",song_name,NULL);
#define THREE_ALARM 3*60
alarm(THREE_ALARM);//添加定時器
因為圖片保存在/root/motion目錄下,system("ls/root/motion|wc-l>count.txt");可以將統(tǒng)計圖片的張數(shù)寫入count.txt文件中,打開文件后從文件開始讀取數(shù)據(jù).
cnt_fd= open("count.txt",O_RDWR|O_CREAT,0666);
lseek(cnt_fd,0,SEEK_SET);
ret=read(cnt_fd,buf,10);
當圖像變化時將全局變量con_cnt加1.
con_cnt++;
定時器時間到判斷圖像運動次數(shù)是否超過20次.
if(con_cnt>=20)
在pc端安裝msmtp和mutt用于自動發(fā)郵件.msmtp是基于GPL發(fā)布,專門負責發(fā)送郵件的客戶端軟件.它有支持 DNS模式、TLS/SSL、IPv6、多用戶、服務器端認證等特性.
編譯和安裝msmtp
mutt是Linux下的一個郵件客戶端,基于GPL發(fā)布.它跟一般的 Windows郵件客戶端不同,mutt是郵件用戶代理(MUA),因此不可以單獨使用來發(fā)送郵件.它需要結(jié)合郵件傳輸代理才能發(fā)郵件.
編譯和安裝mutt,由于pc上的Linux系統(tǒng)能用yum工具,直接用yum命令安裝mutt.
#yum install mutt
安裝完成后要手動建立一個配置文件,
#vi/etc/Muttrc
set sendmail = "/usr/local/msmtp/bin/msmtp" #msmtp命令路徑
set use_from=y(tǒng)es
set realname="yangming.j@163.com"
set editor="vi"
保存退出.
通過一個shell腳本自動將圖像壓縮后發(fā)給指定的郵箱.用tar-cf motion.tar motion來壓縮文件.用壓縮文件的 MD5(Message-Digest Algorithm 5)值來判斷文件夾中的圖像是否變化,進而確定是否將壓縮的圖像發(fā)送郵件.用echo"motion"|mutt–s"picture"–a/root/motion.tar 76931006@qq.com來發(fā)郵件,最后用conrtab每5min執(zhí)行這個腳本一次.
當攝像頭前的物體移動時,發(fā)出報警聲,郵箱收到來自yangming.j@163.com的壓縮文件(圖3).
圖3 郵件
解壓后其中的一張圖像見圖4.
圖4 圖像
當定時器3min到圖像運動次數(shù)超過20次,系統(tǒng)開始休眠.在串口終端的顯示如圖5所示.
圖5 串口終端顯示
本文設(shè)計了一種基于ARM的嵌入式移動圖像監(jiān)控系統(tǒng),實現(xiàn)了對移動圖像的檢測和處理,系統(tǒng)報警及將采集的圖片自動發(fā)送給指定的郵箱等功能,在實際運行中有良好的效果.
[1] 孫 弋.基于S3C2440的嵌入式Linux開發(fā)實例[M].西安:西安電子科技大學出版社,2010.
[2] 趙曉軍.基于ARM的嵌入式無線視頻監(jiān)控系統(tǒng)[J].微型機與應用,1674-7720(2010)16-0054-03.
[3] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2010.
[4] 韋東山.嵌入式Linux應用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[5] 孫 瓊.嵌入式Linux應用程序開發(fā)詳解[M].北京:人民郵電出版社,2006.