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

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

2017-05-18
關(guān)鍵詞: 語音控制 機器 51單片機 avr

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

  1 芯片介紹

  1.1 LD3320語音芯片介紹

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

  1.2 AVR芯片介紹

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

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

  2.1 整體設(shè)計方案

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

  46b464bc5a480be627347601dd974f51.jpg

  2.2 語音控制部分

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

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

  25db102a08c7b84df895050e6b63ef39.jpg

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

  2.3 AVR控制部分

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

  a970c3344e887a6ff69080ad32077b3f.jpg

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

  25bd357534910e0872763f47195d872a.jpg

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

  由于計算機控制是一種離散的數(shù)字量,,魚體波曲線也需要離散化,所以把時間參數(shù)t從魚體波運動函數(shù)yboby(x,,t)中分離出來,,方程即為

  b308187e9baa0d72643222c5e32bd957.jpg

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

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

  e.jpg

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

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

  s.jpg

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

  2.4 WAP200B無線通訊傳輸部分

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

  dcb731943c43fc00305fb4a63d2f8917.jpg

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

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

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

  7491dc1e16ed7ad5b9ce68223e487428.jpg

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

  4 實驗結(jié)果

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

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

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

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

  5 結(jié)束語

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


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