袁 博
(南陽理工學院計算機與信息工程學院,河南南陽473004)
隨著生活水平的提高和科學技術的發展,人們對于家用電器的功能與性能要求越來越高。同時,隨著學生課業壓力與成人工作壓力的不斷增大,長時間的不良閱讀姿勢導致的近視與駝背等問題日趨嚴重。為了使日常閱讀體驗更加便利化與人性化,同時及時發現與提醒不健康的閱讀姿勢,采用同時具備語音控制與坐姿檢測功能的家居照明設備是十分必要的。傳統的家居照明設備通常不具備語音控制與坐姿檢測功能;固定在墻壁與屋頂的聲控燈具會限制人們的閱讀活動范圍[1-3];目前市面上的智能臺燈,能夠同時實現語音控制與坐姿檢測功能的不多,且價格較為昂貴[4-6]。因此,設計一種能夠同時具備語音控制與坐姿檢測功能,且價格適中的便攜式智能臺燈是必要和有價值的。
本文提出了一種基于STM32微控制器的智能臺燈原型系統,系統以STM32為主控制器,通過串口發送控制指令并傳送檢測數據,結合WTK6900B-B01語音識別模塊、HC-SR501人體紅外感應模塊和SRD-05VDC-SL-C繼電器模塊,實現了臺燈的語音控制與坐姿檢測/提醒功能。該原型系統是物聯網技術在智能家居領域的一種有益探索與典型應用,經進一步技術改進與細化,具備產品化與市場化的潛力。
系統硬件主要需要實現以下三方面功能:①通過對語音指令的存儲和解析,實現對臺燈的語音控制功能;②通過紅外反射原理檢測人體坐姿,實現對不良坐姿的提醒功能;③通過主控制器實現對系統各模塊的統一控制。
整個系統由微控制器、存儲器、系統電源、語音識別、坐姿檢測、繼電器與LED燈等功能模塊組成。語音識別模塊連接麥克風,用于獲取使用者的語音命令。系統上電后,微控制器通過USART串行口控制語音識別模塊獲取并解析語音指令,根據指令解析結果,通過繼電器輸出脈沖寬度調制(Pulse Width Modulation,PWM)信號,增強負載能力,控制LED燈作出相應動作,包括燈的亮滅、亮度調整與顏色變化等。同時,微控制器通過坐姿檢測模塊的反饋信息判斷使用者的坐姿是否正常,當使用者閱讀姿勢不健康時,利用報警燈閃爍結合語音報警的方式提醒使用者糾正坐姿,預防近視與駝背。系統硬件設計框圖如圖1所示。
選用STM32L053R8微控制器作為主控芯片,NUCLEO-L053R8開發板作為主控制電路板,通過串行口和定時器實現語音指令數據的獲取與解析,以此實現開/關臺燈、亮度調節和顏色改變等功能。NUCLEO-L053R8是ST公司推出的一款針對STM32L0系列設計的cortex-M0開發板,具有完備的基于瀏覽器的軟件開發環境,編譯程序只要燒錄到開發板上即可使用[7-11]。
STM32L053R8中的通用定時器TIM2是一個16位自動重裝計數器,具有4個獨立通道,可用于實現輸入捕獲、輸出比較、PWM輸出等功能,且具有獨立DMA功能。通過改變TIM2輸出I/O口的電平來改變定時器的捕獲值,實現不同頻率的PWM輸出,就能夠實現改變燈光亮度及顏色的功能。
語音識別模塊選用WTK6900B-B01,如圖2所示。該模塊是由深圳唯創知音電子有限公司推出的一款語音辨識模塊,采用ssop24封裝,方便拆裝,操控方便。能夠辨認預先存儲的語音詞條并經過串口輸出辨別結果。該模塊還具有以下特點:支持多種采樣率;通過語音指令操控輸出,具有串口輸出、IO輸出、揚聲器播放3種輸出模式;通過外掛SPI Flash增大內存容量,能夠存放多組詞條;支持多種語言的辨識,識別準確率高[12-13]。
WTK6900B-B01在收到語音指令時,會與存儲在芯片中的詞條進行對比,若語音指令波形與詞條波形一致,或波形相似度高于所設閾值,則認為識別正確。此時串口TX端會輸出相應指令,同時3個 IO口(OUTA、OUTB、OUTC)會輸出相對應的電平,再通過串口RX端輸出到STM32L053R8微控制器,進而控制燈光的開關,改變亮度及顏色[14]。
WTK6900B-B01模塊串口指令格式采用起始碼+參數+反碼格式。例如“打開燈”的語音指令TX輸出AA07F8,起始碼為AA參數07反碼F8,參數+反碼=FF,TX輸出指令起始碼為AA,RX輸入指令起始碼為BB。
選用深圳市捷順科技有限公司的HC-SR501人體紅外感應模塊,如圖3所示。該模塊采用德國原裝進口的LH 1778探頭,敏銳性高、操縱性強。選擇高低電平變換輸出,當檢測到人體存在時,輸出高電平,人體離開該模塊感應范圍時輸出低電平,從而實現人體坐姿檢測功能。此外,模塊輸出為高電平信號,與燈泡、蜂鳴器等具有提醒功能的器件對接方便。

