《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > 基于AVR和51單片機(jī)的機(jī)器魚(yú)語(yǔ)音控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

基于AVR和51單片機(jī)的機(jī)器魚(yú)語(yǔ)音控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2017-05-18

  近年來(lái),海洋資源開(kāi)發(fā)日趨焦點(diǎn),機(jī)器魚(yú)作為一項(xiàng)現(xiàn)代化的新成果,具有廣泛的現(xiàn)實(shí)意義,它可以更逼真的模擬魚(yú)的游動(dòng)原理,在水下的運(yùn)動(dòng)更符合流體力學(xué)原理,具有更好的加速和轉(zhuǎn)向能力,利用它可以探測(cè)海洋資源,尋找和檢測(cè)海域中受污染的地方,也可以用來(lái)勘探地形等等。隨著科技的發(fā)展,人類對(duì)智能化產(chǎn)品的研究步伐在不斷加快。但是,作為一項(xiàng)比較新的產(chǎn)品,機(jī)器魚(yú)的智能化程度還遠(yuǎn)遠(yuǎn)不夠,伴隨著研究的加深,機(jī)器魚(yú)的功能也會(huì)更趨完善。語(yǔ)音識(shí)別作為一門交叉學(xué)科,它的出現(xiàn)實(shí)現(xiàn)了長(zhǎng)期以來(lái)人們渴望與機(jī)器交流的夢(mèng)想。語(yǔ)音識(shí)別技術(shù)就是讓機(jī)器通過(guò)識(shí)別和理解過(guò)程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高技術(shù)。近年來(lái),語(yǔ)音識(shí)別技術(shù)發(fā)展迅速,取得顯著進(jìn)步,并且已經(jīng)開(kāi)始被應(yīng)用于通信、家庭服務(wù)、汽車電子、醫(yī)療、家電、消費(fèi)電子產(chǎn)品等各個(gè)領(lǐng)域。截至目前,還沒(méi)有出現(xiàn)針對(duì)語(yǔ)音識(shí)別系統(tǒng)和機(jī)器魚(yú)結(jié)合的設(shè)計(jì)。本文實(shí)現(xiàn)了機(jī)器魚(yú)和語(yǔ)音識(shí)別系統(tǒng)結(jié)合的硬件設(shè)計(jì)。

  1 芯片介紹

  1.1 LD3320語(yǔ)音芯片介紹

  LD3320是一顆基于ASR技術(shù)非特定人語(yǔ)音識(shí)別的語(yǔ)音識(shí)別芯片。語(yǔ)音識(shí)別ASR技術(shù),是基于關(guān)鍵詞語(yǔ)列表識(shí)別的技術(shù)。只需要軟件編輯好要識(shí)別的關(guān)鍵詞語(yǔ)列表,并把這些關(guān)鍵詞語(yǔ)以字符形式傳送到芯片內(nèi)部,就可以對(duì)人說(shuō)出的關(guān)鍵詞語(yǔ)進(jìn)行識(shí)別,不需要作任何錄音。比如,在51單片機(jī)編程中,簡(jiǎn)單地設(shè)置語(yǔ)音芯片的寄存器,諸如把“ni hao”這樣的識(shí)別關(guān)鍵詞動(dòng)態(tài)地傳入芯片中,芯片就可以識(shí)別這個(gè)關(guān)鍵詞語(yǔ)了。并且在同一時(shí)刻,最多可以在50條關(guān)鍵詞語(yǔ)中進(jìn)行識(shí)別,可以根據(jù)場(chǎng)景需要,在終端隨時(shí)編輯和更新這50條關(guān)鍵詞語(yǔ)。另外,芯片上集成了高精度的D/A和A/D接口,并且接有Flash和RAM,只需把麥克風(fēng)接在芯片的AD引腳上即可實(shí)現(xiàn)語(yǔ)音識(shí)別/聲控/人機(jī)對(duì)話功能。

  1.2 AVR芯片介紹

  本例使用ATmega128單片機(jī)作為魚(yú)體控制芯片,ATmega128具有以下特點(diǎn):低功耗的8位微處理器,有133條指令,且大多數(shù)指令可以在一個(gè)時(shí)鐘周期內(nèi)完成;53個(gè)可編程I/O口線;128K字節(jié)的系統(tǒng)內(nèi)可編程Flash;4K字節(jié)的EEPROM;優(yōu)化的外部存儲(chǔ)器空間多達(dá)64K字節(jié);兩個(gè)帶有獨(dú)立預(yù)分頻器和比較器的8位定時(shí)器/計(jì)數(shù)器;兩個(gè)帶有預(yù)分頻器、比較功能和捕捉功能的16位定時(shí)器/計(jì)數(shù)器;兩路8位PWM;6路分辨率可變(2到16位)的PWM;兩個(gè)可編程的串行USART;8路10位的ADC。

  2 硬件設(shè)計(jì)實(shí)現(xiàn)

  2.1 整體設(shè)計(jì)方案

  語(yǔ)音識(shí)別系統(tǒng)識(shí)別到語(yǔ)音數(shù)據(jù)會(huì)產(chǎn)生一個(gè)中斷信號(hào)給51單片機(jī),然后單片機(jī)通過(guò)程序判斷語(yǔ)音數(shù)據(jù)的正確性(可能是噪音),如果正確就通過(guò)P0口讀取語(yǔ)音數(shù)據(jù),并且將數(shù)據(jù)通過(guò)WAP200B無(wú)線通訊模塊發(fā)送給魚(yú)體主控芯片AVR單片機(jī),此時(shí)AVR就可以根據(jù)命令產(chǎn)生相應(yīng)占空比的PWM波。整體方案設(shè)計(jì)如圖1所示。

  46b464bc5a480be627347601dd974f51.jpg

  2.2 語(yǔ)音控制部分

  M-LD3320進(jìn)行語(yǔ)音識(shí)別時(shí),需要有較高純凈度的3.3V直流電源供電和合適的晶振信號(hào)(我們使用了12M正方形有源晶振)。使用51單片機(jī)編寫(xiě)程序主控LD3320芯片,來(lái)實(shí)現(xiàn)語(yǔ)音識(shí)別功能。同時(shí)必須保證51單片機(jī)和語(yǔ)音模塊的最終供電電源統(tǒng)一。

  麥克風(fēng)采集到聲音,不管是否識(shí)別到正常結(jié)果,芯片都會(huì)產(chǎn)生一個(gè)中斷信號(hào)通過(guò)IRO管腳返回給51單片機(jī),并且將數(shù)據(jù)通過(guò)ICR_P0~I(xiàn)CR_P7傳送給51單片機(jī)進(jìn)行處理,然后中斷程序要根據(jù)寄存器的值分析結(jié)果,如果識(shí)別成功,就將識(shí)別得到的數(shù)據(jù)通過(guò)無(wú)線通訊模塊發(fā)送出去。由于本文在語(yǔ)音模塊傳送數(shù)據(jù)給MCU時(shí)采用并行方式,所以MD直接接地,如果采用串行方式需要使MD管腳置高。它與51單片機(jī)(基于STC89C52)的連接示意圖如圖2所示。

  25db102a08c7b84df895050e6b63ef39.jpg

  模塊PCB板已經(jīng)將連接麥克風(fēng)的引腳接到模塊的MIC插座上,所以在連接電路的時(shí)候11~19和22~31引腳懸空不用。與51單片機(jī)連接時(shí),ICR_P0~I(xiàn)CR_P7(2和33-39引腳)必須連接在單片機(jī)的數(shù)據(jù)總線上,同時(shí)需要在P0-P7,以及RDB,MD,INTB,WRB,CSB這些控制管腳上焊接1K /10K的上拉電阻(上拉到3.3V即可),這樣可以輔助系統(tǒng)穩(wěn)定運(yùn)行。CLK引腳的連接有兩種選擇:1)直接將51單片機(jī)的晶振信號(hào)通過(guò)導(dǎo)線輸入到LD3320的CLK管腳,但是導(dǎo)線不宜過(guò)長(zhǎng)。2)將正方形有源晶振直接焊接在模塊上預(yù)留的連接點(diǎn),此時(shí)CLK管腳需要懸空。本文采用的第二種方法。

  2.3 AVR控制部分

  AVR是魚(yú)體的主控MCU,主要用來(lái)控制機(jī)器魚(yú)的的動(dòng)力部分。機(jī)器魚(yú)的動(dòng)力來(lái)自舵機(jī),設(shè)計(jì)關(guān)節(jié)數(shù)為三個(gè),即有三個(gè)舵機(jī)。每個(gè)舵機(jī)由十五位的不同占空比的PWM波來(lái)控制轉(zhuǎn)動(dòng)不同的角度,三個(gè)舵機(jī)需要配合形成魚(yú)體波來(lái)控制魚(yú)體擺動(dòng)。魚(yú)體結(jié)構(gòu)如圖3。

  a970c3344e887a6ff69080ad32077b3f.jpg

  魚(yú)體波是利用桿系機(jī)器魚(yú)對(duì)真實(shí)魚(yú)游動(dòng)形態(tài)的擬合,可以認(rèn)為魚(yú)體波曲線是魚(yú)體波幅包絡(luò)線和正弦曲線的合成,它開(kāi)始于魚(yú)體慣性力的中心,延伸至尾柄,其曲線方程可表示為

  25bd357534910e0872763f47195d872a.jpg

  式中,yboby是魚(yú)體的橫向位移(背腹軸),x是魚(yú)體的軸向位侈(頭尾軸),c1是魚(yú)體波波幅包絡(luò)線的一次項(xiàng)系數(shù),c2是魚(yú)體波波幅包絡(luò)線的二次項(xiàng)系數(shù),k是波長(zhǎng)倍數(shù)(k=2π/λ),λ是魚(yú)體波的波長(zhǎng),w是魚(yú)體波的頻率(w=2πf=2π/T)。

  由于計(jì)算機(jī)控制是一種離散的數(shù)字量,魚(yú)體波曲線也需要離散化,所以把時(shí)間參數(shù)t從魚(yú)體波運(yùn)動(dòng)函數(shù)yboby(x,t)中分離出來(lái),方程即為

  b308187e9baa0d72643222c5e32bd957.jpg

  式中,i表示一個(gè)擺動(dòng)周期內(nèi)的樣條曲線序列的第i個(gè)變量;N表示魚(yú)體波分辨率,即在一個(gè)擺動(dòng)周期內(nèi)整個(gè)魚(yú)體波被離散的程度,其上限不能大于驅(qū)動(dòng)機(jī)構(gòu)擺動(dòng)的最高頻率。

  為了更好地表征魚(yú)體波動(dòng)的參數(shù),提高魚(yú)體方向控制特別是轉(zhuǎn)彎過(guò)程中的靈活性,在方程2的特征參數(shù)基礎(chǔ)上,增加波長(zhǎng)倍數(shù)k相對(duì)于x的二次增益,修改后的方程如下

  e.jpg

  通過(guò)調(diào)整k1和k2的值,根據(jù)x的變化可以得到更多的魚(yú)體波曲線。同時(shí),在機(jī)器魚(yú)的設(shè)計(jì)過(guò)程中,可通過(guò)微調(diào)身體波參數(shù)來(lái)增加運(yùn)動(dòng)的機(jī)動(dòng)性和靈活性。

  根據(jù)實(shí)際魚(yú)體選擇合適的魚(yú)體波參數(shù),通過(guò)仿真工具模擬出一個(gè)擺動(dòng)周期內(nèi)i從0~N的所有魚(yú)體波,就可以計(jì)算舵機(jī)在各種情況下所需轉(zhuǎn)動(dòng)的角度,然后就可以設(shè)定各個(gè)舵機(jī)的PWM波占空比,就可以產(chǎn)生所需要的魚(yú)體波。本文設(shè)定參數(shù)為c1=0.05;c2=0.09;k1=0.5;k2=0.1;N=10的一條魚(yú)體波曲線如圖4,直線段為實(shí)際中三節(jié)舵機(jī)配合形成的魚(yú)體波,曲線為理想魚(yú)體波曲線。

  s.jpg

  使用AVR的USART0與無(wú)線通信模塊連接。當(dāng)51單片機(jī)通過(guò)無(wú)線通訊模塊將數(shù)據(jù)傳送到AVR時(shí),AVR單片機(jī)軟件控制會(huì)產(chǎn)生一個(gè)串行中斷,此時(shí)可以判斷接收到的命令,根據(jù)命令改變PWM波的占空比,從而改變機(jī)器魚(yú)的游動(dòng)方向。

  2.4 WAP200B無(wú)線通訊傳輸部分

  無(wú)線模塊WAP200B總共有10個(gè)管腳:VCC_CPU為MCU電源輸入,VCC_RF為RF短路電源,VCC_PA為RF功放電源,它們?nèi)齻€(gè)管腳接DC3.3V;SET為配置或者正常工作模式選擇信號(hào)輸入管腳,低電平時(shí)WAP200B為配置模式,此時(shí)串口的數(shù)據(jù)作為配置指令而不會(huì)被傳送出去,高電平(3.3V)時(shí)模塊使能接發(fā)功能;RXD/TXD是串口數(shù)據(jù)從WAP200B輸入/輸出的管腳,3.3V/5V兼容TTL邏輯電平,RESET為復(fù)位信號(hào)輸入管腳,正常工作接高電平;ANTENNA為天線接口。連接方式如圖5所示。

  dcb731943c43fc00305fb4a63d2f8917.jpg

  無(wú)線通訊模塊的TXD/RXD分別與51單片機(jī)的RXD/TD相連,就相當(dāng)于51單片機(jī)的一個(gè)串口。在使用無(wú)線通汛模塊之前,需要配置它的波特率、串口模式、頻道以及發(fā)射功率(SET置低),兩個(gè)互相通訊的模塊必須保證具有相同的波特率和頻道,同時(shí)51單片機(jī)串口的波特率也必須和通訊模塊一致,發(fā)射功率可以根據(jù)發(fā)射的距離遠(yuǎn)近設(shè)定。

  3 控制軟件設(shè)計(jì)流程

  51單片機(jī)是語(yǔ)音芯片的主控CPU,它的軟件主要包括主程序,串口初始化(波特率和串口模式設(shè)定需要和無(wú)線通訊模塊一致),語(yǔ)音系統(tǒng)的識(shí)別控制,命令數(shù)據(jù)的發(fā)送。51程序流程如圖6所示。

  7491dc1e16ed7ad5b9ce68223e487428.jpg

  AVR是魚(yú)體主控芯片,它的軟件主要包括主程序,串口初始化(波特率和串口模式需要同上一致,還設(shè)置接收中斷打開(kāi)狀態(tài)),產(chǎn)生使機(jī)器魚(yú)直游的PWM波,無(wú)論在什么狀態(tài),只要串口接收到命令就會(huì)產(chǎn)生中斷,就需要根據(jù)命令改變PWM波的占空比,從而改變機(jī)器魚(yú)的游動(dòng)方向,需要注意的是在改變PWM波占空比以后,只需要保持此占空比一段時(shí)間(該時(shí)間段內(nèi)有可能有新的命令),在魚(yú)體改變方向以后就需要再次將占空比改為直游。AVR控制流程如圖7所示。

  4 實(shí)驗(yàn)結(jié)果

  此語(yǔ)音控制系統(tǒng)在實(shí)驗(yàn)中已經(jīng)得到實(shí)現(xiàn)。我們?cè)?1單片機(jī)中編輯了“zuo”、 “you”、 “qian”等命令:在AVR單片機(jī)的接受中斷編輯了相應(yīng)命令的PWM波占空比;所有串口通訊參數(shù)設(shè)置為:波特率9600bps;串口模式為8個(gè)數(shù)據(jù)位,1個(gè)停止位,無(wú)校驗(yàn)位;頻道設(shè)置為28;發(fā)射功率設(shè)為最大(FF)。使用了奧林巴斯ME52的麥克風(fēng)作為語(yǔ)音接收設(shè)備。

  表1是魚(yú)在直游(前)的時(shí)候,三個(gè)舵機(jī)在十個(gè)離散周期各自的轉(zhuǎn)角。在轉(zhuǎn)向的時(shí)候,前兩個(gè)舵機(jī)偏轉(zhuǎn),第三個(gè)舵機(jī)保持不變;在進(jìn)行“左”轉(zhuǎn)命令時(shí),舵機(jī)1和舵機(jī)2在直游基礎(chǔ)上加上負(fù)40°;“右”轉(zhuǎn)時(shí)加上正40°。由于舵機(jī)轉(zhuǎn)角與PWM波占空比是線性關(guān)系,在此基礎(chǔ)上,我們匹配了PWM波占空比與舵機(jī)轉(zhuǎn)角的數(shù)學(xué)關(guān)系式

    jiaodu是定義的直游時(shí)各舵機(jī)的轉(zhuǎn)角數(shù)組,j是舵機(jī)號(hào),i是周期,pianjiao是左轉(zhuǎn)右轉(zhuǎn)等附加給直游時(shí)的角度(正負(fù)40°);xiuzheng是實(shí)際中需要調(diào)試的補(bǔ)償角度。

  實(shí)際操作中,當(dāng)發(fā)出“左”、 “右”、 “前”等命令時(shí),機(jī)器魚(yú)會(huì)立即做出相應(yīng)的動(dòng)作。

  5 結(jié)束語(yǔ)

  文中主要介紹了語(yǔ)音識(shí)別技術(shù)在機(jī)器魚(yú)上的應(yīng)用以及魚(yú)體波的產(chǎn)生原理,實(shí)現(xiàn)了語(yǔ)音控制機(jī)器魚(yú)的游動(dòng)方向,相信隨著機(jī)器魚(yú)的研究深入,可以在語(yǔ)音系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)更多功能,使機(jī)器魚(yú)更加趨于智能化,最終可以為人類探索海洋提供更多幫助和便利。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。