隨著信息技術和Internet技術的發展,實現家居網絡化和智能化已經成為當前研究的熱點。具有用戶界面、能遠程控制、智能管理的電器是未來的發展趨勢。在此形勢下,基于ARM、PowerPC等32位微處理器的出現,使嵌入式Internet成為現實,傳統PC的Web服務完全可以通過嵌入式控制器實現。正如早已為人們熟知的“把互聯網帶入生活中”,使用嵌入式Web技術的家居計算機網絡成為目前網絡發展的一個重要方向。
基于PC架構的智能家居由于實用性較差已經逐步退出了市場,目前只有一些國外廠商和極少數國內廠商選擇了基于嵌入式的技術方案。而基于嵌入式系統的家庭智能系統在國內才剛剛出現,隨著嵌入式技術更加廣泛的應用,成本的逐步降低,智能家居最終將走向嵌入式[1]。
經過比較,嵌入式智能家居具有明顯的優勢,因此本文選擇嵌入式系統作為智能家居的核心。由于ARM處理器具有體積小、功耗低、成本低、性能高以及Linux開源等優點,本系統選擇三星公司的ARM9處理器S3C2410作為嵌入式處理器,操作系統為Linux。
1 系統整體模塊設計
本系統主要在嵌入式系統上進行視頻監控模塊和遠程電器控制模塊的設計。嵌入式系統由嵌入式處理器S3C2410和Linux系統組成。視頻監控模塊由Web服務器、視頻服務器和客戶端以及實現通信的通道組成。遠程電器控制模塊在Web服務器上,通過CGI交互,實現對家電的控制。本系統采用模塊化設計,由嵌入式系統模塊、視頻采集模塊、視頻服務器模塊、視頻客戶端模塊和遠程電器控制模塊組成。系統的整體框架圖如圖1所示。嵌入式處理器S3C2410是一款基于ARM920T內核的16/32位RISC微處理器。內部帶有全性能的MMU(內存管理單元),它適用于設計移動手持設備類產品,具有性能高、功耗低、接口豐富和體積小等優良特性[2]。
2 系統的軟件設計實現
2.1 圖像采集模塊的實現
本系統采用USB接口的PC350攝像頭,該攝像頭的后端采用OV511+視頻芯片, 圖像傳感器采用新一代CMOS感光芯片,攝像頭硬件壓縮率超過5:1,非常適合視頻監控的圖像采集[3]。目前Linux內核中已經有支持OV511芯片的驅動,因此無須下載驅動程序。該驅動可以用模塊化的方式加載,也可以編譯進內核,本系統采用編譯進內核的方法。
在內核加載了OV511攝像頭驅動之后,系統就能識別并支持該攝像頭,再只需編寫視頻采集程序就可工作。視頻采集應用程序的設計通過Linux內核中的Video4Linux實現。
Video4Linux是Linux中關于視頻設備的內核驅動,它為針對視頻設備的應用程序編程提供了一系列接口函數。在視頻采集中,應用程序首先通過open( )函數打開視頻采集設備并返回一個文件描述符號,這個文件描述符就代表了捕獲的設備硬件。成功開啟設備檔后,調用ioctl( )取的設備文件的相關信息,并且將取得的信息放到video capability結構中,同樣調用ioctl( )將視頻窗口信息放到video picture結構中。視頻設備的關閉通過close( )函數實現。在本系統中,視頻圖像的獲取采用mmap( )的方式共享內存來實現。此方法不必再調用read( )、write( )等操作,不僅進程可以直接讀寫內存,進程通信效率高,而且不需要拷貝任何數據。
2.2 遠程視頻監控模塊的實現
視頻監控模塊采用“瀏覽器—服務器”模式,即在采集端構建嵌入式Web服務器,并在Web服務器的基礎上移植視頻服務器webcam,在客戶端利用Java Applet 來接受視頻服務器發送過來的視頻信息。本模塊包括嵌入式Web服務器設計和視頻服務器webcam的移植實現。
2.2.1 嵌入式Web服務器設計
嵌入式Web服務器器是指將Web服務器引入到嵌入式系統中,在相應的硬件平臺和軟件系統的支持下,根據應用的需要實現通用的Web服務器的全部或者部分功能。嵌入式Web服務器仍然以TCP/IP協議為底層,在該Web中使用的應用層的通信協議是HTTP協議,通過HTTP協議實現客戶端(一般為瀏覽器)和嵌入式Web服務器的信息交換[4]。
在嵌入式領域,常用的Web服務器有thttpd和boa,boa目前用的最多。boa是一個非常小巧的Web服務器,可執行代碼只有約60 KB,占用系統資源少,而且速度快、安全性好[5]。目前使用的Linux2.6內核還沒有包含boa代碼,因此需要移植到本系統中。首先從下載boa源代碼(目前最新版本boa-0.94.13),解壓到Linux系統目錄下,用交叉編譯器編譯。這樣在boa-0.94.13/src目錄下生成boa應用程序,把生成的boa應用程序下載到開發板上Linux系統中的/bin目錄下,讓boa在系統啟動時自動運行,這樣在開發板上就移植了boa服務器。
2.2.2 視頻服務器webcam的移植實現
視頻信息通過攝像頭采集到的圖像需要通過網絡傳送到另一端,并通過瀏覽器顯示出來,這一過程通過視頻服務器實現。視頻服務器的工作主要是與客戶端建立鏈接,并根據客戶端用戶的指令,調用相應的函數處理客戶端的控制要求。視頻服務器工作流程如圖2所示。
webcam是一個比較常用的視頻服務器程序,對本系統采用的OV511攝像頭非常適用。通過網絡下載webcam_server的Linux版本,它是基于GNU架構之下的,完全免費,源碼開放。本設計采用webcam server―0.50.tar.gz。從http://www.neilbriscoe.co.uk/scratch/網站下載,解壓到Linux目錄下,修改Makefile為交叉編譯環境,然后用Make命令進行編譯,把生成的webcam應用程序下載到開發板上Linux系統中的/bin目錄下,這樣就移植了視頻服務器。
2.3 智能家居遠程監控的實現
遠程監控是智能家居監控中的重要組成部分,只要有Internet的地方,主人就可以通過上網登錄設計好的智能家居管理界面,以此來實現對家里的實時監控。例如,主人在公司上班,家里有小孩或者生病的老人,主人可以通過公司電腦遠程監視關注家里的情況,如有意外,主人就可以對此及時做出反應。當主人快要下班時可以事先通過界面管理實現對家電的控制(如打開客廳電燈、讓電飯鍋開始煮飯等)。
2.3.1 智能家居界面的實現
本設計采用html語言來編寫智能家居的管理界面,以下是智能家居管理主界面的源代碼,文件名為my.html。
<html>
<head>
<title>遠程監控</title>
</head>
<frameset rows=“20%,80%”>
<frame img src=“images/ltby006.jpg” marginwidth=“0”
scrolling=“no”
frameborder=“0” norsize=“norsize”>
<frameset cols=“20%,80%”>
<frame src=“left.html”scrolling=“no” name=“left_frame”
frameborder=“0”>
<frame src=“right.html” name=“right_frame”>
</frameset>
</frameset>
</html>
該代碼包含left.html和right.html的相關鏈接,其中left.html又包含著用戶信息、密碼修改、遠程控制、狀態查詢、安全布防、視頻監控等相關鏈接。設計好相關的.html文件和CGI程序,通過U盤把.html文件和CGI程序拷貝到開發板根文件系統下的/www目錄下。
2.3.2 遠程電器控制模塊的模擬實現
用無線通信方式進行家電的控制靈活性較強、覆蓋范圍較廣,免去了綜合布線的費用和精力,缺點是家庭內部要有家庭網關和無線路由器,接收終端還要有相應的接收裝置,成本較高。因此,基于實用性和大眾化方面的考慮,本文所研究的家電控制器的控制采用I/O控制。
家電的本地集中控制硬件設計是利用嵌入式系統的I/O口對家用電器的用電進行控制。系統通過S3C2410的I/O口輸出高低電平來進行控制,同時用發光二極管指示家用電器工作狀況。
發光二極管亮,表示家用電器通電,發光二極管滅,表示家用電器斷電。GPB7控制電器1,GPB8控制電器2,GPB9控制電器3。由于被控模塊家用電器大多使用220 V交流電,屬于強電電路,所以使用繼電器控制家電。在芯片與繼電器中間加驅動電路。驅動電路可以利用光電耦合的通、斷去控制繼電器的開與關。也可以利用三極管的飽和與截止去控制繼電器的開與關,這里采用三極管方式。當I/O口引腳輸出低電平時,三極管飽和導通,+5 V電源加到繼電器線圈兩端,繼電器吸合,同時狀態指示的發光二極管也點亮,繼電器的常開觸點閉合,相當于開關閉合。當I/O口引腳輸出高電平時,三極管截止,繼電器線圈兩端沒有電位差,繼電器銜鐵釋放,同時狀態指示的發光二極管也熄滅,繼電器的常開觸點釋放,相當于開關斷開。注:在三極管截止的瞬間,由于線圈中的電流不能突變為零,繼電器線圈兩端會產生一個較高電壓的感應電動勢,線圈產生的感應電動勢則可以通過二極管D1釋放,從而保護了三極管免被擊穿,也消除了感應電動勢對其他電路的干擾,這就是二極管D1的保護作用。這里主要是采用模擬的方式來實現家電的遠程控制,板子上的LED燈表示家電的開關狀態。控制開關狀態的CGI代碼用shell語言實現,下面就是其中一個電器的代碼:
#/bin/sh
case $QUERY_STRING in
*kai1*)
type1=1
;;
*guan1*)
type1=0
;;
esac
2.3.3 視頻客戶端Java Applet的實現
在本系統中,客戶端接收從視頻服務器發送過來的視頻信息,并通過Web瀏覽器顯示監控圖像,瀏覽器自身不能完成這個功能,而是通過在HTML文檔里嵌入Applet來實現的[6]。Applet是一種特殊的Java程序,它能夠嵌入到HTML文檔并被支持Java的網頁瀏覽器下載執行。本系統客戶端就是利用Java Applet完成用戶與視頻服務器的交互,實現視頻播放。
視頻監控網頁用HTML語言設計。在本系統中,攝像頭系統監視界面直接采用改進的webcam_server―0.50nsrcnclient。以下是經過修改后的webcam.html源代碼,其中http://202.193.74.230指的是開發板的IP地址,可以根據實際需要改變源代碼里面的高度和寬度,從而調整視頻畫面的大小。
<html>
<head>
<title>WebCam</title>
</head>
<br><br><br>
<p align=“center”><APPLET CODE =“WebCamApplet.clas”
archive=“applet.jar”WIDTH =“320”HEIGHT =“240”>
<param name=URL value=“http://202.193.74.230:8888”>
<param name=FPS value=“1”>
<param name=width value=“320”>
<param name=height value=“240”>
</APPLET>
<p align=“right”><img src=“images/sxt.jpg”/>
</body>
</html>
還要把/src/client下的Applet.jar文件拷貝到開發板根文件系統下的/www目錄下。最后在電腦主機上安裝一個jre1.6.0 03,目的是使瀏覽器支持Java,這樣就完成了客戶端的設計,從而實現視頻在網頁上顯示的工作。
3 實驗測試
首先,設置開發板的IP,即在超級終端下輸入命令ifconfig eth0 202.193.74.230。在實驗室的另一臺電腦主機上運行IE瀏覽器,輸入設置好的IP,訪問板子的主監控界面。智能家居管理主界面如圖3所示。
點擊遠程控制,出現如圖4所示的家電控制界面,選擇電器的狀態(開或關),就可以通過網頁實現電器的模擬開關。點擊視頻監控,將出現視頻監控的界面,如圖5所示(本機電腦網頁上實時實現的是另一實驗室的監視畫面)。
通過實驗測試,發現家居控制效果好,圖像傳輸效果實時,畫面質量清晰、流暢,很好地實現了家居的智能監控。
本系統的設計是在數字信息技術和網絡技術發展的前提下,運用當前的嵌入式技術和ARM技術設計的智能家居監控系統,具有一定的創新性。該系統由于采用了高性能的ARM9處理器和嵌入式Linux操作系統,具有一定的可擴展性,可以通過適當的功能擴展來滿足用戶更高的要求。此外,本系統具有功能強、穩定性好的特點,而且成本低,對嵌入式智能家具監控系統的開發有一定的借鑒意義。
評論
查看更多