特定人语音控制机器人设计Word下载.docx
《特定人语音控制机器人设计Word下载.docx》由会员分享,可在线阅读,更多相关《特定人语音控制机器人设计Word下载.docx(51页珍藏版)》请在冰豆网上搜索。
其特点是,片内集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM,只有并行接口,无串行接口,有1个8位的定时器/计数器,中断源有2个。
片外寻址范围为4KB,芯片引脚为40个。
(3)第三阶段(1979—1982年):
8位单片机成熟的阶段。
其存储容量和寻址范围增大,而且中断源、并行I/O口和定时器/计数器个数都有了不同程度的增加,并且集成有全双工串行通信接口。
在指令系统方面增设了乘除法、位操作和比较指令。
其特点是,片内包括了8位的CPU,4KB或8KB的ROM,128B或256B的RAM,具有串/并行接口,2个或3个16位的定时器/计数器,有5~7个中断源。
片外寻址范围可达64KB,芯片引脚为40个。
(4)第四阶段(1983年至今):
16位单片机和8位高性能单片机并行发展的时代。
16位机的工艺先进,集成度高,内部功能强,运算速度快,而且允许用户采用面向工业控制的专用语言,其特点是,片内包括了16位的CPU,8KB的ROM,232B的RAM,具有串/并行接口,4个16位的定时器/计数器,有8个中断源,具有看门狗(Watchdog),总线控制部件,增加了D/A和A/D转换电路,片外寻址范围可达64KB,本次设计采用凌阳大学开发的16位单片机SPCE061A。
近年来出现的32位单片机,是单片机的顶级产品,具有较高的运算速度。
1.2、61板
1.2.1、"
61板"
的组成和作用
"
是以16位单片机SPCE061A为核心的精简开发-仿真-实验板,大小相当于一页扑克牌,是"
凌阳大学计划"
专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。
61板的主要特点是:
简单、易学、实用。
“61”板实物图如图1.1:
图1.1实物图
图1.261板的结构图
POWER
5v&
3V供电电路
PLL
锁向环外部电路
Power-电源指示灯
Sleep-睡眠指示灯
RESET
复位电路
K4
复位按键
PROBE
在线调试器串行5pin接口
S5
EZ-PROBE和PROBE切换的拨断开关
J12、J3
耳机插孔和两pin喇叭插针
DAC
一路音频输出电路,
采用SPY0030集成音频放大器
MIC
麦克风输入电路
OSC
32768晶振电路
VREF
A/D转换外部参考电压输入接口
R/C
芯片其他外围电阻、电容电路
K1~K3
扩展的按键:
接IOA0~IOA2
SPCE061A
61板核心:
16位微处理器
PORTA/B
32个I/O口
图1.3功能指示
(一)输入/输出(I/O)接口
将SPCE061A的32个I/O口全部引出:
IOA0~IOA15,IOB0~IOB15,对应的引脚为:
A口,41~48、53、54~60;
B口,5~1、81~76、68~64。
而且该I/O口是可编程的,即可以设置为输入或输出:
设置为输入时,分为悬浮输入或非悬浮输入,非悬浮输入又可以设置为上拉输入或是下拉输入;
在5V情况下,上拉电阻为150K,下拉电阻为110K;
设置为输出时,可以选择同相输出或者反相输出。
(二)音频输入/输出接口
正如我们在前面介绍的"
具有强大的语音处理功能,如图2所示,X1是语音的MIC输入端,带自动增益(AGC)控制,J12和J3都是语音输出接口,一个是耳机插孔另一个是两pin的插针外接喇叭,由DAC输出引脚21或22经语音集成放大器SPYOO30放大,然后输出,SPY0030是凌阳的芯片,相当于LM386,但是比386音质好,它可以工作在2.4~6.0V范围内,最大输出功率可达700mW(386必须工作在4V以上,而且功率只有100mW)。
(三)在线调试器(PROBE)和EZ-PROBE接口
图2中J4为PROBE的接口,该接口有5PIN,其中两个分别是地(VSS)和3.3v电源(VCC),我们就是通过PROBE一端接PC机25针并口,一端连接它来调试、仿真和下载程序的。
这样,就不需要再用仿真器和编程器了,只要按图2所示将其连接好,就可以通过它在PC机上调试程序,并且在线仿真,最后将程序下载到芯片中,即完成了程序的烧写。
图2中的J11是EZ-PROBE的接口,我们提供一根转接线用作EZ-PROBE的下载,一端连接PC机的25pin并口,另外一端接61板的5pinEZ-PROBE接口,参见图2。
(四)电源接口
图2中J10是电源接口,"
的内核SPCE061A电压要求为3.3V,而I/O端口的电压可以选择3.3V也可以选择5V。
所以,在板子上具有两种工作电压:
5V和3.3V。
对应的引脚中15、36和7必须为3.3V,对于I/O端口的电压51、52、75可以为3.3V也可以是5V,这两种电平的选择通过跳线J5来选择。
的供电电源系统采用用户多种选择方式:
1、DC5V电池供电
我们可以用3节电池来供电,5V直流电压直接通过SPY0029(相当于一般3.3V稳压器)稳压到3.3V,为整个"
提供了4.5V和3.3V两种电平的电压。
2、DC5V稳压源供电
我们可以直接外接5V的直流稳压源供电,5V电压再通过SPY0029稳压到3.3V。
3、DC3V供电
我们可以提供直流3.3V电压为实验板进行供电,此时整个板子只有3.3V电压,I/O端口电压此时只有一种选择。
※需要注意的是由于SPY0029最大输出电流为50mA,所以如果需要外接一些模组时要先考虑一下是否合适。
(五)外部复位
复位是对"
内部的硬件初始化,"
本身具有上电复位功能,即只要一通电就自动复位,另外,还具有外部复位电路,即在引脚6上外加一个低电平就可令其复位。
如图2中的REST按键。
1.2.2"
核心部件SPCE061A特性简介
SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,使用它可以非常方便灵活的实现语音的录放系统,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路。
这为实现语音录入提供了方便的硬件条件。
两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。
另外凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。
在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件:
特性:
◆16位μ'
nSP微处理器;
◆工作电压:
内核工作电压VDD为3.0~3.6V(CPU),IO口工作电压VDDH为VDD~5.5V(I/O);
◆CPU时钟:
0.32MHz~49.152MHz;
◆内置2K字SRAM;
◆内置32K闪存ROM;
◆可编程音频处理;
◆晶体振荡器;
◆系统处于备用状态下(时钟处于停止状态),耗电小于2μA@3.6V;
◆2个16位可编程定时器/计数器(可自动预置初始计数值)
◆2个10位DAC(数-模转换)输出通道;
◆32位通用可编程输入/输出端口;
◆14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;
◆具备触键唤醒的功能;
◆使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
◆锁相环PLL振荡器提供系统时钟信号;
◆32768Hz实时时钟;
◆7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;
◆声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
◆具备串行设备接口;
◆低电压复位(LVR)功和低电压监测(LVD)功能;
◆内置在线仿真板(ICE,In-CircuitEmulator)接口。
1.2.3"
检测的具体步骤
第一步、连接电源,可以连接3节电池,也可以直接接5V的稳压源
现象:
当电源接通时,红色的发光二极管会点亮。
同时会有语音提示:
欢迎进入自检模式"
,此时因为还没有连线,所以会听到:
I/O测试失败"
的警告,所以就要进行第二步的操作;
第二步、用连线分别将I/OA口的低8位和IOB口的低8位相连,IOA口的高8位和IOB口的高8位相连,然后按下REST复位键
当按下复位键后,程序从第一调开始运行开始执行,语音提示"
,当听到语音:
I/O测试成功"
后,进行第三步操作;
第三步、按K1键进行睡眠功能测试
如果测试成功,会看到绿色的发光二极管亮灭一下,并有语音提示"
睡眠测试成功"
,否则提示"
睡眠测试失败"
,然后进行第四步操作;
第四步、按下K2键进行A/D转换的测试
语音提示:
A/D测试成功"
A//D测试失败"
,进入最后一步操作;
第五步、拔掉第一步测试时的连接线,并按下K3键测试MIC输入及D/A转换输出是否正常;
可以在MIC上轻轻的拍几下,同时听是否有声音输出,如果有,则说明MIC输入和D/A转换输出部分正常。
图1.6检测流程图
1.3如何从PC机上下载程序
(一)、接电源
61板配套有电池盒,将电池盒的插头插到61板的5V座上,这时电源指示灯(红色发光二极管)就被点亮了。
若未被点亮时,应先排除故障再使用。
(二)、接喇叭或者耳机
61板配套有喇叭,将喇叭插到电路板上标有J3和SPK的两PIN方针座上,不分反正,插上就可以使用。
这时按复位键,会有语音播放。
(三)、接下载线
下载线大口(25pin)端接PC机的并口上,另一端接在61板的Ez_probe接口上,在probe与ez_probe之间有一个逻辑开关,扳到ez_probe方向。
表示在线调试器选择ez_probe。
(四)、输入程序
凌阳十六位单片机指令系统共有41条指令。
例如:
指令代码为:
R1=0xffff;
[P_IOA_Data]=R1,代码的功能就是将16个A口全部输出高电平。
集成开发环境也支持标准C语言。
例如完成1到100的累加程序。
步骤如下:
第一步:
双击系统桌面IDE182图标,进入系统开发环境。
第二步:
新建项目文件:
用鼠标左键单击File下拉菜单New弹出New对话框。
在File文本框中输入项目名称Example1,在location下选择项目文件存储路径:
E:
\ZxyProgram\Example1
新建项目后的Workspace窗口结果:
生成了新项目Example
第三步:
新建C文件
点击菜单File下拉菜单New弹出New对话框,在File文本框中输入C文件名称main,点击OK后,main.c的编辑窗口就显示出来。
第四步:
将代码写入main.c的窗口处
例:
//=================================================================
//函数:
main()
//描述:
主函数
//=================================================================
intF_CleaWatchdog();
intmain()
{
inti,G_Sum=0;
for(i=0;
i<
=100;
i++)
G_Sum=G_Sum+i;
//G_Sum保存结果
while
(1)//程序结束循环
{
F_ClearWatchdog();
//清看门狗
}
//****************************************************************//
(五)、编译并下载
代码编写结束后,将代码进行编译,方法是在IDE的菜单命令中,点击build/rebuildall.
在输出窗口中,会有编译信息输出,如果为0个错误,表示编译通过,这时点击工具栏中的标识为
,然后点击工具栏中的
,就可以将代码下载到芯片的程序存储空间中。
点击工具栏中的标识
,程序就自动开始全速运行。
第二章机器人
在现代社会机器人这个词语已经不再新鲜,而且形形色色的机器人出现在我们的日常生活中。
本文将对凌阳科技大学计划教育推广中心推出的应用SPCE061A控制的智能机器人的软硬件制作进行介绍。
该机器人采用特定人语音识别对机器人进行控制,可以完成向前走、倒退、左转、右转、跳两首舞曲、向左瞄准、向右瞄准、发射、连续发射等功能
2.1机器人简介
2.1.1机器人驱动电路图与实物图
机器人驱动电路图如下图所示:
图2.1实物图
图2.2机器人驱动电路图
机器人驱动电路采用功率较大的三极管搭成H桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。
这些电机包括2个用于走路的电机与一个头部转向的电机。
另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。
2.1.2主要功能
◆通过语音命令对其进行控制;
◆可以跳两首舞曲;
◆走步功能、转向功能、转头功能;
◆发射飞盘功能;
2.2系统总体方案介绍
2.2.1系统结构框图
用61板来控制机器人,使用了IOA7-IOA15资源,另外使用了扬声器。
如图3.1所示:
图2.3系统的结构框图
根据图3.1将10pin线与机器人实现各种功能的电机连接起来
系统主要由61板与机器人驱动电路构成。
61板作为整个系统的主控板,驱动电路驱动电机。
在主控板61板的控制下完成各个动作。
另外增加了特定人语音识别的功能,通过命令来控制机器人,使机器人智能化。
2.2.2系统软件设计
在主函数中调用相关函数完成特定人语音的训练,然后再训练成功后进行语音识别,根据识别的命令执行相关的操作。
程序流程图如下图所示:
图2.4程序流程图与中断流程图
判断是否为第一次下载根据FLASH中的标志位来进行判断。
将训练好的语音模型导出存储到FLASH中使用库函数BSR_ExportSDWord(uiCommandID);
进行操作,然后再调用读写FLASH中的函数进行。
在进行语音识别时,首先读取FLASH将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID);
函数将语音资源载入内存。
在识别出命令后,执行相关动作,相关动作操作就是操作电机的正向或反向旋转同时配合延时与播放声音组合起来形成不同的动作。
2.2.3应用方案的验证步骤:
步骤一:
启动u'
nSPIDE。
打开机器人应用实例程序,编译、链接确认没有错误。
步骤二:
下载程序代码到机器人的61板上。
步骤三:
打开机器人的电源,进行语音训练,训练过程按照下面进行:
按顺序训练以下15条指令:
名称"
,"
开始"
准备"
跳舞"
再来一曲"
向前走"
倒退"
向右转"
向左转"
向左瞄准"
向右瞄准"
发射"
连续发射"
。
每条指令要训练两遍。
当一条指令被正确识别时会提示进入下一条;
如没有被识别会要求重复该指令,直到正确识别为止。
步骤四:
如果训练成功则进入语音识别状态,如果训练没有成功则重复训练。
由于SPCE061A的FLASH存储器只有32K,所以15条指令需要分组存放。
在这里分成3组,每组5条指令。
在不同组指令中交换需要根据出发名称,所以在识别状态,要执行动作首先需要出发名称,就是训练的第一条命令,然后可以识别第一组的其余四条命令。
在触发第一条指令,然后再触发第二条指令,就可以识别第三条指令,参考图2.5
图2.5语音训练图
2.3编写程序
主程序:
Robot
功能描述:
智能语音识别避障机器人。
语音识别+机器人+超声波测距综合应用方案。
涉及的库:
CMacro1016.lib
bsr222SDL.lib
SACMV26e.lib
组成文件;
main.c/BackGroudPlaying.c/Flash.asm/FIQ.asm/hadrware.asm
InterruptStatus.asm/IRQ.c/robot_function.c/SetIOBit.asm
System.asm/ultrasonic.c/BackGroundPlaying.h/hardware.inc
bsrSD.h/s480.h/hardware.h/robot.h
注意:
**********************************************************************
超声波障碍检测程序位于robot_function.c中。
在机器人前进、后退、跳舞期间,调用Robot_CheckEnemy()函数进行障碍检测,一旦检测到附近25cm左右距离有障碍物,则停止当前动作,并发射飞盘。
***********************************************************
文件名称:
main.c
使用ADC转换器,将输入的0-3.3V电压转换为数字信号。
=====================================================================
#include"
bsrSD.h"
robot.h"
ultrasonic_App.h"
spce061a.h"
BackGroundPlaying.h"
InterruptStatus.h"
externvoidRobotSystemInit(void);
externunsignedintIsFirstDownLoad(void);
externvoidFormatFlash(void);
externvoidTrainFiveCommand(void);
externvoidSaveFiveCommand(unsignedintuiAddr);
externvoidImportFiveCommand(unsignedintuiAddr_Import);
externunsignedintTrainWord(unsignedintWordID,unsignedintSndIndex);
externvoidRobot_DanceAgain(unsignedintn);
externvoidRobot_Dance(unsignedintn);
externvoidRobot_Go(unsignedintn);
externvoidRobot_Backup(unsignedintn);
externvoidRobot_TurnLeft(unsignedintn);
externvoidRobot_TurnRight(unsignedintn);
externvoidRobot_HeadTurnLeft(unsignedintn);
externvoidRobot_HeadTurnRight(unsignedintn);
externvoidRobot_Shoot_Prepare(unsignedintn);
externvoidRobot_Shoot2(unsignedintn);
externvoidRobot_Shoot_Five(un