语音识别机器人实验报告文档格式.docx
《语音识别机器人实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《语音识别机器人实验报告文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
(硬件)组装小车
分析小车运动方式
(软件)编写程序
装载语音
声音存储
语音训练
语音识别
终端服务
调试与修正
语音模块
运动模块
三.主要模块
1、凌阳SPCE061是继μ’nSP?
系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。
与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。
较高的处理速度使μ’nSP?
能够非常容易地、快速地处理复杂的数字信号。
因此,与SPCE500A相比,以μ’nSP?
为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。
其性能如下:
A、16位μ’nSP?
微处理器;
B、工作电压(CPU)VDD为2.4~3.6V
(I/O)VDDH为2.4~5.5V
C、CPU时钟:
0.32MHz~49.152MHz
;
D、内置2K字SRAM;
E、内置32KFLASH;
F、可编程音频处理;
G、晶体振荡器;
H、系统处于备用状态下(时钟处于停止状态),耗电仅为2μA@3.6V;
I、2个16位可编程定时器/计数器(可自动预置初始计数值);
J、2个10位DAC(数-模转换)输出通道;
K、32位通用可编程输入/输出端口;
L、14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;
M、具备触键唤醒的功能;
N、使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
O、锁相环PLL振荡器提供系统时钟信号;
P、32768Hz实时时钟;
Q、7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;
R、声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
S、具备串行设备接口;
T、具有低电压复位(LVR)功能和低电压监测(LVD)功能;
U、内置在线仿真电路ICE(In-CircuitEmulator)接口;
V、具有保密能力;
W、具有WatchDog功能。
SPCE061A的结构如下图所示:
SPCE061A的实物图如下:
2、L298N是ST公司生产的一种高电压、大电流电机驱动芯片。
该芯片采用15脚封装。
主要特点是:
工作电压高,最高工作电压可达46V;
输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;
额定功率25W。
内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;
采用标准逻辑电平信号控制;
具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;
可以外接检测电阻,将变化量反馈给控制电路。
使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
A、尺寸:
80mmX45mm;
B、主要芯片:
L298N、光电耦合器;
C、工作电压:
控制信号直流5V;
电机电压直流3V~46V(建议使用36伏以下);
D、最大工作电流:
2.5A;
E、额定功率:
25W;
F、具有信号指示;
G、转速可调;
H、抗干扰能力强;
I、具有过电压和过电流保护;
J、可单独控制两台直流电机;
K、可单独控制一台步进电机;
L、PWM脉宽平滑调速;
M、可实现正反转;
N、采用光电隔离.
L298N的结构如下图所示:
L298N的实物图如下:
四、硬件设计
语音控制小车为三轮结构。
其中前轮为万向轮,被动调节小车前进方向。
在自然状态下,前轮保持中间位置并正前方运动。
后面两个车轮由各自的电机驱动,为整个小车提供动力。
整个小车分为三大部分:
车体部分、凌阳SPCE061模块、驱动模块。
车体部分:
小车车体主要为两个电机驱动装置,分左轮驱动和右轮驱动。
在车体的中间有一个可以安装3节AA电池的电池盒,整个小车的电源就是由它来提供的。
凌阳SPCE061模块:
凌阳SPCE061模块是小车的核心部分,它负责整个小车控制信号的产生,以及语音的播放和识别功能实现的。
在不使用小车时可以将其从小车上拆下来,它仍然是完整的,可以用来做其它的实验或开发。
驱动模块:
核心驱动电路L289N,通过其驱动左、右两个电机的转动与停止,以实现小车的前进,后退,左转,右转等功能。
硬件框图如下:
五、软件设计
1、各部分流程图
语音识别总流程图:
训练函数流程图:
语音识别函数流程图:
2、部分程序代码:
语音命令训练函数:
intTrainWord(unsignedintWordID,unsignedintSndID)
{
intResult;
PlaySnd(SndID,3);
//引导训练,播放指令对应动作
while
(1)
Result=BSR_Train(WordID,BSR_TRAIN_TWICE);
//训练两次,获得训练结果
if(Result==0)break;
switch(Result)
case-1:
PlaySnd(S_NOVOICE,3);
//没有检测出声音
return-1;
case-2:
PlaySnd(S_AGAIN,3);
//需要训练第二次
break;
case-3:
PlaySnd(S_NOISY,3);
//环境太吵
return-3;
case-4:
return-4;
//数据库满
case-5:
PlaySnd(S_CMDDIFF,3);
//检测出声音不同
return-5;
case-6:
return-6;
//序号错误
default:
}
return0;
前进命令函数:
voidGoAhead()
//前进
{
PlaySnd(S_ACT1,3);
//提示
*P_IOB_Data=0x0100;
*P_INT_Mask|=0x0004;
//以下为中断定时操作
__asm("
intfiq,irq"
);
uiTimecont=0;
后退命令函数:
voidBackUp()
//倒退
{
PlaySnd(S_DCZY,3);
*P_IOB_Data=0x0200;
左转命令函数:
voidTurnLeft()
//左转
PlaySnd(S_GJG,3);
*P_IOB_Data=0x0900;
//右转
Delay();
//延时
*P_IOB_Data=0x0500;
右转命令函数:
voidTurnRight()
//语音提示
停车命令函数:
voidStop()
//停车
*P_IOB_Data=0x0000;
PlaySnd(S_RDY,3);
语音命令辨识函数:
voidBSR(void)
//辨识结果寄存
Result=BSR_GetResult();
//获得识别结果
if(Result>
0)
//有语音触发?
//临时停车
caseNAME_ID:
c=1;
BSR_StopRecognizer();
*P_SystemClock=0x0003;
*P_INT_Mask=0x0200;
caseCOMMAND_GO_ID:
GoAhead();
caseCOMMAND_BACK_ID:
BackUp();
caseCOMMAND_LEFT_ID:
TurnLeft();
caseCOMMAND_RIGHT_ID:
TurnRight();
六、实验总结
本次实验以凌阳SPCE061A单片机为主体,搭配L298N电机驱动模块,完成了语音控制小车的语音控制功能。
诸如左、右转,前进、后退、停止等。
实现了本次实验的实验目的。
在本次实验中,我学习到了凌阳单片机的一些基础知识。
在硬件方面,较高的执行速度、内置的硬件乘法器、ADC和DAC功能、内置的AGC自动增益环节,这些为语音处理提供了强大基础。
在软件方面,标准的C语言编程,丰富的语音资源函数为编程提供了很大的方便,降低了开发难度,提升了开发效率。
但是本实验也有很多不足,比如凌阳语音识别部分安装在小车上,这样虽然使设计更为简洁、可靠,但同时也可能因语音识别距离过远而使得小车无法正确接收命令,导致控制失败,因此可考虑将语音识别模块与小车控制模块分开,两者之间无线控制。
另外本实验中小车仅能接收前进、后退、左转、右转、停车五种指令,命令过于单调,可考虑增加加速、减速等指令,使设计更为全面,实用。
整个实验中,我们的团队互相帮助,互相学习,共同合作完成了本设计。
在此,我感谢我的团队,也感谢指导老师对我们的帮助,谢谢你们!