洪育坤,陳燕,鄧翔宇,陳科亨,王靜
(新疆師范大學(xué)物理與電子工程學(xué)院,新疆烏魯木齊 830054)
隨著計(jì)算機(jī)和微電子技術(shù)發(fā)展的突飛猛進(jìn),智能化技術(shù)開發(fā)程度逐漸增強(qiáng),影響的范圍不斷擴(kuò)大,智能小車的研究在我國也成為了新興領(lǐng)域。由于能夠在人類無法工作的環(huán)境下運(yùn)行,智能小車成為了各個(gè)電子競賽以及大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目的重點(diǎn)關(guān)注對象,智能化的研究開始受到各個(gè)高校的重視。
采用51 單片機(jī)和LD3320 語音芯片結(jié)合的方式制作智能車[1-2],由于STC89C51RC 等8 位單片機(jī)本身處理速度慢,功能接口數(shù)不多,中斷較少,性能不佳,因此采用凌陽16 位單片機(jī)SPCE061A[3-5],其數(shù)據(jù)處理能力較強(qiáng),在性能上超過51 單片機(jī),但使用前需要進(jìn)行音頻的訓(xùn)練,流程繁瑣。
文中使用了STM32F103C8T6單片機(jī)加上LD3320的方式。STM32F103C8T6 為32 位單片機(jī),處理速度比8 位的51 單片機(jī)和凌陽16 位單片機(jī)快,本身具有多種功能的接口,能實(shí)現(xiàn)更多的模塊組合。LD3320的特點(diǎn)是不用事先訓(xùn)練音頻,簡化了繁瑣的設(shè)計(jì)步驟。該項(xiàng)目整體設(shè)計(jì)滿足智能玩具設(shè)計(jì)的四個(gè)基本原則[6]。
系統(tǒng)硬件主要分為兩大部分:遙控器硬件部分和智能小車硬件部分。系統(tǒng)主要由STM32F103C8T6單片機(jī)、LD3320 語音識別模塊、HC-05 藍(lán)牙模塊、L298N 電機(jī)驅(qū)動(dòng)模塊、SYN6288 語音合成模塊、HCSR04 超聲波測距模塊、舵機(jī)等構(gòu)成。整體系統(tǒng)硬件結(jié)構(gòu)框圖如圖1 所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
2.1.1 LD3320語音識別模塊
LD3320可以動(dòng)態(tài)編輯語音識別的關(guān)鍵詞列表[7],具有對語音輸入進(jìn)行自動(dòng)錄音,并自行判斷和內(nèi)部設(shè)置詞條是否相同,將最終結(jié)果傳輸給單片機(jī)的功能。自動(dòng)語音識別技術(shù)(ASR)[8-9]為LD3320 語音識別芯片內(nèi)部所采用的核心技術(shù)。模塊原理圖如圖2所示,可通過內(nèi)置的咪咕頭[10]或者外接麥克風(fēng)接收外來語音,進(jìn)行語音的輸入,并可通過對寄存器的設(shè)置來更改識別的距離和靈敏度。該芯片可以通過出廠就被設(shè)置好的數(shù)據(jù)進(jìn)行中文拼音的識別,將各個(gè)字的拼音連在一起就能實(shí)現(xiàn)詞或句的識別。優(yōu)點(diǎn)是無需經(jīng)過訓(xùn)練便可直接識別語音,缺點(diǎn)是由于本身存儲空間的影響,可設(shè)置的詞條僅為50 個(gè)[11-12]。
圖2 LD3320原理圖
STM32 單片機(jī)的SPI 口與LD3320 進(jìn)行連接,由于LD3320 只能識別中文關(guān)鍵字,故用中文諧音的關(guān)鍵字替代英文關(guān)鍵字進(jìn)行識別,且英文單詞發(fā)音差異較大,因此對部分英文語音輸入增加識別關(guān)鍵字。關(guān)鍵字設(shè)置如表1 所示。
表1 語音識別字庫
當(dāng)語音輸入關(guān)鍵字時(shí),LD3320 進(jìn)行識別,并通過SPI 口傳輸已設(shè)關(guān)鍵字所對應(yīng)的指令至STM32 單片機(jī)。例如,若語音輸入“小車”,則STM32 打開中文相關(guān)配置的指令識別功能——后續(xù)只識別中文,而語音輸入“car”則進(jìn)入英文相關(guān)配置的指令識別功能——后續(xù)只識別英文,增加程序的運(yùn)行速度。采用一級詞條進(jìn)行喚醒和關(guān)機(jī),二級詞條實(shí)現(xiàn)控制的方式提高識別的效率和準(zhǔn)確度[13]。
2.1.2 HC-05藍(lán)牙模塊
系統(tǒng)采用一種高性能的藍(lán)牙串口模塊HC-05,能有效實(shí)現(xiàn)透明傳輸。HC-05 在空曠地帶能夠穩(wěn)定傳輸信號的距離為10 m。
HC-05 具有命令響應(yīng)工作模式和自動(dòng)連接工作模式兩種工作方式。該設(shè)計(jì)主要利用自動(dòng)連接工作模式中的主、從模式。主模式下HC-05 啟動(dòng)后在一定范圍內(nèi)自動(dòng)搜索其他設(shè)備的藍(lán)牙信號;從模式下HC-05 啟動(dòng)后不自動(dòng)搜索,等待其他設(shè)備藍(lán)牙搜索到它后才進(jìn)行藍(lán)牙連接。
為實(shí)現(xiàn)藍(lán)牙遠(yuǎn)程控制小車的功能,利用HC-05主、從模式,將遙控部分的藍(lán)牙設(shè)置為主模式,小車的藍(lán)牙設(shè)置為從模式,實(shí)現(xiàn)兩種模式下藍(lán)牙的自行建立連接并進(jìn)行指令的傳輸。通過CH340 芯片與電腦連接可設(shè)置藍(lán)牙的主、從模式、地址與連接密碼等功能,令主從藍(lán)牙雙方建立相互連通的地址與相同的密碼,但不進(jìn)行綁定,方便當(dāng)語音無法正常使用時(shí),用其他設(shè)備進(jìn)行控制。
通過STM32單片機(jī)的USART串口連接藍(lán)牙指令[14],編寫程序?qū)λ{(lán)牙接收的指令進(jìn)行中斷處理,用case語句對小車行進(jìn)控制指令進(jìn)行選擇。
2.2.1 避障模塊
超聲波模塊HC-SR04 具有發(fā)送和接收超聲波功能,舵機(jī)SG90 通過識別STM32 單片機(jī)輸入的占空比不同的脈沖寬度調(diào)制(PWM)波信號,來調(diào)整轉(zhuǎn)動(dòng)角度。將超聲波模塊HC-SR04 安裝在舵機(jī)模上方,由舵機(jī)SG90 控制超聲波模塊的測距方向。小車在移動(dòng)過程中,HC-SR04 超聲波模塊持續(xù)發(fā)射超聲波信號,當(dāng)前方4 m 內(nèi)出現(xiàn)障礙物時(shí),超聲波信號被障礙物反射,被接收端接收,實(shí)現(xiàn)一次測距。STM32 單片機(jī)完成超聲波從發(fā)送到接收的計(jì)時(shí),根據(jù)時(shí)間長短及聲音的傳播速度計(jì)算出距離,反復(fù)測試五次后(五次總時(shí)長低于0.1 ms)求得平均值。
當(dāng)測距平均值小于50 cm 時(shí),小車停止,超聲波模塊繼續(xù)測距。隨著舵機(jī)SG90 轉(zhuǎn)向,超聲波模塊測距方向變化且保持持續(xù)不間斷測距,根據(jù)后續(xù)檢測到的距離判斷小車避障行為。
2.2.2 L298N電機(jī)模塊
L298N 是一種雙路全橋式電機(jī)驅(qū)動(dòng)芯片,驅(qū)動(dòng)能力強(qiáng),可應(yīng)用在直流電機(jī)的控制中,L298N 的四個(gè)輸入端口IN1、IN2、IN3、IN4[15]與STM32 單片機(jī)的定時(shí)器連接,輸入PWM 信號,控制L298N 輸出至電機(jī)的電壓占空比,不直接給L298N 進(jìn)行供電。L298N對電機(jī)的供電功能是通過外接入的電壓實(shí)現(xiàn)的,該模塊支持輸入6~24 V 外部供電,系統(tǒng)采用12 V 的供電輸入。L298N 模塊原理如圖3 所示。
圖3 L298N原理圖
12 V 供電給四個(gè)輸出端口OUT1、OUT2、OUT3、OUT4。其中OUT1、OUT2 端口通過并聯(lián)控制兩個(gè)左輪,而OUT3、OUT4 通過并聯(lián)控制兩個(gè)右輪。STM32通過調(diào)節(jié)PWM 波的幅度大小來控制L298N 輸出電壓的大小,進(jìn)而控制兩側(cè)車輪,當(dāng)兩側(cè)車輪轉(zhuǎn)速一致時(shí),小車可正常前進(jìn)或后退,當(dāng)轉(zhuǎn)速不一致時(shí),實(shí)現(xiàn)差速控制轉(zhuǎn)向,即一側(cè)車輪轉(zhuǎn)速低于另一側(cè)車輪轉(zhuǎn)速時(shí),小車就達(dá)成了轉(zhuǎn)向的目的。小車加速與減速原理相同,只要調(diào)整全體輸入的PWM 占空比便可實(shí)現(xiàn)。
通過KEIL5 軟件,應(yīng)用STM32 單片機(jī)官方的固件庫進(jìn)行程序的編輯,并用ST-LINK 編譯器進(jìn)行程序的寫入,完成軟件設(shè)計(jì)。具體流程如下:先通過LD3320 進(jìn)行輸入語音的識別,當(dāng)識別到設(shè)置好的關(guān)鍵詞時(shí),主模塊遙控部分將語音信號對應(yīng)的指令通過藍(lán)牙通信方式發(fā)送給從模塊小車部分的藍(lán)牙輸入。藍(lán)牙接收到指令后,無論是否為控制小車的指令,小車上的語音應(yīng)答模塊SYN6288 都會進(jìn)行相應(yīng)的回復(fù),對輸入進(jìn)行反饋。當(dāng)控制指令為停止時(shí),小車停止移動(dòng)且小車的避障部分不做反應(yīng),當(dāng)為其他控制指令時(shí),小車進(jìn)行自動(dòng)避障,然后繼續(xù)執(zhí)行原藍(lán)牙傳輸?shù)闹噶?。流程圖如圖4-5 所示。
圖4 遙控程序流程圖
圖5 小車程序流程圖
小車和遙控端實(shí)際接線圖分別如圖6、圖7所示。
圖6 小車實(shí)物圖
圖7 遙控端實(shí)物圖
在安靜環(huán)境下,系統(tǒng)的識別率可穩(wěn)定達(dá)到85%[16-20],顯然這個(gè)測試結(jié)果不夠完善,沒有列出安靜環(huán)境的判定聲音范圍,也沒有說明LD3320 模塊影響識別率部分的硬件設(shè)置。該文測試流程如下:
1)將0x35(mic 增益寄存器)設(shè)置為0x43,使之在小于50 cm 的距離內(nèi),識別較高。B5 寄存器設(shè)置為60(默認(rèn)值),即超過600 ms 不發(fā)音時(shí)系統(tǒng)會自動(dòng)認(rèn)為識別完成。
2)在安靜的地方(雜音小于10 dB)進(jìn)行語音信號識別功能測試。設(shè)置軟件播放白噪聲,同時(shí)播放錄制好的可識別關(guān)鍵字語音。實(shí)際實(shí)驗(yàn)中,將遙控器結(jié)構(gòu)模塊放置于距離音源20 cm 處,在遙控器結(jié)構(gòu)模塊放置的同位置用手機(jī)APP(噪音噪聲檢測儀)檢測聲音的分貝大小。
由于人說話聲音為60 dB 左右,且個(gè)體的差異和20 cm 的傳輸損耗對測量結(jié)果有所影響,故以60 dB為中心,測試語音輸入分貝大小(S)不同的情況下使LD3320 無法響應(yīng)的最低白噪聲分貝(N),并計(jì)算出二者的比值(R)。根據(jù)式(1)繪制出表2。
表2 白噪聲對語音輸入的影響
R=S/N(1)
計(jì)算出語音輸入大小與白噪聲比值的平均值約為1.66。故當(dāng)大于57 dB 的語音輸入時(shí),語音輸入聲音大小在白噪聲的2.11 倍以上能完全識別,當(dāng)大于58 dB 的語音輸入時(shí),語音輸入聲音大小在白噪聲的1.66 倍以上能完全識別。
文中采用STM32 單片機(jī)和LD3320 等模塊的組合,設(shè)計(jì)了一套智能玩具車語音控制系統(tǒng),實(shí)現(xiàn)了雙語識別、遠(yuǎn)程傳輸和自動(dòng)避障功能。對LD3320 模塊的語音和噪聲的輸入比例進(jìn)行了計(jì)算,得出了相應(yīng)結(jié)論:確定輸入語音大小為58~68 dB 時(shí),其與白噪聲比值在1.66 倍以上可完全識別,并列出了具體實(shí)驗(yàn)數(shù)據(jù)。由此可根據(jù)使用環(huán)境的噪聲大小確定應(yīng)當(dāng)輸入語音的大小。各個(gè)模塊工作正常,運(yùn)行穩(wěn)定,達(dá)到預(yù)期效果。
項(xiàng)目仍存在不足之處:語音識別與現(xiàn)階段聯(lián)網(wǎng)的AI 識別差距較大,避障功能還不夠完美。下一步將考慮從算法和硬件方面入手,增大識別關(guān)鍵詞容量,提高識別成功率和靈敏度,制作出功能更為強(qiáng)大的智能玩具車。