針對智能家居的應用需要和智能手機的日益普及,設計并實現了一個以Android手機作為遙控終端及FPGA為主控中心的智能家居系統,該系統利用藍牙進行通信,應用多種傳感器,實現視頻監控、學習型紅外遙控、溫濕度采集、振動檢測以及GSM遠程報警等功能,從而滿足用戶的需求并達到一種智能控制的效果。該系統使用方便、操作簡單、易于擴展。 智能家居是以住宅為平臺,利用通信技術、自動控制技術等新技術,將各種家電安防設施進行集成,組成住宅設施管理系統,造就一個安全便利舒適環保的家居生活環境。近年隨計算機技術、通信技術和網絡技術的發展,智能家居逐漸成為未來家居生活的發展方向。在智能家居的控制系統中,控制終端是其核心設備,目前主要有以下幾種方案:第一種是采用鍵盤、LCD顯示器和紅外遙控器等設備對各種家用設備進行控制,這種方式需要對終端的軟件和硬件分別進行設計,因而設計復雜且成本高。第二種是采用PC作為控制終端,使用這種方式的缺陷是只能在固定的位置進行控制。第三種是采用智能手機作為控制終端,通過WiFi、藍牙、GSM等無線網絡對家居系統進行控制,此方案使用方便、快捷。 隨著Android智能終端日益普及,其作為控制終端將成為未來智能家居系統發展的趨勢。本系統以Android智能設備作為遙控終端,以FPGA作為主控中心處理器,通過藍牙與手機端進行通信并對數據進行處理,實現視頻監控、紅外遙控、溫濕度檢測、振動檢測、GSM遠程報警等功能。FPGA內部資源豐富,接口方便,還可實現臉部識別、指紋識別等功能。 1 系統結構 系統結構框圖如圖1所示,首先在Android平臺下開發一個應用程序,數據通過藍牙發送給主控中心,當FPGA接收處理完數據后通過串口給相應的功能模塊發送指令,各功能模塊執行相應任務后也會將數據通過主控中心返回給智能終端并顯示,其中采用串口通信可讓通信方式多樣化,如485總線、藍牙模塊、WiFi模塊、ZigBee模塊等都可用串口進行收發數據。這種結構使得用戶只需用手機、平板電腦等Android終端就能任意控制各種家用設備并實時掌握周圍的環境情況,使用非常簡單快捷。 ![]() 圖1 系統結構框圖 2 主控中心FPGA設計 本系統采用FPGA作為中間控制部分的處理器主要基于以下兩點考慮,首先整個系統中用到多個串口,普通單片機內部不超過3個串口,而FPGA可以根據需求搭建多個UART接口;其次FPGA可以采用平行以及流水線處理,可以完成視頻數據采集、VGA接口輸出等高速處理,還可完成臉部識別、指紋識別等復雜運算。設計中采用的FPGA芯片型號是Altera公司CycloneII系列EP2C8Q208C8,在QuartusII平臺下用Verilog語言進行開發。 2.1 UART模塊的設計 由于FPGA與各功能模塊均利用串口進行通信,因此需要搭建多個UART接口,對數據進行傳輸和處理。UART通信模塊主要由波特率產生模塊、發送模塊和接收模塊三部分組成,其中波特率產生模塊是將50MHz的主時鐘經過多次分頻后為UART的收發模塊提供特定的波特率。 FPGA中的每個UART都被例化成一個子模塊,各模塊間通過輸出輸入接口進行數據的交互,此外還有一個控制模塊,用于控制每個串口的發送和接收。 2.2 視頻監控的設計 視頻監控是家庭防盜系統中必不可少的部分,本系統通過OV7670攝像頭獲取視頻信息,用FPGA進行數據的采集和存儲,最后通過VGA接口用顯示器顯示出來?蚣苋鐖D2所示。 ![]() 圖2 視頻監控框架圖 OV7670是OmmVision公司生產的CMOS攝像頭,通過SCCB總線控制,圖像最高達到30幀/s。FPGA先構建一個配置模塊,用SCCB總線對OV7670進行初始化設置并使其開始工作,其中的SCCB總線本質為簡化了的I2C總線。 配置成功后,FPGA將接收RGB565格式的數據,即第一個字節的前5位表示紅色,第一字節的后3位和第二字節前3位表示綠色,第二字節后5位表示藍色。數據通過SDRAM控制模塊存進外部SDRAM中,SDRAM的主要作用是把圖像數據以30幀/s的速率進行緩存,然后再以60幀/s的速率讀出。從SDRAM讀出的數據將通過VGA控制模塊轉換為VGA協議輸出,最后通過一個三路10位高速視頻DAC芯片ADV7123進行D/A轉換后顯示在顯示器上,進行實時的監控。 除了可實時監控外,當系統觸發警報信息后可以對視頻信息存儲到外接Flash中,由于Flash的容量以及讀寫速度有限,不能將所有視頻數據保存下來,因此采樣間斷性存儲的方法,即以圖片的形式將現場的情況保存下來,這種方式既能減少Flash的容量,又可以較好地保存現場的信息。 3 Android應用程序的開發 Android終端的應用程序是基于Android2.3版本,在Eclipse平臺下用Java語言進行開發,其主要內容包括設計一個人機交流界面、獲取已配對的藍牙設備并建立連接、利用Socket進行數據傳輸等。 3.1 界面設計 該應用程序主要有兩個界面,開啟時首先進入主控界面,主要包括溫濕度的顯示、防盜系統的開啟與關閉、電視遙控等功能,點擊電視遙控按鍵將進入紅外遙控界面。界面通過AbsoluteLayout進行布局設計,這是一種絕對布局,可以任意調整每個控件的橫坐標和縱坐標,界面上每個按鍵通過綁定一個地址和添加一個監聽器,點擊按鍵后會觸發監聽器并執行相應的操作。 3.2 藍牙的獲取和連接 應用程序中需要建立一個藍牙通信通道,以便與FPGA端的藍牙模塊進行數據傳輸,在建立藍牙通信之前先搜索出已配對的藍牙設備并用列表顯示,當點擊其中一個設備進行連接時,其地址值會被記錄下來并通過Intent回傳給主Activity。當本機藍牙開啟以及要連接設備的地址獲取后就可建立Socket連接,通過Thread創建的一個線程來進行Socket連接,連接成功后界面上會顯示“連接成功”。 4 功能模塊的開發 4.1 無線通信設計 系統中主要運用了藍牙、GSM這兩種無線通信協議,其中藍牙是應用在手機和主控中心之間的通信,它的傳輸距離達10m左右,滿足室內使用要求。而GSM用于遠距離報警。 4.2 學習型紅外遙控 現在大多數家庭中使用到紅外遙控器多達數個,如果將控制全部集中于手機則會十分便利,但不同遙控器的紅外編碼是不一致的,因此本系統設計的是學習型紅外遙控,它以STM8S105S4單片機作為主控芯片,包括了紅外發射和接收兩部分電路,能夠學習并存儲各種紅外編碼,工作流程如圖3所示。 ![]() 圖3 學習型紅外遙控工作流程 4.3 溫度檢測 溫度檢測采用NTC(熱敏電阻),它是隨溫度上升電阻呈指數關系減小、具有負溫度系數的材料,因此只要采樣出的電阻值然后與其溫度阻值變化列表進行對應便可得出當前的溫度值。設計中用單片機內部的10位A/D轉換器采樣其電壓值,再根據分壓電阻求出NTC的阻值,最后通過取表得出溫度值。 4.4 濕度檢測 濕度檢測采用HS1100濕度傳感器,它是一種基于電容原理的濕度傳感器,相對濕度的變化和電容值呈線性規律。在實際測試中,電容值隨著空氣濕度的變化而變化,因此將電容值的變化轉換成電壓或頻率的變化,才能進行有效地數據采集。設計中用NE555組成振蕩電路,HS1100濕度傳感器充當振蕩電容,從而完成濕度到頻率的轉換。 4.5 振動檢測 振動檢測采用MMA7631三軸小量程加速度傳感器,它根據物體運動和方向改變輸出信號的電壓值。各軸的信號在不運動或不被重力作用的狀態下,其輸出為1.65V。采用STM8S105S4單片機內部的10位A/D轉換器采樣3個方向的電壓,根據采樣結果的變化來判斷門窗是否振動,當變化范圍超過一定的限值時,則判斷門窗被開啟,觸發報警信息。 本文設計并實現了一個基于Android智能終端及FPGA的智能家居系統,在3個平臺下完成開發,分別是用Java語言在Android系統下進行應用程序開發,用Verilog語言對主控FPGA進行設計以及基于STM8單片機的功能模塊設計。以FPGA作為主控中心,相比于AMR11、STM32等串行處理器,它可實現視頻監控、人臉識別等高速復雜處理,而且無須后臺服務器,減低了成本。系統以Android設備作為遙控終端,與傳統控制方案比,它可以實現程序化控制,可存貯各種個性化的控制方案。本系統使用方便、操作簡單,能滿足普通家庭的需求,具有較高的實用性和推廣價值。 |