曾祥義,張云偉,陳 嶺,樊陽陽,武 占
(昆明理工大學信息工程與自動化學院,昆明650500)
基于Android和Arduino的語音控制小車設計?
曾祥義,張云偉,陳嶺,樊陽陽,武占
(昆明理工大學信息工程與自動化學院,昆明650500)
隨著Android智能平臺的發展,為了讓機器人的控制更加方便和人性化,提出以Android平臺為研究重點,應用藍牙通信技術實現Android平臺無線控制小車運動的方案。首先,采用科大訊飛語音云平臺來實現小車控制軟件語音識別部分,其次,小車的運動系統由Arduino控制板來驅動,最后,系統通過藍牙實現Android平臺與Arduino開發板之間的通信。實驗表明,系統能夠較好地達到語音控制的目的。
Android平臺;Arduino開發板;藍牙;語音識別;無線通信;串口
通過語音與機器人進行交流,讓機器人讀懂人的意圖,這是人們長期以來夢寐以求的事情。隨著語音技術的不斷進步,人類的這個理想逐漸得以實現。以Android平臺和Arduino開發板為工具,結合開放的語音平臺,搭建好完整的語音識別控制系統。用戶通過Android平臺(手機/平板)的麥克風輸入語音指令,語音信號經處理、識別,得出結果,然后通過藍牙傳輸給小車并作出動作。
整個語音控制系統由Android平板、Arduino主控板、藍牙模塊、直流電機驅動模塊四部分組成。其中,Android平板實現語音信號的采集并將采集到的信號發送至科大訊飛的語音云平臺進行識別,然后獲取返回的識別結果并將結果解析為預設的指令發送給Arduino主控板。Arduino控制板根據指令通過驅動模塊驅動電機進行動作。小車的控制界面是運行在Android操作系統上的應用程序,該程序基于Android4.1.1系統編寫,所用的開發工具為ADT Bundle,這是已經集成好的IDE,包含了Eclipse、ADT插件和SDK Tools,只需要安裝好jdk即可進行開發[1]。
3.1Arduino主控板
Arduino是一個開源的單片機電子設計平臺,硬件部分由Atmel AVR單片機、I/O接口及相關電路組成,軟件部分則包括標準的程序編譯器和程序下載器,具有使用類似Java和C語言的Processing/Wiring開發環境。相對于傳統單片機,Arduino的特點主要包括免費、開源的IDE,開源的硬件(包括原理圖和PCB圖),所有資源都可以免費下載,并且可依靠需求自己修改,方便與傳感器及各式各樣的電子組件連接[2]。本系統的主控制器采用Arduino Mega2560。Arduino Mega2560是采用USB接口的核心電路板,核心是Atmega2560單片機,同時具有54路數字輸入/輸出口(其中16路可作為PWM輸出),16路模擬輸入,4路UART接口,一個16MHz晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復位按鈕。控制板通過標準USB線纜與電腦連接,便于在線程序調試[3]。
3.2電機驅動板
小車直流電機采用Arduino直流電機驅動擴展板模塊進行驅動。這個模塊采用LGS公司優秀的大功率電機專用驅動芯片L298P,可直接驅動2個直流電機,驅動電流達2A,電機輸出端采用8只高速肖特基二極管作為保護[4]。L298P內部包含4通道邏輯驅動電路,是一種二相和四相電機的專用驅動器,內含二個H橋的高電壓大電流雙全橋式驅動器,接收標準TTL邏輯電平信號,可驅動46V、2A以下的電機,正好可以滿足小車左右直流電機的驅動要求。并且L289P具有過溫保護功能和較高的噪聲抑制比,故十分適用于智能小車中。由于芯片L298P不具有對電機轉速的控制,因此,通過Arduino程序控制調節驅動電機的PWM信號,改變電機輸出功率,從而控制左右電機的轉速。
3.3HC-05藍牙模塊
HC-05嵌入式藍牙串口通訊模塊(以下簡稱藍牙模塊)具有兩種工作模式:命令響應工作模式和自動連接工作模式,在自動連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(Loopback)三種工作角色。當模塊處于自動連接工作模式時,將自動根據事先設定的方式連接數據傳輸;當模塊處于命令響應工作模式時能執行所有AT命令,用戶可向模塊發送各種AT指令,為模塊設定控制參數或發布控制命令。通過控制模塊外部引腳(PIO11)輸入電平,可以實現模塊工作狀態的動態轉換。
3.4語音識別引擎選擇
智能語音行業具有很高的行業技術壁壘,在全球范圍內,只有少數的企業具有競爭實力。在國外,有Nuance、蘋果、Google等;在國內,有科大訊飛、凌聲芯、思必馳、捷通華聲等。相對于其他語音引擎,科大訊飛的中文連續語音識別率更高、響應速度更快、也更易于使用。只需要在其語音云開放平臺注冊成為開發者,為所開發的應用申請appip,并下載相應的SDK導入到應用開發項目中即可使用[5]。
3.5硬件總體設計
系統硬件部分由Arduino Mega2560、Arduino直流電機驅動擴展板L298P模塊、HC05藍牙模塊組成。通過Arduino控制板配合Arduino直流電機驅動擴展板L298P模塊可以直接驅動兩路直流電動機。由于系統小車底盤采用四路電機驅動,而Arduino直流電機驅動擴展板模塊只有兩路輸出,所以將小車底盤左右兩側的電機分別并聯接入Arduino直流電機擴展板的A、B輸出口。另外,為了實現藍牙通信,利用Arduino控制板的TX、RX引腳連接藍牙模塊的RX、TX引腳,該藍牙模塊可以將藍牙信號轉化成串口信號[6]。Android軟件控制終端用的是華碩Eee Pad Transformer Prime TF201,該平板的操作系統是Android4.1.1版本。

