單片機(jī)實現(xiàn)智能家居的遠(yuǎn)程控制
1 引言 隨著科技的發(fā)展和人們生活水平的提高,人們對居住環(huán)境方便快捷的要求越來越高,智能家居系統(tǒng)應(yīng)運而生。智能家居是現(xiàn)代電子技術(shù)、通訊技術(shù)及自動化技術(shù)相結(jié)合的產(chǎn)物。它能夠?qū)崿F(xiàn)對家電設(shè)備的自動控制和管理、對家庭的安全進(jìn)行監(jiān)測報警,能夠為用戶提供安全舒適、高效便利的生活環(huán)境。本文結(jié)合語音識別技術(shù),利用SPCE061A 豐富的語音處理功能,在已有的電力線和電話線的基礎(chǔ)上, 設(shè)計了一套智能家居系統(tǒng), 該系統(tǒng)結(jié)構(gòu)簡單、功能完善并且具有較高的性價比。 2 系統(tǒng)架構(gòu) 系統(tǒng)主要由主控制器、分控制器(89C51)、電話接口和電力線載波通信等幾部分組成。本系統(tǒng)使用了大量的硬件電路來完成部分功能模塊,其目的就是充分利用硬件電路的可靠性和穩(wěn)定性以使系統(tǒng)達(dá)到較高的性能。系統(tǒng)的總體結(jié)構(gòu)如下圖1所示。
本系統(tǒng)主要完成遠(yuǎn)程控制家用電器和自動報警兩個功能, 下面我們簡要介紹一下系統(tǒng)的工作過程: 當(dāng)用戶通過遠(yuǎn)方任何一部電話撥打家中的電話時,系統(tǒng)檢測到電話線上出現(xiàn)的振鈴信號并開始計數(shù)。如果五次振鈴無人接聽, 主控制器則發(fā)出摘機(jī)信號, 實現(xiàn)模擬摘機(jī),并播放語音提示。用戶根據(jù)語音提示輸入密碼,DTMF 電路將接收到的DTMF 信號進(jìn)行解碼,并將解碼后的數(shù)字信號送入CPU 驗證密碼是否正確, 三次輸入密碼錯誤則系統(tǒng)自動掛機(jī)。如果密碼正確,則進(jìn)一步提示用戶輸入控制命令,這時用戶可以通過按鍵或者直接用口令對家用電器進(jìn)行控制。 如果采用口令來控制,則口令經(jīng)電話線,以及電話接口的語音通道進(jìn)入,SPCE061A 單片機(jī)則將采集到的話音與預(yù)先存儲的模板進(jìn)行比較,進(jìn)行語音識別并判斷出用戶的指令,然后發(fā)送相應(yīng)的控制信號??刂菩盘柋凰腿腚娏€調(diào)制解調(diào)器調(diào)制后,通過電力線接口電路耦合到電力線上進(jìn)行傳輸,控制信息也就以廣播形式發(fā)送出去。 由電力線傳送的被調(diào)制信號由分控制器系統(tǒng)的電力線接口電路接收并被送入ST7537 進(jìn)行解調(diào),解調(diào)后的信號被送入分控制器。每個分控制器都有自己的固定地址,分控器讀取解碼后的地址信息,并判斷與自己的固有地址是否一致,若一致則接收數(shù)據(jù)信息并執(zhí)行相應(yīng)的操作,從而實現(xiàn)了對相應(yīng)家電的控制。操作完成后,分控制器向主控制器發(fā)回確認(rèn)信息,再由主控制器控制語音提示電路發(fā)出操作完成或失敗的語音提示,通知電話遙控者。 如果采用按鍵控制,用戶發(fā)出的按鍵信號(DTMF)經(jīng)解碼后送入CPU,CPU 接收到信號后從中分析出地址信息和控制信息并發(fā)出控制信號??刂菩盘柦?jīng)ST7537 調(diào)制后通過電力線傳輸?shù)椒挚刂破?,由分控制器?zhí)行相應(yīng)的操作。 當(dāng)傳感器檢測到警情時, 就會發(fā)出報警信號, 分控制器接收到報警信號, 則將報警信號耦合到電力線上。 中心控制器接收到報警信號后則自動撥打用戶預(yù)先設(shè)置的電話號碼, 電話接通后延遲兩秒, 系統(tǒng)自動播放語音報警信息。 3 SPCE061A 芯片特性簡介 SPCE061A 是一款基于μ 'nSP 內(nèi)核的16 位單片機(jī),其芯片特性如下: 1.工作電壓:內(nèi)核工作電壓VDD 為3.0-3.6V(CPU),I/O 口工作電壓VDDH 為2.4~5.5V(I/O);2. CPU 時鐘:0.32MHz~49.152MHz;3. 內(nèi)置 2K 字SRAM 和32K 閃存ROM;4. 系統(tǒng)處于備用狀態(tài)下(時鐘處于停止?fàn)顟B(tài)),耗電小于2 μ A@3.6V;5 . 具備觸鍵喚醒的功能;6 . 3 2 位通用可編程輸入/ 輸出端口;7 . 2 個1 6 位可編程定時器/ 計數(shù)器( 可自動預(yù)置初始計數(shù)值) ;8. 7 通道10 位電壓模- 數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模- 數(shù)轉(zhuǎn)換器;9. 2 個10 位DAC(數(shù)- 模轉(zhuǎn)換)輸出通道;10.14 個中斷源可來自定時器A/B,時基,2 個外部時鐘源輸入, 鍵喚醒;1 1. 具備串行設(shè)備接口;12. 低電壓復(fù)位(LVR)功能和低電壓監(jiān)測(LVD)功能;13. 內(nèi)置在線仿真(ICE,In-Circuit Emulator)接口。 SPCE061A 的內(nèi)部結(jié)構(gòu)框圖如圖2 所示。
4 語音識別技術(shù)簡介 語音識別技術(shù)就是一種讓機(jī)器通過識別和理解過程把語音信號轉(zhuǎn)變成相應(yīng)的文本或命令的技術(shù)。機(jī)器對語音進(jìn)行識別、處理的過程與人對語音進(jìn)行識別、處理的過程基本上是一致的。目前主流的語音識別技術(shù)是基于統(tǒng)計模式識別的基本理論。一個完整的語音識別系統(tǒng)可大致分為語音特征提取、聲學(xué)模型與模式匹配(識別算法)和語義理解三部分。其基本原理如下圖所示。
從圖中我們可以看出語音識別一般分為兩個步驟: 第一步是系統(tǒng)“學(xué)習(xí)”或“訓(xùn)練”階段,這一個階段的任務(wù)是建立識別基本單元的聲學(xué)模型以及進(jìn)行文法分析的語言模型, 即構(gòu)建參考模式庫。第二步是“識別”或“測試”階段,根據(jù)識別系統(tǒng)的類型選擇能夠滿足要求的識別方法,采用語音分析方法分析出這種識別方法所要求的語音特征參數(shù),按照一定的準(zhǔn)則和測度與參考模式庫中的模型進(jìn)行比較, 通過判決得出結(jié)果。
在本應(yīng)用中,語音識別技術(shù)方面采用凌陽SPCE061A作為關(guān)鍵器件,同時凌陽公司提供bsrv222SDL.lib 庫函數(shù)支持,在使用時通過調(diào)用庫函數(shù)里相關(guān)的API 函數(shù)來實現(xiàn)所要求的功能。
5 主要硬件模塊設(shè)計
下面主要對主控制器和語音提示電路作介紹。
5.1 主控制器
系統(tǒng)主控制器主要由MIC 輸入模塊、控制模塊、存儲模塊、功放和喇叭輸出模塊四部分組成,其結(jié)構(gòu)如下。
(1) 控制單元與語音識別:由SPCE061A 單片機(jī)完成。
(2) MIC 輸入模塊:SPCE061A 的A/D 轉(zhuǎn)換器有8個通道,其中有一個通道是MIC_IN 輸入,專門對語音信號進(jìn)行采樣。選用駐極體話筒,其偏壓由SPCE061A 的VMIC 腳提供。該模塊電路比較簡單,只需外接三個電阻和電容對電流信號進(jìn)行濾波就可以了。
?。?) 功放和喇叭輸出模塊:SPCE061A 提供雙通道10 位的D/A 輸出AUD1、AUD2,每個通道的輸出能力是30mA。為了能驅(qū)動揚聲器放音,我們將輸出電路設(shè)計為由負(fù)載電阻和三極管8050 組成的功放電路。
?。?) 存儲模塊:由于芯片內(nèi)置的存儲空間有限,為了運行復(fù)雜的識別程序,必須通過擴(kuò)展必要的存儲芯片來完成系統(tǒng)的功能。在本系統(tǒng)中我們采用SPBA01B 和W29C040 來對SPCE061A 進(jìn)行Memory 擴(kuò)展。
5.2 語音提示單元
本系統(tǒng)主要由語音識別電路和語音提示電路來完成人機(jī)交互,其中語音提示電路的電路原理圖如圖4 所示。
圖4 語音提示電路
數(shù)碼語音芯片選用的是單片語音錄放集成電路ISD25120,它具有抗斷電、音質(zhì)好、使用方便、無需專用的開發(fā)系統(tǒng)等優(yōu)點。錄音時間為120s,能重復(fù)錄放達(dá)10 萬次。芯片采用多電平直接模擬量存儲專利技術(shù),省去了A/D、D/A 轉(zhuǎn)換器。每個采樣值直接存儲在片內(nèi)單個存儲單元中, 因此能夠非常真實、自然地再現(xiàn)語音、音樂、音調(diào)和效果聲。
SPCE061A的IOA11~IOA15 與ISD25120 的地址線相連,用以設(shè)置語音段的起始地址。IOB11 和IOB13 用以控制錄放音狀態(tài)。IOB12 連接一按鍵,供錄放音測試時使用。ANA IN 與ANA OUT 是模擬信號的輸入端和輸出端,它們之間連接耦合電容,通常取值為0.22~1uF。
語音信號由SP+ 和SP- 端經(jīng)耦合器耦合到電話線或由揚聲器直接播放。錄音時,單片機(jī)通過口線設(shè)置語音段的起始地址,再使端PD 端和P/ R 端和CE 為低電平啟動錄音。結(jié)束時,單片機(jī)又讓CE 端回到高電平,即完成一段語音的錄制。放音時,根據(jù)需要播放的語音內(nèi)容,找到相應(yīng)的語音段起始地址,并通過口線送出。再將P/ R端設(shè)為高電平, PD 端設(shè)為低電平,并讓CE 端產(chǎn)生一負(fù)脈沖啟動放音,這時單片機(jī)只需等待ISD25120 的信息結(jié)束信號,即低電平EOM 的產(chǎn)生。結(jié)束信號為一負(fù)脈沖,在負(fù)脈沖的上升沿, 標(biāo)志著該段語音播放結(jié)束。
6 軟件設(shè)計
6.1 系統(tǒng)軟件結(jié)構(gòu)
軟件的設(shè)計不僅要考慮到各個模塊實現(xiàn)的功能,而且要對整個系統(tǒng)進(jìn)行有效的管理和協(xié)調(diào)。在此基礎(chǔ)之上,才能夠從整個系統(tǒng)的角度全面完善地實現(xiàn)系統(tǒng)所需要的各項功能。本系統(tǒng)的軟件主要包括一個主程序和四個子程序, 其總體結(jié)構(gòu)如下圖所示。
主程序主要負(fù)責(zé)對整個控制器的工作進(jìn)行管理、協(xié)調(diào)和對子程序的調(diào)用以及對用戶的各種服務(wù)的響應(yīng)。
四個子程序分別是語音識別、DTMF 收發(fā)、語音錄放、信號音檢測四個子程序。限于篇幅,下面只對語音識別子程序的軟件設(shè)計進(jìn)行介紹。
6.2 語音識別子程序設(shè)計
語音識別程序設(shè)計包括三部分: 訓(xùn)練樣本; 識別; 語音提示。
訓(xùn)練過程即提取語音樣本的特征參數(shù)過程主要調(diào)用庫函數(shù)BSR_Train 完成。為了防止誤命令,每條語音命令訓(xùn)練2 遍,只有2 次命令相同時才成功,BSR_Train函數(shù)有8 種可能的返回值, 如: 0 - 訓(xùn)練成功; - 1 - 沒有語音識別技術(shù)方面有bsrv222SDL.lib 庫函數(shù)支持,在使用時通過調(diào)用庫函數(shù)里相關(guān)的API 函數(shù)來實現(xiàn)所要求的功能。下面給出語音識別的流程圖及具體代碼。
圖7 語音識別流程圖
其中,BSR-GetResult 函數(shù)為啟動辯識,當(dāng)無命令識別出來時,返回0;識別器停止、未初始化或識別未激活返回-1 ;當(dāng)識別不合格時返回-2 ;當(dāng)識別出來時返回命令的序號。部分程序源代碼如下:
7 結(jié)語
本系統(tǒng)主要有以下性能特點:實現(xiàn)了語音控制家用電器的啟動和關(guān)閉;實現(xiàn)雙向的功能:能夠遠(yuǎn)距離控制家用電器,又能快速及時地傳送報警信息;設(shè)計簡單,系統(tǒng)組織靈活,控制范圍可大可小,利用已有電力線和電話布置設(shè)施成本低,且不受供電范圍和距離的限制;使用單片機(jī)實現(xiàn)語音識別控制功能,提高了系統(tǒng)的性價比。隨著經(jīng)濟(jì)的發(fā)展,人們對物質(zhì)文化需求的日益增長,智能家居系統(tǒng)必將受到人們的青睞,相信這種功能強(qiáng)大的單片機(jī)系統(tǒng)會有廣闊的應(yīng)用和發(fā)展前景。