基于嵌入式的智能家居監(jiān)控系統(tǒng)設(shè)計(jì)
基于PC架構(gòu)的智能家居由于實(shí)用性較差已經(jīng)逐步退出了市場(chǎng),目前只有一些國(guó)外廠商和極少數(shù)國(guó)內(nèi)廠商選擇了基于嵌入式的技術(shù)方案。而基于嵌入式系統(tǒng)的家庭智能系統(tǒng)在國(guó)內(nèi)才剛剛出現(xiàn),隨著嵌入式技術(shù)更加廣泛的應(yīng)用,成本的逐步降低,智能家居最終將走向嵌入式[1]。
經(jīng)過(guò)比較,嵌入式智能家居具有明顯的優(yōu)勢(shì),因此本文選擇嵌入式系統(tǒng)作為智能家居的核心。由于ARM處理器具有體積小、功耗低、成本低、性能高以及Linux開(kāi)源等優(yōu)點(diǎn),本系統(tǒng)選擇三星公司的ARM9處理器S3C2410作為嵌入式處理器,操作系統(tǒng)為L(zhǎng)inux。
1 系統(tǒng)整體模塊設(shè)計(jì)
本系統(tǒng)主要在嵌入式系統(tǒng)上進(jìn)行視頻監(jiān)控模塊和遠(yuǎn)程電器控制模塊的設(shè)計(jì)。嵌入式系統(tǒng)由嵌入式處理器S3C2410和Linux系統(tǒng)組成。視頻監(jiān)控模塊由Web服務(wù)器、視頻服務(wù)器和客戶端以及實(shí)現(xiàn)通信的通道組成。遠(yuǎn)程電器控制模塊在Web服務(wù)器上,通過(guò)CGI交互,實(shí)現(xiàn)對(duì)家電的控制。本系統(tǒng)采用模塊化設(shè)計(jì),由嵌入式系統(tǒng)模塊、視頻采集模塊、視頻服務(wù)器模塊、視頻客戶端模塊和遠(yuǎn)程電器控制模塊組成。系統(tǒng)的整體框架圖如圖1所示。 嵌入式處理器S3C2410是一款基于ARM920T內(nèi)核的16/32位RISC微處理器。內(nèi)部帶有全性能的MMU(內(nèi)存管理單元),它適用于設(shè)計(jì)移動(dòng)手持設(shè)備類產(chǎn)品,具有性能高、功耗低、接口豐富和體積小等優(yōu)良特性[2]。 本文引用地址:http://www.ex-cimer.com/article/151722.htm
2 系統(tǒng)的軟件設(shè)計(jì)實(shí)現(xiàn)
2.1 圖像采集模塊的實(shí)現(xiàn)
本系統(tǒng)采用USB接口的PC350攝像頭,該攝像頭的后端采用OV511+視頻芯片, 圖像傳感器采用新一代CMOS感光芯片,攝像頭硬件壓縮率超過(guò)5:1,非常適合視頻監(jiān)控的圖像采集[3]。目前Linux內(nèi)核中已經(jīng)有支持OV511芯片的驅(qū)動(dòng),因此無(wú)須下載驅(qū)動(dòng)程序。該驅(qū)動(dòng)可以用模塊化的方式加載,也可以編譯進(jìn)內(nèi)核,本系統(tǒng)采用編譯進(jìn)內(nèi)核的方法。
在內(nèi)核加載了OV511攝像頭驅(qū)動(dòng)之后,系統(tǒng)就能識(shí)別并支持該攝像頭,再只需編寫視頻采集程序就可工作。視頻采集應(yīng)用程序的設(shè)計(jì)通過(guò)Linux內(nèi)核中的Video4Linux實(shí)現(xiàn)。
Video4Linux是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供了一系列接口函數(shù)。在視頻采集中,應(yīng)用程序首先通過(guò)open( )函數(shù)打開(kāi)視頻采集設(shè)備并返回一個(gè)文件描述符號(hào),這個(gè)文件描述符就代表了捕獲的設(shè)備硬件。成功開(kāi)啟設(shè)備檔后,調(diào)用ioctl( )取的設(shè)備文件的相關(guān)信息,并且將取得的信息放到video capability結(jié)構(gòu)中,同樣調(diào)用ioctl( )將視頻窗口信息放到video picture結(jié)構(gòu)中。視頻設(shè)備的關(guān)閉通過(guò)close( )函數(shù)實(shí)現(xiàn)。在本系統(tǒng)中,視頻圖像的獲取采用mmap( )的方式共享內(nèi)存來(lái)實(shí)現(xiàn)。此方法不必再調(diào)用read( )、write( )等操作,不僅進(jìn)程可以直接讀寫內(nèi)存,進(jìn)程通信效率高,而且不需要拷貝任何數(shù)據(jù)。
2.2 遠(yuǎn)程視頻監(jiān)控模塊的實(shí)現(xiàn)
視頻監(jiān)控模塊采用“瀏覽器―服務(wù)器”模式,即在采集端構(gòu)建嵌入式Web服務(wù)器,并在Web服務(wù)器的基礎(chǔ)上移植視頻服務(wù)器webcam,在客戶端利用Java Applet 來(lái)接受視頻服務(wù)器發(fā)送過(guò)來(lái)的視頻信息。本模塊包括嵌入式Web服務(wù)器設(shè)計(jì)和視頻服務(wù)器webcam的移植實(shí)現(xiàn)。
2.2.1 嵌入式Web服務(wù)器設(shè)計(jì)
嵌入式Web服務(wù)器器是指將Web服務(wù)器引入到嵌入式系統(tǒng)中,在相應(yīng)的硬件平臺(tái)和軟件系統(tǒng)的支持下,根據(jù)應(yīng)用的需要實(shí)現(xiàn)通用的Web服務(wù)器的全部或者部分功能。嵌入式Web服務(wù)器仍然以TCP/IP協(xié)議為底層,在該Web中使用的應(yīng)用層的通信協(xié)議是HTTP協(xié)議,通過(guò)HTTP協(xié)議實(shí)現(xiàn)客戶端(一般為瀏覽器)和嵌入式Web服務(wù)器的信息交換[4]。
在嵌入式領(lǐng)域,常用的Web服務(wù)器有thttpd和boa,boa目前用的最多。boa是一個(gè)非常小巧的Web服務(wù)器,可執(zhí)行代碼只有約60 KB,占用系統(tǒng)資源少,而且速度快、安全性好[5]。目前使用的Linux2.6內(nèi)核還沒(méi)有包含boa代碼,因此需要移植到本系統(tǒng)中。首先從www.boa.org下載boa源代碼(目前最新版本boa-0.94.13),解壓到Linux系統(tǒng)目錄下,用交叉編譯器編譯。這樣在boa-0.94.13/src目錄下生成boa應(yīng)用程序,把生成的boa應(yīng)用程序下載到開(kāi)發(fā)板上Linux系統(tǒng)中的/bin目錄下,讓boa在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,這樣在開(kāi)發(fā)板上就移植了boa服務(wù)器。
2.2.2 視頻服務(wù)器webcam的移植實(shí)現(xiàn)
視頻信息通過(guò)攝像頭采集到的圖像需要通過(guò)網(wǎng)絡(luò)傳送到另一端,并通過(guò)瀏覽器顯示出來(lái),這一過(guò)程通過(guò)視頻服務(wù)器實(shí)現(xiàn)。視頻服務(wù)器的工作主要是與客戶端建立鏈接,并根據(jù)客戶端用戶的指令,調(diào)用相應(yīng)的函數(shù)處理客戶端的控制要求。視頻服務(wù)器工作流程如圖2所示。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論