摘 要: 針對(duì)智能家居的應(yīng)用需要和智能手機(jī)的日益普及,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)以Android手機(jī)作為遙控終端及FPGA為主控中心的智能家居系統(tǒng),該系統(tǒng)利用藍(lán)牙進(jìn)行通信,應(yīng)用多種傳感器,實(shí)現(xiàn)視頻監(jiān)控、學(xué)習(xí)型紅外遙控、溫濕度采集、振動(dòng)檢測(cè)以及GSM遠(yuǎn)程報(bào)警等功能,從而滿足用戶的需求并達(dá)到一種智能控制的效果。該系統(tǒng)使用方便、操作簡(jiǎn)單、易于擴(kuò)展。
關(guān)鍵詞: 智能家居;Android;FPGA;視頻監(jiān)控
智能家居是以住宅為平臺(tái),利用通信技術(shù)、自動(dòng)控制技術(shù)等新技術(shù),將各種家電安防設(shè)施進(jìn)行集成,組成住宅設(shè)施管理系統(tǒng),造就一個(gè)安全便利舒適環(huán)保的家居生活環(huán)境。近年隨計(jì)算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,智能家居逐漸成為未來(lái)家居生活的發(fā)展方向[1]。
在智能家居的控制系統(tǒng)中,控制終端是其核心設(shè)備,目前主要有以下幾種方案:第一種是采用鍵盤(pán)、LCD顯示器和紅外遙控器等設(shè)備對(duì)各種家用設(shè)備進(jìn)行控制[2],這種方式需要對(duì)終端的軟件和硬件分別進(jìn)行設(shè)計(jì),因而設(shè)計(jì)復(fù)雜且成本高。第二種是采用PC作為控制終端[3],使用這種方式的缺陷是只能在固定的位置進(jìn)行控制。第三種是采用智能手機(jī)作為控制終端,通過(guò)WiFi、藍(lán)牙、GSM等無(wú)線網(wǎng)絡(luò)對(duì)家居系統(tǒng)進(jìn)行控制[4],此方案使用方便、快捷。
隨著Android智能終端日益普及,其作為控制終端將成為未來(lái)智能家居系統(tǒng)發(fā)展的趨勢(shì)。本系統(tǒng)以Android智能設(shè)備作為遙控終端,以FPGA作為主控中心處理器,通過(guò)藍(lán)牙與手機(jī)端進(jìn)行通信并對(duì)數(shù)據(jù)進(jìn)行處理,實(shí)現(xiàn)視頻監(jiān)控、紅外遙控、溫濕度檢測(cè)、振動(dòng)檢測(cè)、GSM遠(yuǎn)程報(bào)警等功能。FPGA內(nèi)部資源豐富,接口方便,還可實(shí)現(xiàn)臉部識(shí)別、指紋識(shí)別等功能。
1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)結(jié)構(gòu)框圖如圖1所示,首先在Android平臺(tái)下開(kāi)發(fā)一個(gè)應(yīng)用程序,數(shù)據(jù)通過(guò)藍(lán)牙發(fā)送給主控中心,當(dāng)FPGA接收處理完數(shù)據(jù)后通過(guò)串口給相應(yīng)的功能模塊發(fā)送指令,各功能模塊執(zhí)行相應(yīng)任務(wù)后也會(huì)將數(shù)據(jù)通過(guò)主控中心返回給智能終端并顯示,其中采用串口通信可讓通信方式多樣化[5],如485總線、藍(lán)牙模塊、WiFi模塊、ZigBee模塊等都可用串口進(jìn)行收發(fā)數(shù)據(jù)。這種結(jié)構(gòu)使得用戶只需用手機(jī)、平板電腦等Android終端就能任意控制各種家用設(shè)備并實(shí)時(shí)掌握周圍的環(huán)境情況,使用非常簡(jiǎn)單快捷。
2 主控中心FPGA設(shè)計(jì)
本系統(tǒng)采用FPGA作為中間控制部分的處理器主要基于以下兩點(diǎn)考慮,首先整個(gè)系統(tǒng)中用到多個(gè)串口,普通單片機(jī)內(nèi)部不超過(guò)3個(gè)串口,而FPGA可以根據(jù)需求搭建多個(gè)UART接口;其次FPGA可以采用平行以及流水線處理,可以完成視頻數(shù)據(jù)采集、VGA接口輸出等高速處理,還可完成臉部識(shí)別、指紋識(shí)別等復(fù)雜運(yùn)算。設(shè)計(jì)中采用的FPGA芯片型號(hào)是Altera公司Cyclone II系列EP2C8Q208C8,在Quartus II平臺(tái)下用Verilog語(yǔ)言進(jìn)行開(kāi)發(fā)。
2.1 UART模塊的設(shè)計(jì)
由于FPGA與各功能模塊均利用串口進(jìn)行通信,因此需要搭建多個(gè)UART接口,對(duì)數(shù)據(jù)進(jìn)行傳輸和處理。UART通信模塊主要由波特率產(chǎn)生模塊、發(fā)送模塊和接收模塊三部分組成,其中波特率產(chǎn)生模塊是將50 MHz的主時(shí)鐘經(jīng)過(guò)多次分頻后為UART的收發(fā)模塊提供特定的波特率。
FPGA中的每個(gè)UART都被例化成一個(gè)子模塊,各模塊間通過(guò)輸出輸入接口進(jìn)行數(shù)據(jù)的交互,此外還有一個(gè)控制模塊,用于控制每個(gè)串口的發(fā)送和接收。
2.2 視頻監(jiān)控的設(shè)計(jì)
視頻監(jiān)控是家庭防盜系統(tǒng)中必不可少的部分,本系統(tǒng)通過(guò)OV7670攝像頭獲取視頻信息,用FPGA進(jìn)行數(shù)據(jù)的采集和存儲(chǔ),最后通過(guò)VGA接口用顯示器顯示出來(lái)。框架如圖2所示。
OV7670是OmmVision公司生產(chǎn)的CMOS攝像頭,通過(guò)SCCB總線控制,圖像最高達(dá)到30幀/s。FPGA先構(gòu)建一個(gè)配置模塊,用SCCB總線對(duì)OV7670進(jìn)行初始化設(shè)置并使其開(kāi)始工作,其中的SCCB總線本質(zhì)為簡(jiǎn)化了的I2C總線。
配置成功后,F(xiàn)PGA將接收RGB565格式的數(shù)據(jù),即第一個(gè)字節(jié)的前5位表示紅色,第一字節(jié)的后3位和第二字節(jié)前3位表示綠色,第二字節(jié)后5位表示藍(lán)色。數(shù)據(jù)通過(guò)SDRAM控制模塊存進(jìn)外部SDRAM中,SDRAM的主要作用是把圖像數(shù)據(jù)以30幀/s的速率進(jìn)行緩存,然后再以60幀/s的速率讀出。從SDRAM讀出的數(shù)據(jù)將通過(guò)VGA控制模塊轉(zhuǎn)換為VGA協(xié)議輸出,最后通過(guò)一個(gè)三路10位高速視頻DAC芯片ADV7123進(jìn)行D/A轉(zhuǎn)換后顯示在顯示器上,進(jìn)行實(shí)時(shí)的監(jiān)控。
除了可實(shí)時(shí)監(jiān)控外,當(dāng)系統(tǒng)觸發(fā)警報(bào)信息后可以對(duì)視頻信息存儲(chǔ)到外接Flash中,由于Flash的容量以及讀寫(xiě)速度有限,不能將所有視頻數(shù)據(jù)保存下來(lái),因此采樣間斷性存儲(chǔ)的方法,即以圖片的形式將現(xiàn)場(chǎng)的情況保存下來(lái),這種方式既能減少Flash的容量,又可以較好地保存現(xiàn)場(chǎng)的信息。
3 Android應(yīng)用程序的開(kāi)發(fā)
Android終端的應(yīng)用程序是基于Android 2.3版本,在Eclipse平臺(tái)下用Java語(yǔ)言進(jìn)行開(kāi)發(fā),其主要內(nèi)容包括設(shè)計(jì)一個(gè)人機(jī)交流界面、獲取已配對(duì)的藍(lán)牙設(shè)備并建立連接、利用Socket進(jìn)行數(shù)據(jù)傳輸?shù)取?br />
3.1 界面設(shè)計(jì)
該應(yīng)用程序主要有兩個(gè)界面,開(kāi)啟時(shí)首先進(jìn)入主控界面,主要包括溫濕度的顯示、防盜系統(tǒng)的開(kāi)啟與關(guān)閉、電視遙控等功能,點(diǎn)擊電視遙控按鍵將進(jìn)入紅外遙控界面。界面通過(guò)AbsoluteLayout進(jìn)行布局設(shè)計(jì),這是一種絕對(duì)布局,可以任意調(diào)整每個(gè)控件的橫坐標(biāo)和縱坐標(biāo),界面上每個(gè)按鍵通過(guò)綁定一個(gè)地址和添加一個(gè)監(jiān)聽(tīng)器,點(diǎn)擊按鍵后會(huì)觸發(fā)監(jiān)聽(tīng)器并執(zhí)行相應(yīng)的操作。
3.2 藍(lán)牙的獲取和連接
應(yīng)用程序中需要建立一個(gè)藍(lán)牙通信通道,以便與FPGA端的藍(lán)牙模塊進(jìn)行數(shù)據(jù)傳輸,在建立藍(lán)牙通信之前先搜索出已配對(duì)的藍(lán)牙設(shè)備并用列表顯示,當(dāng)點(diǎn)擊其中一個(gè)設(shè)備進(jìn)行連接時(shí),其地址值會(huì)被記錄下來(lái)并通過(guò)Intent回傳給主Activity[6]。當(dāng)本機(jī)藍(lán)牙開(kāi)啟以及要連接設(shè)備的地址獲取后就可建立Socket連接,通過(guò)Thread創(chuàng)建的一個(gè)線程來(lái)進(jìn)行Socket連接,連接成功后界面上會(huì)顯示“連接成功”。
4 功能模塊的開(kāi)發(fā)
4.1 無(wú)線通信設(shè)計(jì)
系統(tǒng)中主要運(yùn)用了藍(lán)牙、GSM這兩種無(wú)線通信協(xié)議,其中藍(lán)牙是應(yīng)用在手機(jī)和主控中心之間的通信,它的傳輸距離達(dá)10 m左右,滿足室內(nèi)使用要求。而GSM用于遠(yuǎn)距離報(bào)警。
4.2 學(xué)習(xí)型紅外遙控
現(xiàn)在大多數(shù)家庭中使用到紅外遙控器多達(dá)數(shù)個(gè),如果將控制全部集中于手機(jī)則會(huì)十分便利,但不同遙控器的紅外編碼是不一致的,因此本系統(tǒng)設(shè)計(jì)的是學(xué)習(xí)型紅外遙控,它以STM8S105S4單片機(jī)作為主控芯片,包括了紅外發(fā)射和接收兩部分電路,能夠?qū)W習(xí)并存儲(chǔ)各種紅外編碼,工作流程如圖3所示。
4.3 溫度檢測(cè)
溫度檢測(cè)采用NTC(熱敏電阻),它是隨溫度上升電阻呈指數(shù)關(guān)系減小、具有負(fù)溫度系數(shù)的材料,因此只要采樣出的電阻值然后與其溫度阻值變化列表進(jìn)行對(duì)應(yīng)便可得出當(dāng)前的溫度值。設(shè)計(jì)中用單片機(jī)內(nèi)部的10位A/D轉(zhuǎn)換器采樣其電壓值,再根據(jù)分壓電阻求出NTC的阻值,最后通過(guò)取表得出溫度值。
4.4 濕度檢測(cè)
濕度檢測(cè)采用HS1100濕度傳感器,它是一種基于電容原理的濕度傳感器,相對(duì)濕度的變化和電容值呈線性規(guī)律。在實(shí)際測(cè)試中,電容值隨著空氣濕度的變化而變化,因此將電容值的變化轉(zhuǎn)換成電壓或頻率的變化,才能進(jìn)行有效地?cái)?shù)據(jù)采集。設(shè)計(jì)中用NE555組成振蕩電路,HS1100濕度傳感器充當(dāng)振蕩電容,從而完成濕度到頻率的轉(zhuǎn)換。
4.5 振動(dòng)檢測(cè)
振動(dòng)檢測(cè)采用MMA7631三軸小量程加速度傳感器,它根據(jù)物體運(yùn)動(dòng)和方向改變輸出信號(hào)的電壓值。各軸的信號(hào)在不運(yùn)動(dòng)或不被重力作用的狀態(tài)下,其輸出為1.65 V。采用STM8S105S4單片機(jī)內(nèi)部的10位A/D轉(zhuǎn)換器采樣3個(gè)方向的電壓,根據(jù)采樣結(jié)果的變化來(lái)判斷門(mén)窗是否振動(dòng),當(dāng)變化范圍超過(guò)一定的限值時(shí),則判斷門(mén)窗被開(kāi)啟,觸發(fā)報(bào)警信息。
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Android智能終端及FPGA的智能家居系統(tǒng),在3個(gè)平臺(tái)下完成開(kāi)發(fā),分別是用Java語(yǔ)言在Android系統(tǒng)下進(jìn)行應(yīng)用程序開(kāi)發(fā),用Verilog語(yǔ)言對(duì)主控FPGA進(jìn)行設(shè)計(jì)以及基于STM8單片機(jī)的功能模塊設(shè)計(jì)。以FPGA作為主控中心,相比于AMR11、STM32等串行處理器,它可實(shí)現(xiàn)視頻監(jiān)控、人臉識(shí)別等高速?gòu)?fù)雜處理,而且無(wú)須后臺(tái)服務(wù)器,減低了成本。系統(tǒng)以Android設(shè)備作為遙控終端,與傳統(tǒng)控制方案比,它可以實(shí)現(xiàn)程序化控制,可存貯各種個(gè)性化的控制方案。本系統(tǒng)使用方便、操作簡(jiǎn)單,能滿足普通家庭的需求,具有較高的實(shí)用性和推廣價(jià)值。
參考文獻(xiàn)
[1] 陳致遠(yuǎn),朱葉承,周卓泉.一種基于STM32的智能家居控制系統(tǒng)[J].電子技術(shù)應(yīng)用,2012,38(9):138-140.
[2] 滿莎,楊恢先,彭友,等.基于ARM9的嵌入式無(wú)線智能家居網(wǎng)關(guān)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2010,30(9):2541-2544.
[3] 陳喬云,賈金玲.基于智能手機(jī)與PC機(jī)的智能家居系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009,17(9):25-29.
[4] 王朝華,陳德艷,黃國(guó)宏,等.基于Android的智能家居系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(6):225-228.
[5] DEBONO CJ, KURT ABELA. Implementation of a Home Automation System through a Central FPGA Controller[C]. 2012 16th IEEE Mediterranean Electrotechnical Conference (MELECON). Piscataway, N.J: IEEE press,2012:641-644.
[6] PAYET ETIENNE,SPOTO FAUSTO. Static analysis of Android programs[J]. Information and Software Technology, 2012, 54(11):1192-1201.