基于凌陽SPCE061A單片機的音控小車的設(shè)計
本設(shè)計的主要目的是針對智能無人駕駛汽車設(shè)計出智能音控小車,在智能化小車上實現(xiàn)語音控制,避免出現(xiàn)許多大大小小的事故。本設(shè)計方案也可應(yīng)用于移庫倒庫過程中,而且在諸如智能建筑、公共便民設(shè)施、自動立體車庫等類似的人性化環(huán)境中也能夠發(fā)揮其作用[1]。
1 系統(tǒng)的總體設(shè)計方案及硬件設(shè)計
1. 1系統(tǒng)的總體設(shè)計描述
本設(shè)計以凌陽單片機SPCE061A為核心控制部件,采用減速直流電機LS17RU419i、電機驅(qū)動芯片L298N、紅外線光電傳感器ST178等為主要元件,以智能控制技術(shù)為理論基礎(chǔ),通過程序利用SPCE061A的語音模塊,根據(jù)麥克風采集的語音信號與事先訓(xùn)練好的語音庫的特征語音進行對比,進行語音辨識并通過語音命令小車行進、轉(zhuǎn)向及倒庫等操作。音控小車總體結(jié)構(gòu)如圖1所示。
1. 2系統(tǒng)的核心部件
SPCE061A 芯片內(nèi)部集成了 ICE、FLASH、SRAM、通用 I/O 端口、定時器/計數(shù)器、中斷控制、CPU 時鐘鎖相環(huán)、ADC、DAC輸出、UART、SIO、低電壓監(jiān)測/低電壓復(fù)位等模塊[2-3]。SPCE061A可以使外圍電路大大簡化,節(jié)省小車內(nèi)部的空間,并且凌陽單片機具有語音功能,可以加入語音識別模塊。
1. 3 小車電機驅(qū)動設(shè)計
L298是SGS公司的產(chǎn)品,L298N為15個管角的單塊集成電路,高電壓,高電流,四通道驅(qū)動,設(shè)計用L298N來接收DTL或者TTL邏輯電平,驅(qū)動感性負載(比如繼電器,直流和步進馬達)和開關(guān)電源晶體管。內(nèi)部包含4通道邏輯驅(qū)動電路,其額定工作電流為 1 A,最大可達 1.5 A,Vss 電壓最小 4.5 V,最大可達 36 V;Vs 電壓最大值也是 36 V。L298N可直接對電機進行控制,無須隔離電路,可以驅(qū)動雙電機。根據(jù)L298N芯片的特點以及SPCE061A自身的特點,把IOA4~IOA7作為輸出口,分別與L298N的IN1~IN4相接,其VS、VSS分別接+12 V、+5 V電源,其輸出口OUT1~OUT2接轉(zhuǎn)向電機,OUT3~OUT4接驅(qū)動電機,根據(jù)設(shè)計要求,結(jié)合所編好的程序,根據(jù)所發(fā)語音命令,接收信號,便可給[P_IOA_DATA]傳送數(shù)據(jù),從而控制轉(zhuǎn)向電機和驅(qū)動電機。其連接圖如圖2所示。
1. 4車身微調(diào)裝置
車身的微調(diào)裝置采用紅外線光電傳感器ST178,ST178由4個管腳組成,是集發(fā)射和接收于一體的傳感器。發(fā)射和接收管分別采用高發(fā)射功率紅外線光電二極管和高靈敏度光電晶體管組成。工作的范圍可達到4 mm~10 mm左右,采用非接觸監(jiān)測的方式。
經(jīng)過反復(fù)試驗證實,ST178紅外線光電傳感器的發(fā)射管要加500 Ω的電阻用來限流,而接收管則要接20 kΩ上拉電阻,兩管均接5 V電源,工作時電壓達到4.8 V,當距離發(fā)射頭或接收頭1cm左右的位置有障礙物阻擋時電壓迅速降到1 V。具體電路如圖3所示。
1. 5系統(tǒng)硬件部分設(shè)計
音控小車主要由電機和電機驅(qū)動部分組成,電機有2個分別用來控制后輪的驅(qū)動和前輪的轉(zhuǎn)向,采用芯片L298做為電機的驅(qū)動電路,可以驅(qū)動雙電機。小車為4輪結(jié)構(gòu),其中前面2個車輪由前輪電機控制,在連桿和支點作用下控制前輪左右擺動,來調(diào)節(jié)小車的前進方向。在自然狀態(tài)下,前輪在彈簧作用下保持中間位置。后面2個車輪由后輪電機驅(qū)動,為整個小車提供動力,所以又稱前面的輪子為方向輪,后面的兩個輪子為驅(qū)動輪。利用直流減速電機控制小車的驅(qū)動,可以不考慮調(diào)速,利用步進電機控制小車的轉(zhuǎn)向來提高小車的整體性能,具有很高的性價比。供電電源選用3塊4 V手機電池串聯(lián)成12 V電源給小車提供電能。車身裝有5個傳感器在不同方向用來進行微調(diào),防止撞壁。小車前進過程中當接收到語音命令時,可執(zhí)行行進、轉(zhuǎn)向及倒庫等操作。
本設(shè)計最終實現(xiàn)了對音控小車的設(shè)計,圖4所示是基于凌陽單片機語音控制小車的實物圖,其具體結(jié)構(gòu)是1喇叭、2車輪、3凌陽單片機、4光電傳感器、5電池及驅(qū)動板、6電機。
2系統(tǒng)的軟件設(shè)計
2. 1語音識別模塊設(shè)計
小車的語音識別模塊選用凌陽科技公司SPCE061A開發(fā)板。SPCE061A內(nèi)嵌7通道10位電壓A/D轉(zhuǎn)換器(ADC)和單通道聲音A/D轉(zhuǎn)換,聲音A/D轉(zhuǎn)換器輸入通道內(nèi)置麥克風放大器和自動增益控制功能,其本身已經(jīng)成為基本的語音處理平臺。本系統(tǒng)采用A2000模塊,其語音壓縮編碼率為24 kb/s,采樣頻率為16 kHz[4]。
語音識別主要分為“訓(xùn)練”和“識別”兩個階段。在訓(xùn)練階段,單片機對采集到的語音樣本進行分析處理,從中提取出語音特征信息,建立一個特征模型;在識別階段,單片機對采集到的語音樣本也進行類似的分析處理,提取出語音的特征信息,然后將這個特征信息模型與已有的特征模型進行對比,如果二者達到了一定的匹配度,則輸入的語音被識別。
語音識別小車過程分為以下4大部分:
(1)初始化部分:初始化操作將 IOB8~IOB11 設(shè)置為輸出端,用以控制電機。必要時還要有對應(yīng)的輸入端設(shè)置。整個小車的行駛狀態(tài)由2個電機來控制,電機1控制左拐和右拐,電機2控制前進、倒退。具體行使狀態(tài)控制如表1所示。
(2)訓(xùn)練部分:訓(xùn)練部分完成的工作就是建立語音模型。程序一開始判斷小車是否被訓(xùn)練過,如果沒有訓(xùn)練過則要求對其進行訓(xùn)練,整個訓(xùn)練過程共有 5 次,依次為:名稱—前進—倒車—左拐—右拐。在訓(xùn)練成功之后將訓(xùn)練的模型存儲到 FLASH,在以后使用時不需要重新訓(xùn)練;如果已經(jīng)訓(xùn)練過會把存儲在 FLASH 中的模型調(diào)出來裝載到辨識器中。
(3)識別部分:在識別環(huán)節(jié)當中,如果辨識結(jié)果是名字,停止當前的動作并進入待命狀態(tài),然后等待動作命令。如果辨識結(jié)果為動作指令,小車會語音告知相應(yīng)動作,并執(zhí)行該動作,在運動過程中可以通過呼叫小車的名字使小車停下來。
(4)重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵(61 板的 KEY3),循環(huán)掃描該按鍵,一旦檢測到此鍵按下,則將擦除訓(xùn)練標志位(0xe000 單元),并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當檢測到訓(xùn)練標志位為 0xffff 時會要求重新對其進行訓(xùn)練。小車訓(xùn)練流程圖如圖5所示[5]。
2. 2系統(tǒng)的軟件設(shè)計流程圖
系統(tǒng)的軟件設(shè)計流程如圖6所示。本設(shè)計采用C語言和匯編語言聯(lián)合編程的方法。其中,C語言作為主程序編程,可以充分利用C語言的優(yōu)點,調(diào)用其他程序模塊。匯編語言主要用在子程序的模塊中,利用它的中斷、延時等方面的優(yōu)點。匯編語言的主要優(yōu)點是占用硬件資源少、程序直接對硬件操作加快了處理速度。本設(shè)計的所有程序均在凌陽單片機集成開發(fā)環(huán)境IDE中進行。本系統(tǒng)的軟件部分采用模塊化程序結(jié)構(gòu),其軟件設(shè)計主要包括初始化、系統(tǒng)主程序、語音提示程序、小車微調(diào)程序等部分。
本文設(shè)計并制作的小車以凌陽單片機為控制核心,完成了語音辨識功能,并在實現(xiàn)語音控制的基礎(chǔ)上擴展了SPCE061AI/O接口,實現(xiàn)了緊急避障微調(diào)功能,能夠按照語音指令很好地完成前進、倒車、左轉(zhuǎn)、右轉(zhuǎn)以及倒庫。能夠識別人的語音命令,并根據(jù)命令的含義執(zhí)行相應(yīng)的動作。整個部分設(shè)計合理,小車運行正常。