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