摘要:根據增強家居安防系統的要求,提出一種視頻監控系統設計。通過分析ARM微處理器的結構體系和Linux操作系統的工作原理,給出了這種在ARM9核上移植瘦身后的Linux操作系統和應用程序的方案。用戶可經由任意網絡設備監控ARM板上USB攝像頭采集到的圖像,實現智能家居系統中的網絡視頻監控的目的。
關鍵詞:嵌入式:微處理器;Web服務器:視頻監控
O 引言
隨著科學技術的進步,人們對生活質量也提出了越來越高的要求,舒適、合理、便捷和安全的家居環境正逐步被大眾所青睞。視頻監控作為家居安防的重要組成部分,也逐步受到人們的重視。這里設計采用ARM處理器嵌入Linux操作系統的方法實現家居視頻監控。Linux操作系統作為嵌入式系統的新寵以其開源特點非常適合面向開發,而ARM核憑借其較高的指令和數據處理能力更是吸引了眾多研發人員的眼球,二者的結合為智能家居視頻監控提供了一個嶄新的發展方向。
1 智能家居系統的總體架構
智能家居系統就是利用計算機技術、數字技術、網絡通信技術和綜合布線技術,將與家庭生活密切相關的家電控制系統、防盜報警系統、網絡信息服務系統等通過家庭網絡有機結合起來,從而給用戶帶來最大程度的高效、便利、舒適與安全。
目前比較流行的智能家居系統由四大部分組成:家居安防系統、家居通訊系統、家居家電自動化控制系統和家居音視頻系統。圖1給出了一個簡單的智能家居系統架構。
智能家居系統中我們可以通過任意網絡設備訪問Web服務器的家庭網關以監控家用電器、報警設備和攝像頭等設備的運行情況來實現住家的智能化。在現階段智能家居起步時期,家居設計的時候往往把音視頻系統放在很重要的位置,這里介紹一種用于居家的視頻監控方法。
2 視頻監控系統的架構
鑒于家居系統的結構特點,選用集軟硬件于一體,具有軟件代碼小、高度自動化、響應速度快等特點的嵌入式系統。設計采用ARM(Adva-nced RISC Machinesl核嵌入Linux操作系統的方法實現。系統主要由嵌入式S3C2410處理器、相關支撐硬件、USB攝像頭、嵌入式操作系統Li-nux及應用軟件等部分組成,該系統是可以獨立工作的“器件”。
2.1 系統的硬件結構
系統硬件部分主要包括S3C2410處理器、儲存器和外圍電路,其結構框架如圖2所示。
基于ARM9的嵌入式S3C2410處理器是整個系統的核心,它提供了豐富的片內資源,支持Linux操作系統,并能完成整個系統的調度工作。CPU內置USB控制器,USB攝像頭將采集到的圖像通過USB接口送與S3C2410進行處理,以等待發送。網絡芯片DM9000有成熟的Linux驅動程序支持,其100Mb/s以太網接口,以傳輸速率快為設計首選。
2.2 構建基于S3C241O的嵌入式Linux系統
Linux是一款可以免費使用,且源碼開放以便開發人員隨意裁剪,且具有穩定性能的操作系統。宿主機選用Red Hat公司的IAnux9.0服務器版,并在其上構建嵌入式Linux開發平臺需要的交叉編譯環境。
在S3C2410上搭建嵌入式Linux軟件平臺需要完成引導加載程序Boot loader的移植;Linux操作系統內核的移植和包含應用程序的文件系統移植。
Boot Loader是在操作系統內核運行之前執行的一段小程序。Linux內核有自己的結構體系,智能家居系統的Linux內核由標準Linux內核裁剪而來。設計直接通過系統調用訪問Linux的內核資源,編譯內核時加入USB攝像頭Webeve 2000主芯片OV511的驅動和以太網控制芯片DM90-00的驅動,文件系統選用Ramdisk技術。
3 視頻監控系統的實現
3.1 Vide04Linux程序
Vide04Linux(簡稱V4L)是Linux中關于視頻設備的內核驅動,它針對視頻設備的應用程序編程提供一系列接口函數。對于USB接口攝像頭,其驅動程序中提供基本的I/O操作接口函數open、read、write、close等。
3.2 網絡通信程序
在TCP/IP網絡應用中,通信的兩個進程間相互作用的主要模式是瀏覽器/服務器模式,即客戶向服務器發出服務請求,服務器接收到請求后,提供相應的服務。
Linux中的網絡編程是通過Socket接口來進行的,Socket相當于進行網絡通信兩端的插座,只要對方的Socket和自己的Socket有通信聯接,雙方就可以發送和接收數據了。在智能家居系統中,用戶所持有的任意網絡設備的和家用ARM9開發板就是Socketet通信的兩端。
3.3 嵌入式WEB服務器和視頻監控的實現
家居系統選用的Web服務器是一款非常小巧的,執行代碼只有約60kB的一個單任務嵌入式boa服務器。客戶端瀏覽器和嵌入式Web服務器之間通過HTTP協議所進行的“請求一>響應”的工作原理如圖3所示。
構建嵌入式服務器boa,并針對具體情況配置boa,這里在/etc下建立boa目錄,并在/etc/boa目錄下建立boa.conf文件。設置boa.-conf文件里的用戶訪問權限User nobody為user 0;Group nogroup為Group 0;日志目錄Errorlog和AccessLog為var/log/boa/error log和/var/log/boa/access log;html文件目錄為/var/www;默認首頁為/var/www/;cgi腳本目錄為ScriptAlias/cgi-bin//var-/www/cgi-bin。在Makefile文件里修改交叉編譯器的路徑,并把PC上/etc/mime.types文件拷貝到開發板的/etc目錄下。
CGI(通用網關接口)定義了Web服務器與其他可執行程序(CGI)之間進行交互的接口標準。CGI程序用來完成Web網頁中表單數據處理的動態交互工作,CGI程序與Web服務器,以及客戶端瀏覽器之間交互工作的原理如圖4所示。
這里編寫的CGI程序主要完成客戶端瀏覽器用戶名和密碼的校驗,通過后完成本地數據的上傳。
CGI程序對index.html提交數據的處理,通過登陸后提供進入視頻監控界面(http://211.81.251.32:8888)的鏈接,我們用webc-am server作為瀏覽器端視頻播放器,該播放器可隨著監控網頁的打開而自動下載到用戶端瀏覽器,并不需要專用的瀏覽器,但看到監控效果是網頁打開時刻的靜止圖像。
我們可以通過手動刷新來達到觀看視頻的目的,這里在CGI程序里嵌入Java Script程序實現圖像每秒自刷新一次,嵌入自刷新部分程序如下:
這樣就可以看到每隔一秒圖像就自動載入的動態視頻,如圖5所示,達到了視頻監控的目的。
4 結論
采用S3C2410處理器嵌入Linux操作系統的方法實現視頻監控可最大程度地節省系統的軟硬件資源,硬件部分是系統穩定性、指令執行速度和體積等方面的最佳選擇,軟件部分以裁剪Linux操作系統的方法實現,用一個精簡的操作系統完成圖像采集與網絡傳輸的功能,十分適用于智能家居系統中的視頻監控。不僅如此,智能家居的其它功能均可采用類似方法實現,事實上,一個龐大的智能家居系統完全可以由S3C2-410處理器、相關硬件和嵌入裁剪得當的Linux操作系統完成。