顧問(wèn) 陳布雨 胡之惠 胡繼康 史豪
摘 要:介紹了一種基于Arduino的智能家居控制系統(tǒng),利用Arduino作為主控系統(tǒng),結(jié)合傳感器技術(shù)、中文語(yǔ)音識(shí)別技術(shù)及語(yǔ)音控制技術(shù)等實(shí)現(xiàn)對(duì)家居環(huán)境中的溫濕度、照明設(shè)備、家電設(shè)備等的智能控制。該系統(tǒng)具有無(wú)線控制的功能,操作方便,成本低,適合大量推廣使用。
關(guān)鍵詞:Arduino 智能控制 語(yǔ)音識(shí)別 音樂(lè)點(diǎn)播
中圖分類號(hào):TN247 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)11(b)-0139-04
1 設(shè)計(jì)背景與意義
隨著世界經(jīng)濟(jì)的進(jìn)一步發(fā)展和科技以人為本的信念深入人心,尤其是今后生活區(qū)與工作區(qū)界限日益模糊,使得小區(qū)智能化在技術(shù)與市場(chǎng)兩方面都取得了長(zhǎng)足進(jìn)步,目前進(jìn)入小區(qū)與家居智能化高速發(fā)展時(shí)期。智能建筑始建于20世紀(jì)80年代初的美國(guó),我國(guó)智能建筑發(fā)展較晚,起步于20世紀(jì)90年代,1994年建設(shè)部下發(fā)了《全國(guó)住宅小區(qū)智能化系統(tǒng)示范工程工作大綱》和《全國(guó)住宅小區(qū)智能化系統(tǒng)示范工程建設(shè)要點(diǎn)技術(shù)導(dǎo)則》,使我國(guó)住宅從傳統(tǒng)模式開始向智能化模式轉(zhuǎn)型,從此拉開建設(shè)智能化小區(qū)的序幕。
自2003年以來(lái),海信、清華同方等公司也相繼加入到智能家居行列,但目前智能家居系統(tǒng)還缺乏統(tǒng)一明確的國(guó)際標(biāo)準(zhǔn),許多公司開發(fā)出的產(chǎn)品都是基于自己組建的網(wǎng)絡(luò)和信息交換協(xié)議,許多產(chǎn)品是針對(duì)特定組網(wǎng)環(huán)境開發(fā)的,部分核心技術(shù)沒(méi)有對(duì)外公布,技術(shù)復(fù)雜,直接導(dǎo)致使用范圍的局限性。由于缺乏對(duì)應(yīng)的第三方產(chǎn)品,各個(gè)接入設(shè)備之間不能兼容,互操作性差,不利于產(chǎn)品的擴(kuò)充。
“智能家居”中智能意義在于家居設(shè)施能像人一樣的思考或能理解人的意圖,改變傳統(tǒng)的接觸式操作方式,其目的在于為用戶提供更加簡(jiǎn)捷舒適的家居控制體驗(yàn)。語(yǔ)言是人類最熟悉最方便的交流工具,通過(guò)語(yǔ)音操控各種家居設(shè)施是實(shí)現(xiàn)智能家居這一理想藍(lán)圖的重要一環(huán)。為實(shí)現(xiàn)所有家庭成員對(duì)家居設(shè)施的控制,模塊采用非特定人語(yǔ)音識(shí)別系統(tǒng)。該系統(tǒng)通過(guò)語(yǔ)音識(shí)別模塊LD3320及中文語(yǔ)音合成模塊SYN6288構(gòu)成人機(jī)對(duì)話:操作者自身發(fā)出語(yǔ)音指令,系統(tǒng)通過(guò)語(yǔ)音識(shí)別模塊接收并將其轉(zhuǎn)化為相應(yīng)的指令同時(shí)對(duì)其進(jìn)行處理,通過(guò)主控制器Arduino UNO進(jìn)行相應(yīng)的操作,同時(shí)語(yǔ)音合成模塊通過(guò)相應(yīng)的文本合成語(yǔ)音(TTS)進(jìn)行反饋提示,繼而實(shí)現(xiàn)人機(jī)對(duì)話功能。
2 設(shè)計(jì)方案的比較選擇
Arduino是一款基于AVR單片機(jī)的硬件電路和軟件開發(fā)環(huán)境共同開源的控制系統(tǒng),是交互式編程學(xué)習(xí)的一種媒介、是為嵌入式開發(fā)的學(xué)習(xí)而研發(fā)的一種控制終端。Arduino和其他AVR系列的單片機(jī)開發(fā)板相比有以下幾點(diǎn)獨(dú)有的優(yōu)勢(shì)。
可交互性:Arduino設(shè)計(jì)之初就規(guī)定了統(tǒng)一的框架結(jié)構(gòu),電路底層的初始化采取了統(tǒng)一的方法,對(duì)于數(shù)字信號(hào)和模擬信號(hào)的I/O系統(tǒng)也進(jìn)行了統(tǒng)一的規(guī)定。這些特性使得Arduino學(xué)習(xí)者和使用者在進(jìn)行電路設(shè)計(jì)交流時(shí)保持了統(tǒng)一的物理底層特性,從而達(dá)到易于交流和學(xué)習(xí)的目標(biāo)。
安全的易用性:Arduino和外部程序交互的接口是一個(gè)標(biāo)準(zhǔn)的USB接口。Arduino通訊接口的唯一性和開發(fā)環(huán)境的友好性使得該平臺(tái)能夠安全簡(jiǎn)單的實(shí)現(xiàn)不同的控制目的。
良好的可擴(kuò)展性:Arduino本身標(biāo)準(zhǔn)的數(shù)字和模擬I/O口支持豐富的硬件擴(kuò)展。Arduino通過(guò)連接線能和各種傳感器模塊、驅(qū)動(dòng)模塊和網(wǎng)絡(luò)模塊相連接,在上位機(jī)編寫的程序控制下能夠簡(jiǎn)單高效的實(shí)現(xiàn)各種環(huán)境數(shù)據(jù)的采集和偵測(cè),并能驅(qū)動(dòng)各種小功率聲、光、電器件對(duì)采集和偵測(cè)到的數(shù)據(jù)進(jìn)行顯示。Arduino還能通過(guò)網(wǎng)絡(luò)模塊將采集到的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)接口上載到互聯(lián)網(wǎng)平臺(tái)供眾多的學(xué)習(xí)者和開發(fā)者使用。
第三方資源豐富:Arduino無(wú)論硬件和軟件都是開源的,這些特性使得開發(fā)者可以完全掌握其底層實(shí)現(xiàn)機(jī)制,在全球眾多的Arduino開源社區(qū)中,開發(fā)者可以輕松的找到能供自己使用的軟、硬件信息。
Arduino的這些特性使得在當(dāng)今ARM平臺(tái)大行其道的時(shí)候能夠在嵌入式平臺(tái)占有一席之地。并使得Arduino贏得了“電子的藝術(shù)”的美稱。許多電子技術(shù)領(lǐng)域以外的愛(ài)好者憑借自身的想象力創(chuàng)造出了許多杰出的作品。
3 語(yǔ)音家居控制器的硬件組成
語(yǔ)音控制器的設(shè)計(jì)和實(shí)現(xiàn)中,硬件是關(guān)鍵和基礎(chǔ),它對(duì)整個(gè)系統(tǒng)的穩(wěn)定性、控制和反饋的準(zhǔn)確性、節(jié)能性都有直接影響。智能家居控制系統(tǒng)的硬件部分主要包括主控制器、傳感系統(tǒng)、語(yǔ)音識(shí)別系統(tǒng)、語(yǔ)音合成及控制系統(tǒng)等。主要工作過(guò)程是通過(guò)麥克風(fēng)接收人的語(yǔ)音指令,由語(yǔ)音識(shí)別模塊LD3320進(jìn)行識(shí)別,把識(shí)別的結(jié)果送入到主控制器當(dāng)中再由主控制器向各個(gè)模塊發(fā)出相應(yīng)的動(dòng)作指令,進(jìn)行相應(yīng)的動(dòng)作。主控制器采用最新的Arduino UNO R3控制板,傳感器部分則由溫濕度傳感器和光線傳感器組成,用以檢測(cè)室內(nèi)實(shí)時(shí)的溫濕度情況以便用戶對(duì)室內(nèi)情況得以及時(shí)的掌握為用戶對(duì)家居進(jìn)行必要的防潮防火措施都有一定的警示作用。系統(tǒng)結(jié)構(gòu)如圖1所示。
4 語(yǔ)音家居控制器的設(shè)計(jì)實(shí)現(xiàn)
4.1 語(yǔ)音家居控制器主控單元
語(yǔ)音家居控制系統(tǒng)的主控制單元采用Arduino UNO R3。Arduino UNO的處理器核心是ATmega328P單片機(jī)(一個(gè)8位微控制器帶32K字節(jié)的系統(tǒng)可編程Flash)。
Arduino UNO具有高性能低功耗,先進(jìn)的RISC結(jié)構(gòu),高耐久性非易失性內(nèi)存段等特點(diǎn),外設(shè)方面兩個(gè)8-bit定時(shí)器/計(jì)數(shù)器、一個(gè)16位定時(shí)器/計(jì)數(shù)器、實(shí)時(shí)計(jì)數(shù)器使單片機(jī)具有獨(dú)立的預(yù)分頻器和比較模式以及捕捉功能模式和獨(dú)立振蕩器,同時(shí)具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),6個(gè)模擬輸入,一個(gè)16 MHz晶體振蕩器,一個(gè)USB口,一個(gè)電源插座,一個(gè)ICSP header和一個(gè)復(fù)位按鈕,可編程串行USART、主/從SPI串行接口以及中斷和引腳點(diǎn)評(píng)變化喚醒。該款單片機(jī)還具有上電復(fù)位和可編程的掉電檢測(cè)、內(nèi)部校準(zhǔn)振蕩器、外部和內(nèi)部中斷源、6種睡眠模式等特殊功能??刂瓢逋ㄟ^(guò)標(biāo)準(zhǔn)USB線纜與電腦連接,便于在線進(jìn)行程序調(diào)試。UNO已經(jīng)發(fā)布到第3版,與前2版相比有以下新的特點(diǎn)。
(1)在AREF處增加了2個(gè)管腳SDA和SCL,支持I2C接口;增加IOREF和一個(gè)預(yù)留管腳。
(2)改進(jìn)了復(fù)位電路設(shè)計(jì)。
(3)USB接口芯片由ATmega 16U2替代了ATmega8U2(見(jiàn)圖2)。
4.2 語(yǔ)音識(shí)別模塊
目前,語(yǔ)音識(shí)別技術(shù)的發(fā)展十分迅速,按照識(shí)別對(duì)象的類型可以分為特定人和非特定人語(yǔ)音識(shí)別。特定人是指識(shí)別對(duì)象為專門的人,非特定人是指識(shí)別對(duì)象是針對(duì)大多數(shù)用戶,一般需要采集多個(gè)人的語(yǔ)音進(jìn)行錄音和訓(xùn)練,經(jīng)過(guò)學(xué)習(xí)從而達(dá)到較高的識(shí)別率。
我們采用DFRobot的中文語(yǔ)音識(shí)別模塊,它的核心則是我們大家都熟知的LD3320,LD3320語(yǔ)音識(shí)別芯片是一顆基于非特定人語(yǔ)音識(shí)別(SI ASR)技術(shù)的芯片。該芯片上集成了高精度的A/D和D/A接口,不再需要外接輔助的Flash和RAM,識(shí)別的關(guān)鍵詞語(yǔ)列表是可以動(dòng)態(tài)編輯的。它是一款只需要在主控MCU的程序中設(shè)定好要識(shí)別的關(guān)鍵詞語(yǔ)列表并動(dòng)態(tài)地把這些關(guān)鍵詞語(yǔ)以字符的形式傳送到芯片內(nèi)部,就可以對(duì)用戶說(shuō)出的關(guān)鍵詞語(yǔ)進(jìn)行識(shí)別。該模塊可以設(shè)置50項(xiàng)候選識(shí)別句,每個(gè)識(shí)別句可以是單字,詞組或短句,長(zhǎng)度為不超過(guò)10個(gè)漢字或者79個(gè)字母的拼音串,為了提高識(shí)別精準(zhǔn)度,開發(fā)者還可以設(shè)置“垃圾關(guān)鍵字”,使得該模塊遇到這些“垃圾關(guān)鍵字”則重新識(shí)別,可由一個(gè)系統(tǒng)支持多種場(chǎng)景。不過(guò)需要說(shuō)明的是,使用環(huán)境的噪聲會(huì)影響到Voice Recognition的語(yǔ)音識(shí)別效果。另外,如果使用者的聲音過(guò)小的話,它無(wú)法精準(zhǔn)判斷哪里應(yīng)該“斷句”。
Voice Recognition語(yǔ)音識(shí)別模塊采用疊層設(shè)計(jì),可以直接插接到Arduino控制器上,用戶使用Arduino便可以快速設(shè)計(jì)產(chǎn)品原型,例如:電磁爐、微波爐、洗衣機(jī)、智能家電操作,照明系統(tǒng)的聲控等等(見(jiàn)圖3)。
語(yǔ)音識(shí)別流程采用中斷方式工作,其工作流程分為初始化、寫入關(guān)鍵詞、開始識(shí)別和響應(yīng)中斷等。用ARDUINO IDE編寫。調(diào)試完成后通過(guò)串口進(jìn)行燒錄,控制LD3320完成語(yǔ)音識(shí)別,并將識(shí)別結(jié)果上傳至Arduino mega168控制器。其軟件流程如圖4所示。
4.3 語(yǔ)音合成模塊
TTS(Text To Speech)文本轉(zhuǎn)語(yǔ)音技術(shù)是人機(jī)只能對(duì)話發(fā)展的趨勢(shì)。基于TTS技術(shù)的語(yǔ)音系統(tǒng)無(wú)需事先錄音就能夠隨時(shí)根據(jù)查詢條件查出病合成語(yǔ)音進(jìn)行播報(bào),從而大大減少了系統(tǒng)維護(hù)的工作量。利用此技術(shù),通過(guò)MCU或者PC機(jī)就能控制語(yǔ)音芯片發(fā)音。
我們采用SYN6288中文語(yǔ)音合成芯片進(jìn)行語(yǔ)音合成??刂破骱蚐YN6288之間通過(guò)UART接口連接或SPI接口通信方式,接收待合成的文本數(shù)據(jù),實(shí)現(xiàn)文本到語(yǔ)音(TTS)的轉(zhuǎn)換。該模塊支持GB2312、GBK、BIG5和UNICODE內(nèi)碼格式的文本,清晰、自然、準(zhǔn)確的中文語(yǔ)音合成效果;可合成任意的中文文本,同時(shí)支持英文字母的合成;另外它具有智能的文本分析處理算法,可正確識(shí)別數(shù)值、號(hào)碼、時(shí)間日期及常用的度量衡符號(hào);在其具有很強(qiáng)的多音字處理和中文姓氏處理能力的特點(diǎn)下,更具備支持多種文本控制標(biāo)記的能力,提升了文本處理的正確率??刂破骱蚐YN6288語(yǔ)音合成芯片之間通過(guò)UART接口連接,控制器通過(guò)串口通信向SYN6288語(yǔ)音合成芯片發(fā)送控制命令和文本,SYN6288語(yǔ)音合成芯片把接收到的文本合成語(yǔ)音信號(hào)輸出,輸出信號(hào)經(jīng)功率放大器進(jìn)行放大后連接到喇叭進(jìn)行播放(見(jiàn)圖5)。
上位機(jī)以命令幀的格式向SYN6288新芯片發(fā)送命令。SYN6288芯片根據(jù)命令幀進(jìn)行相應(yīng)操作,并向上位機(jī)返回命令操作結(jié)果。接收到控制命令幀后,芯片會(huì)向上位機(jī)發(fā)送一個(gè)字節(jié)的狀態(tài)回傳,上位機(jī)可根據(jù)這個(gè)回傳來(lái)判斷芯片當(dāng)前的工作狀態(tài)。SYN6288芯片在初始化成功后會(huì)發(fā)送一個(gè)字節(jié)的“初始化成功”回傳。芯片在收到命令幀后會(huì)判斷此命令幀是否正確,如果命令幀正確返回“接收成功”回傳。
SYN6288芯片在收到狀態(tài)查詢命令時(shí),如果芯片正處于播音工作狀態(tài)則返回“正在播音”回傳,如果芯片處于空閑狀態(tài)則返回“芯片空閑”回傳。在一幀數(shù)據(jù)合成完畢后,芯片會(huì)自動(dòng)返回一次“芯片空閑”的回傳。在達(dá)到相應(yīng)的觸發(fā)條件時(shí)芯片進(jìn)行回傳類型名稱及數(shù)據(jù)。
4.4 語(yǔ)音播放模塊
語(yǔ)音播放模塊見(jiàn)圖6。該模塊具有9個(gè)觸發(fā)端口,即A1-A9這9個(gè)端口同時(shí)對(duì)應(yīng)9首MP3,分別是第一首到第九首,先放入TF卡的為第一首歌,我們可以通過(guò)給相應(yīng)的觸發(fā)端口以低電平觸發(fā)相對(duì)應(yīng)的歌曲,例如:A1口,只要像A1口提供一個(gè)低電平這樣就可以馬上進(jìn)行播放第一首MP3。如果使用直接觸發(fā)的方式播放歌曲可以將板子上的GND分別接觸相對(duì)用的端口;在設(shè)計(jì)的系統(tǒng)中,我們需要利用Arduino UNO主控板對(duì)其就行控制,通過(guò)MCU的IO口來(lái)對(duì)各個(gè)端口進(jìn)行觸發(fā)即編碼觸發(fā)方式。在編碼觸發(fā)方式下,此模塊最多可以具備31首歌曲的點(diǎn)播功能。在Arduino MCU的IO輸出編碼后,等待500 ms或以上便馬上恢復(fù)默認(rèn)值(高電平)后觸發(fā)成功進(jìn)行播放歌曲,歌曲的編碼為二進(jìn)制編碼方式。
4.5 Arduino數(shù)字IO擴(kuò)展模塊
在整個(gè)系統(tǒng)設(shè)計(jì)過(guò)程中,由于Arduino UNO板只有14+6個(gè)數(shù)字輸出,而語(yǔ)音識(shí)別模塊,語(yǔ)音合成模塊,繼電器模塊,傳感器模塊占用了較多的IO口導(dǎo)致Arduino UNO主控板的IO口匱乏,在此,我們采用74HC595芯片來(lái)對(duì)主控板的IO口進(jìn)行擴(kuò)增,從而實(shí)現(xiàn)更多模塊的控制(如M3音樂(lè)點(diǎn)播模塊)。
74HC595芯片是一個(gè)價(jià)格低廉的8位串行輸入變串行輸出或并行輸出的移位寄存器,具有高阻關(guān)斷,高電平和低電平3臺(tái)輸出。在IO擴(kuò)充上,最多可以串聯(lián)15片,也就是高達(dá)120個(gè)IO口的擴(kuò)充,通過(guò)3個(gè)數(shù)據(jù)引腳(STCP、SHCP、DS),可以控制幾乎無(wú)限量的輸出。該DS是一個(gè)串行數(shù)據(jù)輸入端,每當(dāng)時(shí)鐘輸入每當(dāng)時(shí)鐘輸入(SHCP)上升沿到來(lái)時(shí),DS引腳當(dāng)前電平值在移位寄存器中會(huì)移一位,連續(xù)進(jìn)行8次同樣的動(dòng)作,就可以完成全部(Q0至Q7)移位。最后當(dāng)STCP(Latch)上升沿到來(lái)時(shí),移位寄存器的值將會(huì)被鎖定在存儲(chǔ)器里,并從Q0至Q7引腳輸出。
5 結(jié)語(yǔ)
語(yǔ)音家具控制器采用Arduino UNO R3控制板實(shí)現(xiàn)。Arduino UNO的處理器核心是ATmega328P單片機(jī)(一個(gè)8位微控制器帶32K字節(jié)的系統(tǒng)可編程Flash)。設(shè)計(jì)主要分為硬件和軟件兩個(gè)部分。筆者盡可能進(jìn)行了電路的優(yōu)化設(shè)計(jì),電路功耗低,體積小,軟件部分包括標(biāo)準(zhǔn)的程序編譯器和程序下載器,可以依需求自己修改,輸出可擴(kuò)展,能方便地與傳感器及各式各樣的電子組件連接。通過(guò)實(shí)際功能驗(yàn)證,該控制器實(shí)現(xiàn)了通過(guò)語(yǔ)音控制家電的目的,為家電的跨空間控制和安全控制提供了新的解決方案?;诜翘囟ㄈ苏Z(yǔ)音識(shí)別,不再需要外接輔助的Flash和RAM,即可以實(shí)現(xiàn)語(yǔ)音識(shí)別、聲控、人機(jī)對(duì)話功能,且關(guān)鍵詞語(yǔ)列表是可以動(dòng)態(tài)編輯的,從而使我們能夠更加容易的改變各項(xiàng)觸發(fā)命令。該設(shè)計(jì)具有很強(qiáng)實(shí)用性及較可靠的性能,響應(yīng)速度快,使用方便,但系統(tǒng)在運(yùn)行時(shí)易受到外界環(huán)境的影響,這些都需要我們進(jìn)一步的改進(jìn),我們也正繼續(xù)努力優(yōu)化設(shè)計(jì)方案來(lái)解決這些問(wèn)題。
參考文獻(xiàn)
[1] 張培仁.傳感器原理檢測(cè)及應(yīng)用[M].北京:清華大學(xué)出版社,2012.
[2] 成謝鋒,周井泉.電路與模擬電子技術(shù)基礎(chǔ)[M].北京:科學(xué)出版社,2012.
[3] 李全利.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2012.
[4] 吳黎明.語(yǔ)音信號(hào)及單片機(jī)處理[M].北京:科學(xué)出版社,2007.
[5] 馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京:科學(xué)出版社,2007.
[6] BANZI M. Getting started with Arduino[M]. California:OREILLY,2009.
[7] 紀(jì)欣然.基于Arduino開發(fā)環(huán)境的智能尋光小車設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(15):161-163.