王偉
摘要 設(shè)計(jì)了一種基于Arduino平臺(tái)、伺服舵機(jī)、舵機(jī)驅(qū)動(dòng)板、LD3320中文語(yǔ)音識(shí)別模塊控制的模仿人類動(dòng)作的機(jī)械頭。該機(jī)械頭可以實(shí)現(xiàn)根據(jù)非特定人的不同語(yǔ)音命令完成扭頭、轉(zhuǎn)眼、搖手臂、說話、唱歌等動(dòng)作的機(jī)器模型,具有一定的實(shí)用、娛樂和參考價(jià)值。
【關(guān)鍵詞】Arduino 語(yǔ)音識(shí)別 舵機(jī)
近年來語(yǔ)音識(shí)別技術(shù)為使用者提供各種服務(wù),語(yǔ)音識(shí)別技術(shù)實(shí)現(xiàn)了簡(jiǎn)單易行的人機(jī)交互接口,更好的提升了用戶體驗(yàn)度。為此,筆者2013年底設(shè)計(jì)了一款仿人類動(dòng)作的機(jī)械頭模型。
1 機(jī)械頭模型設(shè)計(jì)原理
基于Arduino平臺(tái)語(yǔ)音控制仿人類機(jī)械頭模型,其工作原理為:非特定人發(fā)出的語(yǔ)音信號(hào)經(jīng)語(yǔ)音識(shí)別模塊轉(zhuǎn)換成特定的字符串傳送到Arduion開發(fā)板,開發(fā)板接收到命令后發(fā)送指令到舵機(jī)驅(qū)動(dòng)板,由驅(qū)動(dòng)板驅(qū)動(dòng)相應(yīng)舵機(jī)轉(zhuǎn)動(dòng),配合事先錄入的MP3語(yǔ)音信息作出相應(yīng)的語(yǔ)音輸出,達(dá)到動(dòng)作和語(yǔ)音相統(tǒng)一,實(shí)現(xiàn)人機(jī)對(duì)話和互動(dòng)。
2 機(jī)械頭硬件設(shè)計(jì)介紹
本文設(shè)計(jì)的基于Arduino的語(yǔ)音控制仿人類機(jī)械頭,是建立在語(yǔ)音識(shí)別技術(shù)基礎(chǔ)上,該機(jī)械頭主要包括五個(gè)部分:1個(gè)Arduino Uno模塊、1個(gè)LD3320語(yǔ)音識(shí)別模塊、1個(gè)32路舵機(jī)驅(qū)動(dòng)版,6個(gè)伺服舵機(jī)、1個(gè)方便面盒子。
2.1 Arduino Uno模塊工作原理
Arduino Uno采用的微處理器是ATmega328.該版本包括14個(gè)數(shù)字10,6個(gè)模擬輸入IO,16MHZ的晶體,USB接口,電源接口,燒錄頭,復(fù)位按鈕等。Arduino還提供了自己的IDE開發(fā)環(huán)境,支持Winows、LinuX、MACOS等主流的操作系統(tǒng)。如圖1所示。
2.2 LD3320中文語(yǔ)音識(shí)別模塊工作原理
LD3320是ICRoute公司生產(chǎn)的一款非特定語(yǔ)音識(shí)別芯片,它內(nèi)置有非特定語(yǔ)音識(shí)別的DSP (Digital Signal Processing)算法,支持動(dòng)態(tài)添加50條識(shí)別指令,無需外掛其它輔助器件,單一芯片即可完成語(yǔ)音識(shí)別,并且直接支持MP3數(shù)據(jù)的語(yǔ)音播放。如圖2所示。
2.3 舵機(jī)驅(qū)動(dòng)板工作原理
舵機(jī)轉(zhuǎn)動(dòng)時(shí)電流較大,Arduino上的芯片可能會(huì)因?yàn)檫^流保護(hù)而導(dǎo)致?lián)p害,因此不能采用Arduino板上的電源直接給舵機(jī)供電,需要采用外部電源。舵機(jī)有三根引線,黑色或棕色為地線,紅色為電源線,黃色為信號(hào)線。該舵機(jī)驅(qū)動(dòng)板能獨(dú)立供電,同時(shí)控制32路通道,并且速度可調(diào),信號(hào)輸出:PWM(精度0.5us)。鴕機(jī)驅(qū)動(dòng)分辨率:0.5us,0.045度。波特率范圍9600, 19200, 38400, 57600, 115200,128000。支持98%以上的舵機(jī),板載512K存儲(chǔ)芯片。如圖3所示。
2.4 舵機(jī)的工作原理
舵機(jī)主要是由外殼、電路板、驅(qū)動(dòng)馬達(dá)、減速器與位置檢測(cè)元件所構(gòu)成。其工作原理是由接收機(jī)發(fā)出訊號(hào)給舵機(jī),經(jīng)由電路板上的IC驅(qū)動(dòng)無核心馬達(dá)開始轉(zhuǎn)動(dòng),透過減速齒輪將動(dòng)舵機(jī)力傳至擺臂,同時(shí)由位置檢測(cè)器送回訊號(hào),判斷是否已經(jīng)到達(dá)定位。如圖4所示。
2.5 方便面盒子
該設(shè)計(jì)中方便面盒子的作用主要用于舵機(jī)的位置固定,固定2個(gè)眼睛、2個(gè)手臂、1個(gè)上嘴巴,1個(gè)扭頭關(guān)節(jié)。如圖5所示。
3 各硬件模塊連接介紹
語(yǔ)音識(shí)別模塊的TX與Arduino控制器的RX連接,Arduino控制器的TX與舵機(jī)控制板的RX連接,舵機(jī)控制板使用外置電源連接VS和GND。Arduino供電用的USB供電,語(yǔ)音識(shí)別模塊用USB供電。舵機(jī)分別連接舵機(jī)控制板的Sl-S6。
4 軟件設(shè)計(jì)部分
本項(xiàng)目軟件包括Arduino IDE,舵機(jī)上位機(jī)UI,語(yǔ)音識(shí)別模塊配置文件修改。
4.1 Arduino Uno軟件設(shè)計(jì)
在Arduino IDE編程設(shè)計(jì)中,主要作用是像人的大腦一樣識(shí)別判斷從語(yǔ)音識(shí)別模塊中傳過來的值,并將信號(hào)傳送給舵機(jī)驅(qū)動(dòng)板,讓驅(qū)動(dòng)板驅(qū)動(dòng)相應(yīng)舵機(jī)做相應(yīng)的動(dòng)作。
例如以下代碼:
int comdata=O;//初始化值為O
void setup()
{
Serial.begin(9600); 11定義波特率為9600
)
void loop()
{
if (Serial.available()>O)//判斷語(yǔ)音模塊是否傳值過來
{
comdata+=int (Serial.read());//獲取所傳的值
delay(20);
Serial.println(comdata);,/將獲取到的值傳送給舵機(jī)驅(qū)動(dòng)板
)
if( comdata==5) //判斷傳過來的值是否等于“5”,接著執(zhí)行“轉(zhuǎn)眼睛”命令
{
Serial.print(”#1P800TlOOO\r\n);//1號(hào)舵機(jī)旋轉(zhuǎn)到脈寬為800的位置,使用時(shí)間lOOOms
delay(1000);//延時(shí)lOOOms,舵機(jī)剛好執(zhí)行完上一條命令
} )
4.2 舵機(jī)驅(qū)動(dòng)板上位機(jī)
上位機(jī)是指可以直接發(fā)出操控命令的計(jì)算機(jī), 一般是PC/host computer/mastercomputer/upper computer,屏幕上顯示各種信號(hào)變化(液壓,水位,溫度等)。在概念上,控制者和提供服務(wù)者是上位機(jī),被控制者和被服務(wù)者是下位機(jī)。如圖6所示。
4.3 語(yǔ)音識(shí)別模塊配置文件的修改
MP3語(yǔ)音文件需要事先錄入好存入語(yǔ)音識(shí)別模塊的SD卡中,通過SD卡中的mi配置文件修改參數(shù)配置,如圖7所示。
5 結(jié)語(yǔ)
本文設(shè)計(jì)了一種基于Arduino平臺(tái)、伺服舵機(jī)、舵機(jī)驅(qū)動(dòng)板、LD3320中文語(yǔ)音識(shí)別模塊控制的模仿人類動(dòng)作的機(jī)械頭。本文取得了一定語(yǔ)音控制仿人類機(jī)械頭的初步研究成果,在此基礎(chǔ)上可以繼續(xù)研究仿人類表情的機(jī)器人的設(shè)計(jì)和研制。
參考文獻(xiàn)
[1]林敏,李強(qiáng),科技資訊,基于arduino的語(yǔ)音控制系統(tǒng)[J].科技資訊,2016.
[2]蔡睿妍,基于Arduino的舵機(jī)控制系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2012.