袁 博
(南陽理工學(xué)院計(jì)算機(jī)與信息工程學(xué)院,河南南陽473004)
隨著生活水平的提高和科學(xué)技術(shù)的發(fā)展,人們對(duì)于家用電器的功能與性能要求越來越高。同時(shí),隨著學(xué)生課業(yè)壓力與成人工作壓力的不斷增大,長時(shí)間的不良閱讀姿勢導(dǎo)致的近視與駝背等問題日趨嚴(yán)重。為了使日常閱讀體驗(yàn)更加便利化與人性化,同時(shí)及時(shí)發(fā)現(xiàn)與提醒不健康的閱讀姿勢,采用同時(shí)具備語音控制與坐姿檢測功能的家居照明設(shè)備是十分必要的。傳統(tǒng)的家居照明設(shè)備通常不具備語音控制與坐姿檢測功能;固定在墻壁與屋頂?shù)穆暱責(zé)艟邥?huì)限制人們的閱讀活動(dòng)范圍[1-3];目前市面上的智能臺(tái)燈,能夠同時(shí)實(shí)現(xiàn)語音控制與坐姿檢測功能的不多,且價(jià)格較為昂貴[4-6]。因此,設(shè)計(jì)一種能夠同時(shí)具備語音控制與坐姿檢測功能,且價(jià)格適中的便攜式智能臺(tái)燈是必要和有價(jià)值的。
本文提出了一種基于STM32微控制器的智能臺(tái)燈原型系統(tǒng),系統(tǒng)以STM32為主控制器,通過串口發(fā)送控制指令并傳送檢測數(shù)據(jù),結(jié)合WTK6900B-B01語音識(shí)別模塊、HC-SR501人體紅外感應(yīng)模塊和SRD-05VDC-SL-C繼電器模塊,實(shí)現(xiàn)了臺(tái)燈的語音控制與坐姿檢測/提醒功能。該原型系統(tǒng)是物聯(lián)網(wǎng)技術(shù)在智能家居領(lǐng)域的一種有益探索與典型應(yīng)用,經(jīng)進(jìn)一步技術(shù)改進(jìn)與細(xì)化,具備產(chǎn)品化與市場化的潛力。
系統(tǒng)硬件主要需要實(shí)現(xiàn)以下三方面功能:①通過對(duì)語音指令的存儲(chǔ)和解析,實(shí)現(xiàn)對(duì)臺(tái)燈的語音控制功能;②通過紅外反射原理檢測人體坐姿,實(shí)現(xiàn)對(duì)不良坐姿的提醒功能;③通過主控制器實(shí)現(xiàn)對(duì)系統(tǒng)各模塊的統(tǒng)一控制。
整個(gè)系統(tǒng)由微控制器、存儲(chǔ)器、系統(tǒng)電源、語音識(shí)別、坐姿檢測、繼電器與LED燈等功能模塊組成。語音識(shí)別模塊連接麥克風(fēng),用于獲取使用者的語音命令。系統(tǒng)上電后,微控制器通過USART串行口控制語音識(shí)別模塊獲取并解析語音指令,根據(jù)指令解析結(jié)果,通過繼電器輸出脈沖寬度調(diào)制(Pulse Width Modulation,PWM)信號(hào),增強(qiáng)負(fù)載能力,控制LED燈作出相應(yīng)動(dòng)作,包括燈的亮滅、亮度調(diào)整與顏色變化等。同時(shí),微控制器通過坐姿檢測模塊的反饋信息判斷使用者的坐姿是否正常,當(dāng)使用者閱讀姿勢不健康時(shí),利用報(bào)警燈閃爍結(jié)合語音報(bào)警的方式提醒使用者糾正坐姿,預(yù)防近視與駝背。系統(tǒng)硬件設(shè)計(jì)框圖如圖1所示。
選用STM32L053R8微控制器作為主控芯片,NUCLEO-L053R8開發(fā)板作為主控制電路板,通過串行口和定時(shí)器實(shí)現(xiàn)語音指令數(shù)據(jù)的獲取與解析,以此實(shí)現(xiàn)開/關(guān)臺(tái)燈、亮度調(diào)節(jié)和顏色改變等功能。NUCLEO-L053R8是ST公司推出的一款針對(duì)STM32L0系列設(shè)計(jì)的cortex-M0開發(fā)板,具有完備的基于瀏覽器的軟件開發(fā)環(huán)境,編譯程序只要燒錄到開發(fā)板上即可使用[7-11]。
STM32L053R8中的通用定時(shí)器TIM2是一個(gè)16位自動(dòng)重裝計(jì)數(shù)器,具有4個(gè)獨(dú)立通道,可用于實(shí)現(xiàn)輸入捕獲、輸出比較、PWM輸出等功能,且具有獨(dú)立DMA功能。通過改變TIM2輸出I/O口的電平來改變定時(shí)器的捕獲值,實(shí)現(xiàn)不同頻率的PWM輸出,就能夠?qū)崿F(xiàn)改變燈光亮度及顏色的功能。
語音識(shí)別模塊選用WTK6900B-B01,如圖2所示。該模塊是由深圳唯創(chuàng)知音電子有限公司推出的一款語音辨識(shí)模塊,采用ssop24封裝,方便拆裝,操控方便。能夠辨認(rèn)預(yù)先存儲(chǔ)的語音詞條并經(jīng)過串口輸出辨別結(jié)果。該模塊還具有以下特點(diǎn):支持多種采樣率;通過語音指令操控輸出,具有串口輸出、IO輸出、揚(yáng)聲器播放3種輸出模式;通過外掛SPI Flash增大內(nèi)存容量,能夠存放多組詞條;支持多種語言的辨識(shí),識(shí)別準(zhǔn)確率高[12-13]。
WTK6900B-B01在收到語音指令時(shí),會(huì)與存儲(chǔ)在芯片中的詞條進(jìn)行對(duì)比,若語音指令波形與詞條波形一致,或波形相似度高于所設(shè)閾值,則認(rèn)為識(shí)別正確。此時(shí)串口TX端會(huì)輸出相應(yīng)指令,同時(shí)3個(gè) IO口(OUTA、OUTB、OUTC)會(huì)輸出相對(duì)應(yīng)的電平,再通過串口RX端輸出到STM32L053R8微控制器,進(jìn)而控制燈光的開關(guān),改變亮度及顏色[14]。
WTK6900B-B01模塊串口指令格式采用起始碼+參數(shù)+反碼格式。例如“打開燈”的語音指令TX輸出AA07F8,起始碼為AA參數(shù)07反碼F8,參數(shù)+反碼=FF,TX輸出指令起始碼為AA,RX輸入指令起始碼為BB。
選用深圳市捷順科技有限公司的HC-SR501人體紅外感應(yīng)模塊,如圖3所示。該模塊采用德國原裝進(jìn)口的LH 1778探頭,敏銳性高、操縱性強(qiáng)。選擇高低電平變換輸出,當(dāng)檢測到人體存在時(shí),輸出高電平,人體離開該模塊感應(yīng)范圍時(shí)輸出低電平,從而實(shí)現(xiàn)人體坐姿檢測功能。此外,模塊輸出為高電平信號(hào),與燈泡、蜂鳴器等具有提醒功能的器件對(duì)接方便。
圖3 HC-SR501人體紅外感應(yīng)模塊
HC-SR501人體紅外感應(yīng)模塊采用A、B雙元探頭,探頭窗口為長方形,探頭位居長方形較長方位的兩頭。其檢測原理為:當(dāng)人體從左到右或從右到左經(jīng)過雙元探頭,紅外光譜達(dá)到雙元的時(shí)刻、間距有差值,差值越大其檢測越敏銳。但人體從上到下或從下到上經(jīng)過該模塊時(shí),差值較小,甚至檢測不到差值導(dǎo)致檢測不靈敏。這就要求該檢測模塊放置應(yīng)該與人體活動(dòng)方向平行,且為了增大感應(yīng)角度范圍,該模塊采用圓形透鏡,四面都能感應(yīng),但左右兩側(cè)比上下感應(yīng)范圍大、靈敏度強(qiáng)[15-17]。該模塊感應(yīng)范圍如圖4所示。
圖4 HC-SR501感應(yīng)范圍
選用帶光耦隔離的5 V繼電器模塊。此模塊可以在噪聲較大的環(huán)境中使用,并且該模塊采用兩個(gè)外部電源系統(tǒng)供電,確保了繼電器開關(guān)不會(huì)對(duì)信號(hào)回路發(fā)生影響。另外該模塊具有高低電平兩種驅(qū)動(dòng)模式,可自由切換,操作簡單。貼片光耦隔離使得該繼電器模塊驅(qū)動(dòng)能力強(qiáng)、性能穩(wěn)定。
對(duì)于WTK6900 B-B01語音識(shí)別模塊,分別用13號(hào)引腳TX與14號(hào)引腳RX與STM32L053R8微控制器的PA9和PA10引腳連接,20號(hào)引腳接電源正極,電壓為3.3 V,WTK6900 B-B01與STM32L053R8的連接方式如表1所示。
表1 WTK6900B-B01與STM32L053R8連接方式
對(duì)于HC-SR501人體紅外感應(yīng)模塊,用1號(hào)引腳連接電源正極,電壓為 3.3 V;2號(hào)引腳連接STM32L053R8微控制器的 PB3引腳,HC-SR501與STM32L053R8的連接方式如表2所示。
表2 HC-SR501與STM32L053R8連接方式
繼電器模塊采用雙電源供電,外部VCC接3.3 V電源,VCC2接5 V電源且與STM32L053R8微控制器的PB9引腳連接,繼電器模塊中的三極管分別與PC9、PB8相連接,繼電器模塊與STM32L053R8的連接方式如表3所示。
表3 繼電器模塊與STM32L053R8連接方式
系統(tǒng)硬件電路如圖5所示。
圖5 系統(tǒng)硬件電路
系統(tǒng)主控制程序流程如圖6所示。首先,對(duì)STM32L053R8的串口、定時(shí)器進(jìn)行初始化,同時(shí)對(duì)語音模塊進(jìn)行初始化。語音識(shí)別模塊通過麥克風(fēng)收取語音指令,若指令與存儲(chǔ)在SPI Flash的詞條波形相識(shí)度高于設(shè)定的門檻,該語音指令通過串口通信存儲(chǔ)到STM32中,在數(shù)據(jù)傳輸中斷請(qǐng)求結(jié)束后,單片機(jī)控制燈泡作出相應(yīng)變化,否則需要再次獲取語音指令。
圖6 主控制程序流程
主控制程序主要由定時(shí)器中斷程序和串口通信程序兩部分組成。
定時(shí)器中斷程序保證在接收語音指令信息時(shí)不再接受其他指令請(qǐng)求。當(dāng)STM32L053R8主控模塊接收到語音指令請(qǐng)求時(shí),選擇工作寄存器,接受語音識(shí)別模塊的中斷請(qǐng)求,若請(qǐng)求中斷成功則清除中斷標(biāo)志,從緩存區(qū)讀取語音指令信息,并將信息存儲(chǔ)在寄存器中,結(jié)束本次指令請(qǐng)求,若接受中斷請(qǐng)求失敗則結(jié)束本次指令請(qǐng)求,等待下一次中斷請(qǐng)求。
串口通信模塊完成在語音識(shí)別模塊和主控模塊之間語音指令的收發(fā)。首先STM32L053R8關(guān)閉中斷,獲取寄存器中的語音指令數(shù)據(jù);然后通過串口傳輸數(shù)據(jù),并判斷語音指令數(shù)據(jù)傳輸是否完成。若數(shù)據(jù)傳輸失敗,則重新傳輸語音指令數(shù)據(jù),若成功則開中斷,結(jié)束本次傳輸。
實(shí)現(xiàn)的智能臺(tái)燈原型系統(tǒng)及其調(diào)試場景如圖7所示。
當(dāng)測試人發(fā)出語音指令“小白”時(shí),喚醒語音識(shí)別模塊;發(fā)出語音指令“開燈”時(shí),LED燈自動(dòng)打開;發(fā)出語音指令“亮點(diǎn)”時(shí),LED燈變亮;發(fā)出語音指令“暗點(diǎn)”時(shí),LED燈變暗;發(fā)出語音指令“變色”時(shí),燈泡循環(huán)改變顏色;發(fā)出語音指令“最亮”時(shí),燈泡達(dá)到最大亮度;發(fā)出語音指令“最暗”時(shí),燈泡達(dá)到最小亮度;發(fā)出語音指令“關(guān)燈”時(shí),燈泡熄滅。具體測試結(jié)果如表4所示。語音質(zhì)量識(shí)別成功后,串口輸出內(nèi)容與播報(bào)內(nèi)容如表5所示。
圖7 智能臺(tái)燈系統(tǒng)原型及調(diào)試場景
表4 語音控制LED功能測試
表5 語音識(shí)別成功后串口輸出與播報(bào)內(nèi)容
測試結(jié)果表明,語音控制LED燈的系統(tǒng)功能正常,測試成功。
將人體紅外感應(yīng)模塊與人體活動(dòng)方向平行放置。當(dāng)人體進(jìn)入模塊感應(yīng)范圍時(shí),藍(lán)色提醒LED燈亮起,蜂鳴器鳴叫;當(dāng)人體離開模塊感應(yīng)范圍后,藍(lán)色提醒LED燈熄滅。測試結(jié)果如表6所示,表明系統(tǒng)的坐姿檢測與提醒功能正常,測試成功。
表6 坐姿檢測與提醒功能測試
本文以STM32系列微控制器為主控單元,基于語音識(shí)別技術(shù)與人體紅外檢測技術(shù),設(shè)計(jì)實(shí)現(xiàn)了一種同時(shí)具有語音控制與坐姿檢測/提醒功能的智能臺(tái)燈原型系統(tǒng)。該設(shè)計(jì)在為使用者提供便利化操控體驗(yàn)的同時(shí),能夠在一定程度上預(yù)防近視與駝背;同時(shí),允許使用者根據(jù)實(shí)際照明需求用語音改變燈泡亮度,有助于提高電能有效利用率,具有節(jié)能效果,對(duì)以智能臺(tái)燈為代表的智能家居技術(shù)的發(fā)展進(jìn)行了有益探索。
在系統(tǒng)功能方面,仍有許多地方值得進(jìn)一步探索與完善。首先,可以考慮通過加入光照度傳感器,增加一個(gè)根據(jù)當(dāng)前環(huán)境光照強(qiáng)度變化自動(dòng)調(diào)整臺(tái)燈亮度的新功能,作為語音控制的并行模式供用戶自由選擇,實(shí)現(xiàn)主觀(語音)與客觀(光照度)相結(jié)合的臺(tái)燈亮度調(diào)整模式,進(jìn)一步改善用戶照明體驗(yàn),節(jié)約能源。其次,原型系統(tǒng)中采用的人體紅外傳感器,由于其特定工作原理,對(duì)放置位置有一定需求,有可能造成用戶使用不便,且難以保證對(duì)不同體型用戶的坐姿檢測都合理、精準(zhǔn);若在系統(tǒng)中加入測距傳感器,同時(shí)提供較完善的坐姿矯正算法,則系統(tǒng)的實(shí)用性將進(jìn)一步提高。