曾祥義,張?jiān)苽?,陳 嶺,樊陽陽,武 占
(昆明理工大學(xué)信息工程與自動化學(xué)院,昆明650500)
基于Android和Arduino的語音控制小車設(shè)計(jì)?
曾祥義,張?jiān)苽?,陳嶺,樊陽陽,武占
(昆明理工大學(xué)信息工程與自動化學(xué)院,昆明650500)
隨著Android智能平臺的發(fā)展,為了讓機(jī)器人的控制更加方便和人性化,提出以Android平臺為研究重點(diǎn),應(yīng)用藍(lán)牙通信技術(shù)實(shí)現(xiàn)Android平臺無線控制小車運(yùn)動的方案。首先,采用科大訊飛語音云平臺來實(shí)現(xiàn)小車控制軟件語音識別部分,其次,小車的運(yùn)動系統(tǒng)由Arduino控制板來驅(qū)動,最后,系統(tǒng)通過藍(lán)牙實(shí)現(xiàn)Android平臺與Arduino開發(fā)板之間的通信。實(shí)驗(yàn)表明,系統(tǒng)能夠較好地達(dá)到語音控制的目的。
Android平臺;Arduino開發(fā)板;藍(lán)牙;語音識別;無線通信;串口
通過語音與機(jī)器人進(jìn)行交流,讓機(jī)器人讀懂人的意圖,這是人們長期以來夢寐以求的事情。隨著語音技術(shù)的不斷進(jìn)步,人類的這個(gè)理想逐漸得以實(shí)現(xiàn)。以Android平臺和Arduino開發(fā)板為工具,結(jié)合開放的語音平臺,搭建好完整的語音識別控制系統(tǒng)。用戶通過Android平臺(手機(jī)/平板)的麥克風(fēng)輸入語音指令,語音信號經(jīng)處理、識別,得出結(jié)果,然后通過藍(lán)牙傳輸給小車并作出動作。
整個(gè)語音控制系統(tǒng)由Android平板、Arduino主控板、藍(lán)牙模塊、直流電機(jī)驅(qū)動模塊四部分組成。其中,Android平板實(shí)現(xiàn)語音信號的采集并將采集到的信號發(fā)送至科大訊飛的語音云平臺進(jìn)行識別,然后獲取返回的識別結(jié)果并將結(jié)果解析為預(yù)設(shè)的指令發(fā)送給Arduino主控板。Arduino控制板根據(jù)指令通過驅(qū)動模塊驅(qū)動電機(jī)進(jìn)行動作。小車的控制界面是運(yùn)行在Android操作系統(tǒng)上的應(yīng)用程序,該程序基于Android4.1.1系統(tǒng)編寫,所用的開發(fā)工具為ADT Bundle,這是已經(jīng)集成好的IDE,包含了Eclipse、ADT插件和SDK Tools,只需要安裝好jdk即可進(jìn)行開發(fā)[1]。
3.1Arduino主控板
Arduino是一個(gè)開源的單片機(jī)電子設(shè)計(jì)平臺,硬件部分由Atmel AVR單片機(jī)、I/O接口及相關(guān)電路組成,軟件部分則包括標(biāo)準(zhǔn)的程序編譯器和程序下載器,具有使用類似Java和C語言的Processing/Wiring開發(fā)環(huán)境。相對于傳統(tǒng)單片機(jī),Arduino的特點(diǎn)主要包括免費(fèi)、開源的IDE,開源的硬件(包括原理圖和PCB圖),所有資源都可以免費(fèi)下載,并且可依靠需求自己修改,方便與傳感器及各式各樣的電子組件連接[2]。本系統(tǒng)的主控制器采用Arduino Mega2560。Arduino Mega2560是采用USB接口的核心電路板,核心是Atmega2560單片機(jī),同時(shí)具有54路數(shù)字輸入/輸出口(其中16路可作為PWM輸出),16路模擬輸入,4路UART接口,一個(gè)16MHz晶體振蕩器,一個(gè)USB口,一個(gè)電源插座,一個(gè)ICSP header和一個(gè)復(fù)位按鈕。控制板通過標(biāo)準(zhǔn)USB線纜與電腦連接,便于在線程序調(diào)試[3]。
3.2電機(jī)驅(qū)動板
小車直流電機(jī)采用Arduino直流電機(jī)驅(qū)動擴(kuò)展板模塊進(jìn)行驅(qū)動。這個(gè)模塊采用LGS公司優(yōu)秀的大功率電機(jī)專用驅(qū)動芯片L298P,可直接驅(qū)動2個(gè)直流電機(jī),驅(qū)動電流達(dá)2A,電機(jī)輸出端采用8只高速肖特基二極管作為保護(hù)[4]。L298P內(nèi)部包含4通道邏輯驅(qū)動電路,是一種二相和四相電機(jī)的專用驅(qū)動器,內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動器,接收標(biāo)準(zhǔn)TTL邏輯電平信號,可驅(qū)動46V、2A以下的電機(jī),正好可以滿足小車左右直流電機(jī)的驅(qū)動要求。并且L289P具有過溫保護(hù)功能和較高的噪聲抑制比,故十分適用于智能小車中。由于芯片L298P不具有對電機(jī)轉(zhuǎn)速的控制,因此,通過Arduino程序控制調(diào)節(jié)驅(qū)動電機(jī)的PWM信號,改變電機(jī)輸出功率,從而控制左右電機(jī)的轉(zhuǎn)速。
3.3HC-05藍(lán)牙模塊
HC-05嵌入式藍(lán)牙串口通訊模塊(以下簡稱藍(lán)牙模塊)具有兩種工作模式:命令響應(yīng)工作模式和自動連接工作模式,在自動連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(huán)(Loopback)三種工作角色。當(dāng)模塊處于自動連接工作模式時(shí),將自動根據(jù)事先設(shè)定的方式連接數(shù)據(jù)傳輸;當(dāng)模塊處于命令響應(yīng)工作模式時(shí)能執(zhí)行所有AT命令,用戶可向模塊發(fā)送各種AT指令,為模塊設(shè)定控制參數(shù)或發(fā)布控制命令。通過控制模塊外部引腳(PIO11)輸入電平,可以實(shí)現(xiàn)模塊工作狀態(tài)的動態(tài)轉(zhuǎn)換。
3.4語音識別引擎選擇
智能語音行業(yè)具有很高的行業(yè)技術(shù)壁壘,在全球范圍內(nèi),只有少數(shù)的企業(yè)具有競爭實(shí)力。在國外,有Nuance、蘋果、Google等;在國內(nèi),有科大訊飛、凌聲芯、思必馳、捷通華聲等。相對于其他語音引擎,科大訊飛的中文連續(xù)語音識別率更高、響應(yīng)速度更快、也更易于使用。只需要在其語音云開放平臺注冊成為開發(fā)者,為所開發(fā)的應(yīng)用申請appip,并下載相應(yīng)的SDK導(dǎo)入到應(yīng)用開發(fā)項(xiàng)目中即可使用[5]。
3.5硬件總體設(shè)計(jì)
系統(tǒng)硬件部分由Arduino Mega2560、Arduino直流電機(jī)驅(qū)動擴(kuò)展板L298P模塊、HC05藍(lán)牙模塊組成。通過Arduino控制板配合Arduino直流電機(jī)驅(qū)動擴(kuò)展板L298P模塊可以直接驅(qū)動兩路直流電動機(jī)。由于系統(tǒng)小車底盤采用四路電機(jī)驅(qū)動,而Arduino直流電機(jī)驅(qū)動擴(kuò)展板模塊只有兩路輸出,所以將小車底盤左右兩側(cè)的電機(jī)分別并聯(lián)接入Arduino直流電機(jī)擴(kuò)展板的A、B輸出口。另外,為了實(shí)現(xiàn)藍(lán)牙通信,利用Arduino控制板的TX、RX引腳連接藍(lán)牙模塊的RX、TX引腳,該藍(lán)牙模塊可以將藍(lán)牙信號轉(zhuǎn)化成串口信號[6]。Android軟件控制終端用的是華碩Eee Pad Transformer Prime TF201,該平板的操作系統(tǒng)是Android4.1.1版本。
圖1 系統(tǒng)框圖
系統(tǒng)通信部分涉及到兩處:第一處是Android平板通過WIFI接入互聯(lián)網(wǎng)與科大訊飛語音云平臺通信,該通信遵守IEEE802.11協(xié)議標(biāo)準(zhǔn)[7]。第二處是Android平板和Arduino控制板之間的通信,利用藍(lán)牙模塊來實(shí)現(xiàn)二者之間的無線通信,這里主要是從平板發(fā)送小車的動作控制指令給Arduino主控板。
3.6程序設(shè)計(jì)
系統(tǒng)軟件主要包括兩部分,一部分是Android系統(tǒng)上控制程序的設(shè)計(jì),另外一部分是Arduino控制板中程序的設(shè)計(jì)。Android端的軟件設(shè)計(jì)主要包括設(shè)計(jì)藍(lán)牙配對連接程序、獲取語音信號程序、后臺發(fā)送控制指令程序、手動按鍵程序等。
走到院門口,梨花忍不住回了下頭,看到屋檐下的地上,有一灘她坐過的濕印子;她感覺自己還呆坐在那兒,跟高木走的是另一個(gè)自己。
藍(lán)牙配對連接時(shí),首先檢測當(dāng)前設(shè)備的藍(lán)牙是否開啟,若尚未打開,則開啟藍(lán)牙。接著依次執(zhí)行注冊廣播接收器、搜索藍(lán)牙設(shè)備方法,當(dāng)搜索到對應(yīng)MAC地址的藍(lán)牙設(shè)備時(shí)停止搜索,并開啟配對連接藍(lán)牙線程,當(dāng)連接成功時(shí)即注銷廣播,至此整個(gè)連接過程結(jié)束。
receiver=new BluetoothReceiver();
registerReceiver(receiver,intentFilter);
mBluetoothAdapter.startDiscovery();
藍(lán)牙連接成功之后即可進(jìn)行語音輸入或手動按鍵發(fā)出控制指令。語音輸入時(shí)通過麥克風(fēng)獲取語音信號,隨即調(diào)用遠(yuǎn)程API進(jìn)行識別,然后獲取返回的識別結(jié)果,根據(jù)識別結(jié)果解析成對應(yīng)指令,最后通過后臺線程將解析得到的指令發(fā)送給Arduino控制板。
當(dāng)使用手動輸入時(shí),直接根據(jù)相應(yīng)按鍵發(fā)送相應(yīng)的觸發(fā)標(biāo)志到Arduino控制板。該系統(tǒng)軟件語音識別部分流程圖如圖2所示。
圖2 語音識別流程圖
Arduino控制板端的程序主要是接收Android平臺發(fā)送過來的語音控制指令信號,進(jìn)而轉(zhuǎn)化為電機(jī)驅(qū)動信號驅(qū)動電機(jī)進(jìn)行動作。主體程序如下:
void loop(){
Bluetooth_Manage();
}
Loop()函數(shù)會循環(huán)執(zhí)行,Bluetooth_Manage()函數(shù)處理藍(lán)牙接收到的數(shù)據(jù)。這里采用串口函數(shù)read()逐個(gè)字節(jié)進(jìn)行讀?。?],并將其轉(zhuǎn)換為char類型,當(dāng)所有字節(jié)讀取完畢之后,按讀取順序拼接所有char類型字符組成字符串inString。這個(gè)inString即是小車運(yùn)動的依據(jù),對應(yīng)關(guān)系如表1所示。Arduino控制端程序流程圖如圖3所示。
圖3 Arduino控制端程序流程圖
表1 指令對應(yīng)關(guān)系
組裝系統(tǒng)并調(diào)試,測試該系統(tǒng),控制的小車如圖4所示,通過Android平板軟件實(shí)現(xiàn)小車的運(yùn)動控制。通過點(diǎn)擊按鍵或者語音輸入來對每組命令進(jìn)行循環(huán)測試,可以輸入的語音命令有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等指令詞。Android平臺軟件界面如圖5所示。
圖4 小車
圖5 Android平臺軟件界面
具體測試步驟如下:
連接好線路,打開電源,此時(shí)藍(lán)牙模塊上的指示燈是快閃狀態(tài),表示尚未連接設(shè)備;點(diǎn)擊控制界面的連接藍(lán)牙按鈕,此時(shí)軟件會搜索附近的藍(lán)牙設(shè)備;當(dāng)搜索到的設(shè)備中有匹配上預(yù)設(shè)的MAC地址時(shí),則連接該藍(lán)牙設(shè)備。當(dāng)藍(lán)牙模塊上的指示燈進(jìn)入慢閃狀態(tài)時(shí),表示軟件已成功連接上藍(lán)牙模塊,可以進(jìn)行通信。
藍(lán)牙配對連接成功之后,先測試手動操作是否成功,分別點(diǎn)擊前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止按鈕,觀察小車是否根據(jù)對應(yīng)指令做出相應(yīng)的運(yùn)動,循環(huán)多次,保證系統(tǒng)穩(wěn)定。
測試完手動操作之后,接下來測試語音控制的輸入,點(diǎn)擊語音輸入按鈕,然后對著話筒說出前進(jìn)、停止、后退等控制指令,觀察小車是否能夠根據(jù)語音來實(shí)現(xiàn)相應(yīng)的運(yùn)動。
最后試驗(yàn)分析,該控制程序能夠穩(wěn)定的實(shí)現(xiàn)小車運(yùn)動的控制,達(dá)到預(yù)期的目標(biāo)和效果。
設(shè)計(jì)基于Android系統(tǒng)平板和Arduino控制板的語音控制小車,通過控制人的語音或者按鍵來控制小車的運(yùn)動狀態(tài),采用Android智能平板進(jìn)行語音處理和科大訊飛語音云平臺對語音信號進(jìn)行識別,利用藍(lán)牙來傳輸控制指令,然后由Arduino主控板解析指令,最后由Arduino電機(jī)驅(qū)動板完成相應(yīng)的動作。
[1]AndroidDevTools[EB/OL].[2015-12-15].http://www.a(chǎn)ndroiddevtools.cn/.
[2]L.H.M.de Castro,B.L.Lago,F(xiàn)elipe Mondaini.Damped Harmonic Oscillator with Arduino[J].Journal of Applied Mathematics and Physics,2015(3):631-632.
[3]崔陽,張維華,白云峰.一種基于Arduino的智能家居控制系統(tǒng)[J].計(jì)算機(jī)技術(shù)與應(yīng)用,2014,40(4):123-124.Cui Yang,Zhang Wei Hua,Bai Yun Feng.Intellectual home control system based on Arduino[J].omputer Technology and Its Applications,2014,40(4):123-124.
[4]戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車避障系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,37(11):119-120.Ge Hui mei,Xu Xiao Hui,Gu Zhi Hua,et al.Design of arduino based obstacle avoidance system on intelligent car[J].Modern Electronics Technique,2012,37(11):119-120.
[5]訊飛開放平臺,新手指南[EB/OL].[2015-12-15].http://www.xfyun.cn/doccenter/newer.
[6]鄭昊.基于Arduino_Android的藍(lán)牙通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:湖北大學(xué),2012.Zheng Hao.The design and achieve of the bluetooth communication system based on the Arduino&Android[D].WuHan:HuBei University,2012.
[7]李曉陽.WIFI技術(shù)及其應(yīng)用與發(fā)展[J].信息技術(shù),2012(2):196-197.Li Xiao Yang.WIFI tecnology and its application and developmen[J].Information technology,2012(2):196-197.
[8]楊繼志,郭敬.Arduino從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2013.Yang Ji Zhi,Guo Jing.Begining Arduino[M].Beijing:Publishing House of Electronics Industry,2013.
Design of Voice Control Car Based on Android and Arduino
Zeng Xiangyi,Zhang Yunwei,Chen Ling,F(xiàn)an Yangyang,Wu Zhan
(Faculty of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650500,China)
As the development of Android intelligence platform,in order to make robot control more convenient and humanization,a proposal,using bluetooth wireless communication technology to control car movement on the basis of Android platform,is put forward.First of all,speech recognition of the car control software can be implemented by iFLYTEK Voice Cloud platform.Secondly,the car motor system is driven by the Arduino development board.Lastly,the communication between the Android platform and the Arduino development board is realized by bluetooth.The experiments show that the system can well achieve the voice control.
Android platform;Arduino development board;Bluetooth;Speech recognition;Wireless communication;Serial
10.3969/j.issn.1002-2279.2016.05.014
TP249
A
1002-2279(2016)05-0056-04
?國家自然科學(xué)基金(51365019)
曾祥義(1991-),男,江西省贛州市人,碩士研究生,主研方向:計(jì)算機(jī)技術(shù)。
張?jiān)苽ィ?972-),男,博士,教授,主研方向:精密測控技術(shù)。
2015-12-21