近年来,海洋资源开发日趋焦点,机器鱼作为一项现代化的新成果,具有广泛的现实意义,它可以更逼真的模拟鱼的游动原理,在水下的运动更符合流体力学原理,具有更好的加速和转向能力,利用它可以探测海洋资源,寻找和检测海域中受污染的地方,也可以用来勘探地形等等。随着科技的发展,人类对智能化产品的研究步伐在不断加快。但是,作为一项比较新的产品,机器鱼的智能化程度还远远不够,伴随着研究的加深,机器鱼的功能也会更趋完善。语音识别作为一门交叉学科,它的出现实现了长期以来人们渴望与机器交流的梦想。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。近年来,语音识别技术发展迅速,取得显著进步,并且已经开始被应用于通信、家庭服务、汽车电子、医疗、家电、消费电子产品等各个领域。截至目前,还没有出现针对语音识别系统和机器鱼结合的设计。本文实现了机器鱼和语音识别系统结合的硬件设计。
1 芯片介绍
1.1 LD3320语音芯片介绍
LD3320是一颗基于ASR技术非特定人语音识别的语音识别芯片。语音识别ASR技术,是基于关键词语列表识别的技术。只需要软件编辑好要识别的关键词语列表,并把这些关键词语以字符形式传送到芯片内部,就可以对人说出的关键词语进行识别,不需要作任何录音。比如,在51单片机编程中,简单地设置语音芯片的寄存器,诸如把“ni hao”这样的识别关键词动态地传入芯片中,芯片就可以识别这个关键词语了。并且在同一时刻,最多可以在50条关键词语中进行识别,可以根据场景需要,在终端随时编辑和更新这50条关键词语。另外,芯片上集成了高精度的D/A和A/D接口,并且接有Flash和RAM,只需把麦克风接在芯片的AD引脚上即可实现语音识别/声控/人机对话功能。
1.2 AVR芯片介绍
本例使用ATmega128单片机作为鱼体控制芯片,ATmega128具有以下特点:低功耗的8位微处理器,有133条指令,且大多数指令可以在一个时钟周期内完成;53个可编程I/O口线;128K字节的系统内可编程Flash;4K字节的EEPROM;优化的外部存储器空间多达64K字节;两个带有独立预分频器和比较器的8位定时器/计数器;两个带有预分频器、比较功能和捕捉功能的16位定时器/计数器;两路8位PWM;6路分辨率可变(2到16位)的PWM;两个可编程的串行USART;8路10位的ADC。
2 硬件设计实现
2.1 整体设计方案
语音识别系统识别到语音数据会产生一个中断信号给51单片机,然后单片机通过程序判断语音数据的正确性(可能是噪音),如果正确就通过P0口读取语音数据,并且将数据通过WAP200B无线通讯模块发送给鱼体主控芯片AVR单片机,此时AVR就可以根据命令产生相应占空比的PWM波。整体方案设计如图1所示。
2.2 语音控制部分
M-LD3320进行语音识别时,需要有较高纯净度的3.3V直流电源供电和合适的晶振信号(我们使用了12M正方形有源晶振)。使用51单片机编写程序主控LD3320芯片,来实现语音识别功能。同时必须保证51单片机和语音模块的最终供电电源统一。
麦克风采集到声音,不管是否识别到正常结果,芯片都会产生一个中断信号通过IRO管脚返回给51单片机,并且将数据通过ICR_P0~ICR_P7传送给51单片机进行处理,然后中断程序要根据寄存器的值分析结果,如果识别成功,就将识别得到的数据通过无线通讯模块发送出去。由于本文在语音模块传送数据给MCU时采用并行方式,所以MD直接接地,如果采用串行方式需要使MD管脚置高。它与51单片机(基于STC89C52)的连接示意图如图2所示。
模块PCB板已经将连接麦克风的引脚接到模块的MIC插座上,所以在连接电路的时候11~19和22~31引脚悬空不用。与51单片机连接时,ICR_P0~ICR_P7(2和33-39引脚)必须连接在单片机的数据总线上,同时需要在P0-P7,以及RDB,MD,INTB,WRB,CSB这些控制管脚上焊接1K /10K的上拉电阻(上拉到3.3V即可),这样可以辅助系统稳定运行。CLK引脚的连接有两种选择:1)直接将51单片机的晶振信号通过导线输入到LD3320的CLK管脚,但是导线不宜过长。2)将正方形有源晶振直接焊接在模块上预留的连接点,此时CLK管脚需要悬空。本文采用的第二种方法。
2.3 AVR控制部分
AVR是鱼体的主控MCU,主要用来控制机器鱼的的动力部分。机器鱼的动力来自舵机,设计关节数为三个,即有三个舵机。每个舵机由十五位的不同占空比的PWM波来控制转动不同的角度,三个舵机需要配合形成鱼体波来控制鱼体摆动。鱼体结构如图3。
鱼体波是利用杆系机器鱼对真实鱼游动形态的拟合,可以认为鱼体波曲线是鱼体波幅包络线和正弦曲线的合成,它开始于鱼体惯性力的中心,延伸至尾柄,其曲线方程可表示为
式中,yboby是鱼体的横向位移(背腹轴),x是鱼体的轴向位侈(头尾轴),c1是鱼体波波幅包络线的一次项系数,c2是鱼体波波幅包络线的二次项系数,k是波长倍数(k=2π/λ),λ是鱼体波的波长,w是鱼体波的频率(w=2πf=2π/T)。
由于计算机控制是一种离散的数字量,鱼体波曲线也需要离散化,所以把时间参数t从鱼体波运动函数yboby(x,t)中分离出来,方程即为
式中,i表示一个摆动周期内的样条曲线序列的第i个变量;N表示鱼体波分辨率,即在一个摆动周期内整个鱼体波被离散的程度,其上限不能大于驱动机构摆动的最高频率。
为了更好地表征鱼体波动的参数,提高鱼体方向控制特别是转弯过程中的灵活性,在方程2的特征参数基础上,增加波长倍数k相对于x的二次增益,修改后的方程如下
通过调整k1和k2的值,根据x的变化可以得到更多的鱼体波曲线。同时,在机器鱼的设计过程中,可通过微调身体波参数来增加运动的机动性和灵活性。
根据实际鱼体选择合适的鱼体波参数,通过仿真工具模拟出一个摆动周期内i从0~N的所有鱼体波,就可以计算舵机在各种情况下所需转动的角度,然后就可以设定各个舵机的PWM波占空比,就可以产生所需要的鱼体波。本文设定参数为c1=0.05;c2=0.09;k1=0.5;k2=0.1;N=10的一条鱼体波曲线如图4,直线段为实际中三节舵机配合形成的鱼体波,曲线为理想鱼体波曲线。
使用AVR的USART0与无线通信模块连接。当51单片机通过无线通讯模块将数据传送到AVR时,AVR单片机软件控制会产生一个串行中断,此时可以判断接收到的命令,根据命令改变PWM波的占空比,从而改变机器鱼的游动方向。
2.4 WAP200B无线通讯传输部分
无线模块WAP200B总共有10个管脚:VCC_CPU为MCU电源输入,VCC_RF为RF短路电源,VCC_PA为RF功放电源,它们三个管脚接DC3.3V;SET为配置或者正常工作模式选择信号输入管脚,低电平时WAP200B为配置模式,此时串口的数据作为配置指令而不会被传送出去,高电平(3.3V)时模块使能接发功能;RXD/TXD是串口数据从WAP200B输入/输出的管脚,3.3V/5V兼容TTL逻辑电平,RESET为复位信号输入管脚,正常工作接高电平;ANTENNA为天线接口。连接方式如图5所示。
无线通讯模块的TXD/RXD分别与51单片机的RXD/TD相连,就相当于51单片机的一个串口。在使用无线通汛模块之前,需要配置它的波特率、串口模式、频道以及发射功率(SET置低),两个互相通讯的模块必须保证具有相同的波特率和频道,同时51单片机串口的波特率也必须和通讯模块一致,发射功率可以根据发射的距离远近设定。
3 控制软件设计流程
51单片机是语音芯片的主控CPU,它的软件主要包括主程序,串口初始化(波特率和串口模式设定需要和无线通讯模块一致),语音系统的识别控制,命令数据的发送。51程序流程如图6所示。
AVR是鱼体主控芯片,它的软件主要包括主程序,串口初始化(波特率和串口模式需要同上一致,还设置接收中断打开状态),产生使机器鱼直游的PWM波,无论在什么状态,只要串口接收到命令就会产生中断,就需要根据命令改变PWM波的占空比,从而改变机器鱼的游动方向,需要注意的是在改变PWM波占空比以后,只需要保持此占空比一段时间(该时间段内有可能有新的命令),在鱼体改变方向以后就需要再次将占空比改为直游。AVR控制流程如图7所示。
4 实验结果
此语音控制系统在实验中已经得到实现。我们在51单片机中编辑了“zuo”、 “you”、 “qian”等命令:在AVR单片机的接受中断编辑了相应命令的PWM波占空比;所有串口通讯参数设置为:波特率9600bps;串口模式为8个数据位,1个停止位,无校验位;频道设置为28;发射功率设为最大(FF)。使用了奥林巴斯ME52的麦克风作为语音接收设备。
表1是鱼在直游(前)的时候,三个舵机在十个离散周期各自的转角。在转向的时候,前两个舵机偏转,第三个舵机保持不变;在进行“左”转命令时,舵机1和舵机2在直游基础上加上负40°;“右”转时加上正40°。由于舵机转角与PWM波占空比是线性关系,在此基础上,我们匹配了PWM波占空比与舵机转角的数学关系式
jiaodu是定义的直游时各舵机的转角数组,j是舵机号,i是周期,pianjiao是左转右转等附加给直游时的角度(正负40°);xiuzheng是实际中需要调试的补偿角度。
实际操作中,当发出“左”、 “右”、 “前”等命令时,机器鱼会立即做出相应的动作。
5 结束语
文中主要介绍了语音识别技术在机器鱼上的应用以及鱼体波的产生原理,实现了语音控制机器鱼的游动方向,相信随着机器鱼的研究深入,可以在语音系统基础上实现更多功能,使机器鱼更加趋于智能化,最终可以为人类探索海洋提供更多帮助和便利。