洪育坤,陳燕,鄧翔宇,陳科亨,王靜
(新疆師范大學物理與電子工程學院,新疆烏魯木齊 830054)
隨著計算機和微電子技術發展的突飛猛進,智能化技術開發程度逐漸增強,影響的范圍不斷擴大,智能小車的研究在我國也成為了新興領域。由于能夠在人類無法工作的環境下運行,智能小車成為了各個電子競賽以及大學生創新創業項目的重點關注對象,智能化的研究開始受到各個高校的重視。
采用51 單片機和LD3320 語音芯片結合的方式制作智能車[1-2],由于STC89C51RC 等8 位單片機本身處理速度慢,功能接口數不多,中斷較少,性能不佳,因此采用凌陽16 位單片機SPCE061A[3-5],其數據處理能力較強,在性能上超過51 單片機,但使用前需要進行音頻的訓練,流程繁瑣。
文中使用了STM32F103C8T6單片機加上LD3320的方式。STM32F103C8T6 為32 位單片機,處理速度比8 位的51 單片機和凌陽16 位單片機快,本身具有多種功能的接口,能實現更多的模塊組合。LD3320的特點是不用事先訓練音頻,簡化了繁瑣的設計步驟。該項目整體設計滿足智能玩具設計的四個基本原則[6]。
系統硬件主要分為兩大部分:遙控器硬件部分和智能小車硬件部分。系統主要由STM32F103C8T6單片機、LD3320 語音識別模塊、HC-05 藍牙模塊、L298N 電機驅動模塊、SYN6288 語音合成模塊、HCSR04 超聲波測距模塊、舵機等構成。整體系統硬件結構框圖如圖1 所示。

圖1 系統硬件結構框圖
2.1.1 LD3320語音識別模塊
LD3320可以動態編輯語音識別的關鍵詞列表[7],具有對語音輸入進行自動錄音,并自行判斷和內部設置詞條是否相同,將最終結果傳輸給單片機的功能。自動語音識別技術(ASR)[8-9]為LD3320 語音識別芯片內部所采用的核心技術。模塊原理圖如圖2所示,可通過內置的咪咕頭[10]或者外接麥克風接收外來語音,進行語音的輸入,并可通過對寄存器的設置來更改識別的距離和靈敏度。該芯片可以通過出廠就被設置好的數據進行中文拼音的識別,將各個字的拼音連在一起就能實現詞或句的識別。優點是無需經過訓練便可直接識別語音,缺點是由于本身存儲空間的影響,可設置的詞條僅為50 個[11-12]。

圖2 LD3320原理圖
STM32 單片機的SPI 口與LD3320 進行連接,由于LD3320 只能識別中文關鍵字,故用中文諧音的關鍵字替代英文關鍵字進行識別,且英文單詞發音差異較大,因此對部分英文語音輸入增加識別關鍵字。關鍵字設置如表1 所示。

表1 語音識別字庫
當語音輸入關鍵字時,LD3320 進行識別,并通過SPI 口傳輸已設關鍵字所對應的指令至STM32 單片機。例如,若語音輸入“小車”,則STM32 打開中文相關配置的指令識別功能——后續只識別中文,而語音輸入“car”則進入英文相關配置的指令識別功能——后續只識別英文,增加程序的運行速度。采用一級詞條進行喚醒和關機,二級詞條實現控制的方式提高識別的效率和準確度[13]。
2.1.2 HC-05藍牙模塊
系統采用一種高性能的藍牙串口模塊HC-05,能有效實現透明傳輸。HC-05 在空曠地帶能夠穩定傳輸信號的距離為10 m。
HC-05 具有命令響應工作模式和自動連接工作模式兩種工作方式。該設計主要利用自動連接工作模式中的主、從模式。主模式下HC-05 啟動后在一定范圍內自動搜索其他設備的藍牙信號;從模式下HC-05 啟動后不自動搜索,等待其他設備藍牙搜索到它后才進行藍牙連接。
為實現藍牙遠程控制小車的功能,利用HC-05主、從模式,將遙控部分的藍牙設置為主模式,小車的藍牙設置為從模式,實現兩種模式下藍牙的自行建立連接并進行指令的傳輸。通過CH340 芯片與電腦連接可設置藍牙的主、從模式、地址與連接密碼等功能,令主從藍牙雙方建立相互連通的地址與相同的密碼,但不進行綁定,方便當語音無法正常使用時,用其他設備進行控制。
通過STM32單片機的USART串口連接藍牙指令[14],編寫程序對藍牙接收的指令進行中斷處理,用case語句對小車行進控制指令進行選擇。
2.2.1 避障模塊
超聲波模塊HC-SR04 具有發送和接收超聲波功能,舵機SG90 通過識別STM32 單片機輸入的占空比不同的脈沖寬度調制(PWM)波信號,來調整轉動角度。將超聲波模塊HC-SR04 安裝在舵機模上方,由舵機SG90 控制超聲波模塊的測距方向。小車在移動過程中,HC-SR04 超聲波模塊持續發射超聲波信號,當前方4 m 內出現障礙物時,超聲波信號被障礙物反射,被接收端接收,實現一次測距。STM32 單片機完成超聲波從發送到接收的計時,根據時間長短及聲音的傳播速度計算出距離,反復測試五次后(五次總時長低于0.1 ms)求得平均值。
當測距平均值小于50 cm 時,小車停止,超聲波模塊繼續測距。隨著舵機SG90 轉向,超聲波模塊測距方向變化且保持持續不間斷測距,根據后續檢測到的距離判斷小車避障行為。
2.2.2 L298N電機模塊
L298N 是一種雙路全橋式電機驅動芯片,驅動能力強,可應用在直流電機的控制中,L298N 的四個輸入端口IN1、IN2、IN3、IN4[15]與STM32 單片機的定時器連接,輸入PWM 信號,控制L298N 輸出至電機的電壓占空比,不直接給L298N 進行供電。L298N對電機的供電功能是通過外接入的電壓實現的,該模塊支持輸入6~24 V 外部供電,系統采用12 V 的供電輸入。L298N 模塊原理如圖3 所示。

