基于Android和Arduino的语音控制小车设计❋
2016-11-28曾祥义张云伟樊阳阳
曾祥义,张云伟,陈 岭,樊阳阳,武 占
(昆明理工大学信息工程与自动化学院,昆明650500)
基于Android和Arduino的语音控制小车设计❋
曾祥义,张云伟,陈岭,樊阳阳,武占
(昆明理工大学信息工程与自动化学院,昆明650500)
随着Android智能平台的发展,为了让机器人的控制更加方便和人性化,提出以Android平台为研究重点,应用蓝牙通信技术实现Android平台无线控制小车运动的方案。首先,采用科大讯飞语音云平台来实现小车控制软件语音识别部分,其次,小车的运动系统由Arduino控制板来驱动,最后,系统通过蓝牙实现Android平台与Arduino开发板之间的通信。实验表明,系统能够较好地达到语音控制的目的。
Android平台;Arduino开发板;蓝牙;语音识别;无线通信;串口
1 引 言
通过语音与机器人进行交流,让机器人读懂人的意图,这是人们长期以来梦寐以求的事情。随着语音技术的不断进步,人类的这个理想逐渐得以实现。以Android平台和Arduino开发板为工具,结合开放的语音平台,搭建好完整的语音识别控制系统。用户通过Android平台(手机/平板)的麦克风输入语音指令,语音信号经处理、识别,得出结果,然后通过蓝牙传输给小车并作出动作。
2 系统总体方案设计
整个语音控制系统由Android平板、Arduino主控板、蓝牙模块、直流电机驱动模块四部分组成。其中,Android平板实现语音信号的采集并将采集到的信号发送至科大讯飞的语音云平台进行识别,然后获取返回的识别结果并将结果解析为预设的指令发送给Arduino主控板。Arduino控制板根据指令通过驱动模块驱动电机进行动作。小车的控制界面是运行在Android操作系统上的应用程序,该程序基于Android4.1.1系统编写,所用的开发工具为ADT Bundle,这是已经集成好的IDE,包含了Eclipse、ADT插件和SDK Tools,只需要安装好jdk即可进行开发[1]。
3 分析及设计
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 测试与试验分析
组装系统并调试,测试该系统,控制的小车如图4所示,通过Android平板软件实现小车的运动控制。通过点击按键或者语音输入来对每组命令进行循环测试,可以输入的语音命令有前进、后退、左转、右转、停止等指令词。Android平台软件界面如图5所示。
图4 小车
图5 Android平台软件界面
具体测试步骤如下:
连接好线路,打开电源,此时蓝牙模块上的指示灯是快闪状态,表示尚未连接设备;点击控制界面的连接蓝牙按钮,此时软件会搜索附近的蓝牙设备;当搜索到的设备中有匹配上预设的MAC地址时,则连接该蓝牙设备。当蓝牙模块上的指示灯进入慢闪状态时,表示软件已成功连接上蓝牙模块,可以进行通信。
蓝牙配对连接成功之后,先测试手动操作是否成功,分别点击前进、后退、左转、右转、停止按钮,观察小车是否根据对应指令做出相应的运动,循环多次,保证系统稳定。
测试完手动操作之后,接下来测试语音控制的输入,点击语音输入按钮,然后对着话筒说出前进、停止、后退等控制指令,观察小车是否能够根据语音来实现相应的运动。
最后试验分析,该控制程序能够稳定的实现小车运动的控制,达到预期的目标和效果。
5 结束语
设计基于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