圖3 HC-SR501人體紅外感應模塊
HC-SR501人體紅外感應模塊采用A、B雙元探頭,探頭窗口為長方形,探頭位居長方形較長方位的兩頭。其檢測原理為:當人體從左到右或從右到左經過雙元探頭,紅外光譜達到雙元的時刻、間距有差值,差值越大其檢測越敏銳。但人體從上到下或從下到上經過該模塊時,差值較小,甚至檢測不到差值導致檢測不靈敏。這就要求該檢測模塊放置應該與人體活動方向平行,且為了增大感應角度范圍,該模塊采用圓形透鏡,四面都能感應,但左右兩側比上下感應范圍大、靈敏度強[15-17]。該模塊感應范圍如圖4所示。

圖4 HC-SR501感應范圍
選用帶光耦隔離的5 V繼電器模塊。此模塊可以在噪聲較大的環境中使用,并且該模塊采用兩個外部電源系統供電,確保了繼電器開關不會對信號回路發生影響。另外該模塊具有高低電平兩種驅動模式,可自由切換,操作簡單。貼片光耦隔離使得該繼電器模塊驅動能力強、性能穩定。
對于WTK6900 B-B01語音識別模塊,分別用13號引腳TX與14號引腳RX與STM32L053R8微控制器的PA9和PA10引腳連接,20號引腳接電源正極,電壓為3.3 V,WTK6900 B-B01與STM32L053R8的連接方式如表1所示。

表1 WTK6900B-B01與STM32L053R8連接方式
對于HC-SR501人體紅外感應模塊,用1號引腳連接電源正極,電壓為 3.3 V;2號引腳連接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連接方式
系統硬件電路如圖5所示。

圖5 系統硬件電路
系統主控制程序流程如圖6所示。首先,對STM32L053R8的串口、定時器進行初始化,同時對語音模塊進行初始化。語音識別模塊通過麥克風收取語音指令,若指令與存儲在SPI Flash的詞條波形相識度高于設定的門檻,該語音指令通過串口通信存儲到STM32中,在數據傳輸中斷請求結束后,單片機控制燈泡作出相應變化,否則需要再次獲取語音指令。

圖6 主控制程序流程
主控制程序主要由定時器中斷程序和串口通信程序兩部分組成。
定時器中斷程序保證在接收語音指令信息時不再接受其他指令請求。當STM32L053R8主控模塊接收到語音指令請求時,選擇工作寄存器,接受語音識別模塊的中斷請求,若請求中斷成功則清除中斷標志,從緩存區讀取語音指令信息,并將信息存儲在寄存器中,結束本次指令請求,若接受中斷請求失敗則結束本次指令請求,等待下一次中斷請求。
串口通信模塊完成在語音識別模塊和主控模塊之間語音指令的收發。首先STM32L053R8關閉中斷,獲取寄存器中的語音指令數據;然后通過串口傳輸數據,并判斷語音指令數據傳輸是否完成。若數據傳輸失敗,則重新傳輸語音指令數據,若成功則開中斷,結束本次傳輸。
實現的智能臺燈原型系統及其調試場景如圖7所示。
當測試人發出語音指令“小白”時,喚醒語音識別模塊;發出語音指令“開燈”時,LED燈自動打開;發出語音指令“亮點”時,LED燈變亮;發出語音指令“暗點”時,LED燈變暗;發出語音指令“變色”時,燈泡循環改變顏色;發出語音指令“最亮”時,燈泡達到最大亮度;發出語音指令“最暗”時,燈泡達到最小亮度;發出語音指令“關燈”時,燈泡熄滅。具體測試結果如表4所示。語音質量識別成功后,串口輸出內容與播報內容如表5所示。

圖7 智能臺燈系統原型及調試場景

表4 語音控制LED功能測試

表5 語音識別成功后串口輸出與播報內容
測試結果表明,語音控制LED燈的系統功能正常,測試成功。
將人體紅外感應模塊與人體活動方向平行放置。當人體進入模塊感應范圍時,藍色提醒LED燈亮起,蜂鳴器鳴叫;當人體離開模塊感應范圍后,藍色提醒LED燈熄滅。測試結果如表6所示,表明系統的坐姿檢測與提醒功能正常,測試成功。

表6 坐姿檢測與提醒功能測試
本文以STM32系列微控制器為主控單元,基于語音識別技術與人體紅外檢測技術,設計實現了一種同時具有語音控制與坐姿檢測/提醒功能的智能臺燈原型系統。該設計在為使用者提供便利化操控體驗的同時,能夠在一定程度上預防近視與駝背;同時,允許使用者根據實際照明需求用語音改變燈泡亮度,有助于提高電能有效利用率,具有節能效果,對以智能臺燈為代表的智能家居技術的發展進行了有益探索。
在系統功能方面,仍有許多地方值得進一步探索與完善。首先,可以考慮通過加入光照度傳感器,增加一個根據當前環境光照強度變化自動調整臺燈亮度的新功能,作為語音控制的并行模式供用戶自由選擇,實現主觀(語音)與客觀(光照度)相結合的臺燈亮度調整模式,進一步改善用戶照明體驗,節約能源。其次,原型系統中采用的人體紅外傳感器,由于其特定工作原理,對放置位置有一定需求,有可能造成用戶使用不便,且難以保證對不同體型用戶的坐姿檢測都合理、精準;若在系統中加入測距傳感器,同時提供較完善的坐姿矯正算法,則系統的實用性將進一步提高。