圖3 L298N原理圖
12 V 供電給四個輸出端口OUT1、OUT2、OUT3、OUT4。其中OUT1、OUT2 端口通過并聯控制兩個左輪,而OUT3、OUT4 通過并聯控制兩個右輪。STM32通過調節PWM 波的幅度大小來控制L298N 輸出電壓的大小,進而控制兩側車輪,當兩側車輪轉速一致時,小車可正常前進或后退,當轉速不一致時,實現差速控制轉向,即一側車輪轉速低于另一側車輪轉速時,小車就達成了轉向的目的。小車加速與減速原理相同,只要調整全體輸入的PWM 占空比便可實現。
通過KEIL5 軟件,應用STM32 單片機官方的固件庫進行程序的編輯,并用ST-LINK 編譯器進行程序的寫入,完成軟件設計。具體流程如下:先通過LD3320 進行輸入語音的識別,當識別到設置好的關鍵詞時,主模塊遙控部分將語音信號對應的指令通過藍牙通信方式發送給從模塊小車部分的藍牙輸入。藍牙接收到指令后,無論是否為控制小車的指令,小車上的語音應答模塊SYN6288 都會進行相應的回復,對輸入進行反饋。當控制指令為停止時,小車停止移動且小車的避障部分不做反應,當為其他控制指令時,小車進行自動避障,然后繼續執行原藍牙傳輸的指令。流程圖如圖4-5 所示。

圖4 遙控程序流程圖

圖5 小車程序流程圖
小車和遙控端實際接線圖分別如圖6、圖7所示。

圖6 小車實物圖

圖7 遙控端實物圖
在安靜環境下,系統的識別率可穩定達到85%[16-20],顯然這個測試結果不夠完善,沒有列出安靜環境的判定聲音范圍,也沒有說明LD3320 模塊影響識別率部分的硬件設置。該文測試流程如下:
1)將0x35(mic 增益寄存器)設置為0x43,使之在小于50 cm 的距離內,識別較高。B5 寄存器設置為60(默認值),即超過600 ms 不發音時系統會自動認為識別完成。
2)在安靜的地方(雜音小于10 dB)進行語音信號識別功能測試。設置軟件播放白噪聲,同時播放錄制好的可識別關鍵字語音。實際實驗中,將遙控器結構模塊放置于距離音源20 cm 處,在遙控器結構模塊放置的同位置用手機APP(噪音噪聲檢測儀)檢測聲音的分貝大小。
由于人說話聲音為60 dB 左右,且個體的差異和20 cm 的傳輸損耗對測量結果有所影響,故以60 dB為中心,測試語音輸入分貝大小(S)不同的情況下使LD3320 無法響應的最低白噪聲分貝(N),并計算出二者的比值(R)。根據式(1)繪制出表2。

表2 白噪聲對語音輸入的影響
R=S/N(1)
計算出語音輸入大小與白噪聲比值的平均值約為1.66。故當大于57 dB 的語音輸入時,語音輸入聲音大小在白噪聲的2.11 倍以上能完全識別,當大于58 dB 的語音輸入時,語音輸入聲音大小在白噪聲的1.66 倍以上能完全識別。
文中采用STM32 單片機和LD3320 等模塊的組合,設計了一套智能玩具車語音控制系統,實現了雙語識別、遠程傳輸和自動避障功能。對LD3320 模塊的語音和噪聲的輸入比例進行了計算,得出了相應結論:確定輸入語音大小為58~68 dB 時,其與白噪聲比值在1.66 倍以上可完全識別,并列出了具體實驗數據。由此可根據使用環境的噪聲大小確定應當輸入語音的大小。各個模塊工作正常,運行穩定,達到預期效果。
項目仍存在不足之處:語音識別與現階段聯網的AI 識別差距較大,避障功能還不夠完美。下一步將考慮從算法和硬件方面入手,增大識別關鍵詞容量,提高識別成功率和靈敏度,制作出功能更為強大的智能玩具車。