圖1 系統框圖
系統通信部分涉及到兩處:第一處是Android平板通過WIFI接入互聯網與科大訊飛語音云平臺通信,該通信遵守IEEE802.11協議標準[7]。第二處是Android平板和Arduino控制板之間的通信,利用藍牙模塊來實現二者之間的無線通信,這里主要是從平板發送小車的動作控制指令給Arduino主控板。
3.6程序設計
系統軟件主要包括兩部分,一部分是Android系統上控制程序的設計,另外一部分是Arduino控制板中程序的設計。Android端的軟件設計主要包括設計藍牙配對連接程序、獲取語音信號程序、后臺發送控制指令程序、手動按鍵程序等。
走到院門口,梨花忍不住回了下頭,看到屋檐下的地上,有一灘她坐過的濕印子;她感覺自己還呆坐在那兒,跟高木走的是另一個自己。
藍牙配對連接時,首先檢測當前設備的藍牙是否開啟,若尚未打開,則開啟藍牙。接著依次執行注冊廣播接收器、搜索藍牙設備方法,當搜索到對應MAC地址的藍牙設備時停止搜索,并開啟配對連接藍牙線程,當連接成功時即注銷廣播,至此整個連接過程結束。
receiver=new BluetoothReceiver();
registerReceiver(receiver,intentFilter);
mBluetoothAdapter.startDiscovery();
藍牙連接成功之后即可進行語音輸入或手動按鍵發出控制指令。語音輸入時通過麥克風獲取語音信號,隨即調用遠程API進行識別,然后獲取返回的識別結果,根據識別結果解析成對應指令,最后通過后臺線程將解析得到的指令發送給Arduino控制板。
當使用手動輸入時,直接根據相應按鍵發送相應的觸發標志到Arduino控制板。該系統軟件語音識別部分流程圖如圖2所示。

圖2 語音識別流程圖
Arduino控制板端的程序主要是接收Android平臺發送過來的語音控制指令信號,進而轉化為電機驅動信號驅動電機進行動作。主體程序如下:
void loop(){
Bluetooth_Manage();
}
Loop()函數會循環執行,Bluetooth_Manage()函數處理藍牙接收到的數據。這里采用串口函數read()逐個字節進行讀取[8],并將其轉換為char類型,當所有字節讀取完畢之后,按讀取順序拼接所有char類型字符組成字符串inString。這個inString即是小車運動的依據,對應關系如表1所示。Arduino控制端程序流程圖如圖3所示。

圖3 Arduino控制端程序流程圖

表1 指令對應關系
組裝系統并調試,測試該系統,控制的小車如圖4所示,通過Android平板軟件實現小車的運動控制。通過點擊按鍵或者語音輸入來對每組命令進行循環測試,可以輸入的語音命令有前進、后退、左轉、右轉、停止等指令詞。Android平臺軟件界面如圖5所示。

圖4 小車

圖5 Android平臺軟件界面
具體測試步驟如下:
連接好線路,打開電源,此時藍牙模塊上的指示燈是快閃狀態,表示尚未連接設備;點擊控制界面的連接藍牙按鈕,此時軟件會搜索附近的藍牙設備;當搜索到的設備中有匹配上預設的MAC地址時,則連接該藍牙設備。當藍牙模塊上的指示燈進入慢閃狀態時,表示軟件已成功連接上藍牙模塊,可以進行通信。
藍牙配對連接成功之后,先測試手動操作是否成功,分別點擊前進、后退、左轉、右轉、停止按鈕,觀察小車是否根據對應指令做出相應的運動,循環多次,保證系統穩定。
測試完手動操作之后,接下來測試語音控制的輸入,點擊語音輸入按鈕,然后對著話筒說出前進、停止、后退等控制指令,觀察小車是否能夠根據語音來實現相應的運動。
最后試驗分析,該控制程序能夠穩定的實現小車運動的控制,達到預期的目標和效果。
設計基于Android系統平板和Arduino控制板的語音控制小車,通過控制人的語音或者按鍵來控制小車的運動狀態,采用Android智能平板進行語音處理和科大訊飛語音云平臺對語音信號進行識別,利用藍牙來傳輸控制指令,然后由Arduino主控板解析指令,最后由Arduino電機驅動板完成相應的動作。
[1]AndroidDevTools[EB/OL].[2015-12-15].http://www.androiddevtools.cn/.
[2]L.H.M.de Castro,B.L.Lago,Felipe Mondaini.Damped Harmonic Oscillator with Arduino[J].Journal of Applied Mathematics and Physics,2015(3):631-632.
[3]崔陽,張維華,白云峰.一種基于Arduino的智能家居控制系統[J].計算機技術與應用,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的智能小車避障系統的設計[J].現代電子技術,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的藍牙通信系統設計與實現[D].武漢:湖北大學,2012.Zheng Hao.The design and achieve of the bluetooth communication system based on the Arduino&Android[D].WuHan:HuBei University,2012.
[7]李曉陽.WIFI技術及其應用與發展[J].信息技術,2012(2):196-197.Li Xiao Yang.WIFI tecnology and its application and developmen[J].Information technology,2012(2):196-197.
[8]楊繼志,郭敬.Arduino從基礎到實踐[M].北京:電子工業出版社,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,Fan 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
?國家自然科學基金(51365019)
曾祥義(1991-),男,江西省贛州市人,碩士研究生,主研方向:計算機技術。
張云偉(1972-),男,博士,教授,主研方向:精密測控技術。
2015-12-21