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