为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 毕业论文-语音控制小车-毕业设计

毕业论文-语音控制小车-毕业设计

2017-10-06 36页 doc 375KB 52阅读

用户头像

is_219945

暂无简介

举报
毕业论文-语音控制小车-毕业设计毕业论文-语音控制小车-毕业设计 语音控制小车 摘 要 本文主要以SPCE061A为基础介绍了如何应用SPCE061A芯片进行语音控制小车的硬件和软件设计。 SPCE061A是一种16位μ'nSP结构的微控制器。该芯片带有硬件乘法器,能够实 现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周 期最高可以达到49MHz。SPCE061A内嵌32K字的FLASH程序存储器以及2K的SRAM。同时该SOC芯片具有ADC和DAC功能,其MIC_ADC通道带有AGC自动增益环节,能够很轻松的将语音信号采集到...
毕业论文-语音控制小车-毕业设计
毕业-语音控制小车-毕业 语音控制小车 摘 要 本文主要以SPCE061A为基础介绍了如何应用SPCE061A芯片进行语音控制小车的硬件和软件设计。 SPCE061A是一种16位μ'nSP结构的微控制器。该芯片带有硬件乘法器,能够实 现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周 期最高可以达到49MHz。SPCE061A内嵌32K字的FLASH程序存储器以及2K的SRAM。同时该SOC芯片具有ADC和DAC功能,其MIC_ADC通道带有AGC自动增益环节,能够很轻松的将语音信号采集到芯片内部,两路10位的电流输出型DAC,只要外接一个功放就可以完成声音的播放。以上介绍的这些硬件资源使得该 SPCE061A能够单芯片实现语音处理功能。 SPCE061A 是继µ’nSP?系列产品SPCE500A等之后凌阳科技推出的 又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑 到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使µ’nSP?能够非常容易地、快速 地处理复杂的数字信号。因此,与SPCE500A相比,以µ’nSP?为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选 择。 借助于SPCE061A的语音特色,我们开发出了这款语音控制小车。小车不仅具有 前进、后退、左转、右转停车等基本功能;同时配合SPCE061A的语音特色,实现语音控制功能。 目 录 第一章 前言……………………………………………………………………1 第二章 语音控制小车设计要求……………………………………………2 2.1 功能设计要求……………………………………………………………… 2 2.2 参数说明……………………………………………………………2 2.3 注意事项…………………………………………………………… 2 2.4 备 注?…………………………………………………………………… 3 第三章 芯片特性简介………………………………………………………… 4 3.1 SPCE061A特性简介 …………………………………………………………4 3.2 精简开发板——61板 ………………………………………………………5 第四章 系统总体介绍 ………………………………………………7 4.1 系统硬件方案 ……………………………………………………………7 4.2系统控制方案……………………………………………………………7 第五章 系统硬件设计…………………………………………………………9 5.1车体介绍 ……………………………………………………………… 9 5.1.1 小车的行走原理………………………………………………… 10 5.2 控制板原理图 ………………………………………………………… 11 5.2.1 全桥驱动原理 ……………………………………………………12 5.2.2动力电机驱路…………………………………………………… 14 5.2.3方向电机控制电路……………………………………………… 14 第六章 系统软件设计……………………………………………………… 17 6.1系统的总体程序流程…………………………………………………… 17 6.2 程序中需要说明的几个问题 ………………………………………………24 第七章 连接与操作说明………………………………………………………26 7.1 硬件连接……………………………………………………………… 26 7.2 硬件模块连接图 ……………………………………………………… 26 7.3 功能说明……………………………………………………………… 27 7.4 代码下载……………………………………………………………… 27 7.5 训练小车……………………………………………………………… 28 7.6 声控小车……………………………………………………………… 29 7.7 重新训练……………………………………………………………… 29 结语………………………………………………………………………………30 参考文献…………………………………………………………………………31 致 谢…………………………………………………………………………32 语音控制小车 前言 语音处理技术是一门新兴的技术,它不仅包括语音的录制和播放,还涉及语音 的压缩编码和解码,语音的识别等各种处理技术。做这方面的设计,一般有两个途 径:一种方案是单片机扩展设计,另一种就是借助于专门的语音处理芯片。普通的 单片机往往不能实现这么复杂的过程和算法,即使勉强实现也要加很多的外围器件。 专门的语音处理芯片也比较多,像ISD系列、PM50系列等,但是专门的语音处理芯 片功能比较单一,想在语音之外的其他方面应用基本是不可能的。 SPCE061A是一种16位μ'nSP结构的微控制器。该芯片带有硬件乘法器,能够实 现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周 期最高可以达到49MHz。SPCE061A内嵌32K字的FLASH程序存储器以及2K的SRAM。同时该SOC芯片具有ADC和DAC功能,其MIC_ADC通道带有AGC自动增益环节,能够很轻松的将语音信号采集到芯片内部,两路10位的电流输出型DAC,只要外接一个功放就可以完成声音的播放。以上介绍的这些硬件资源使得该 SPCE061A能够单芯片实现语音处理功能。 借助于SPCE061A的语音特色,我们设计出了这款语音控制小车。小车不仅具有 前进、后退、左转、右转停车等基本功能;同时配合SPCE061A的语音特色,实现语音控制功能。 1 语音控制小车 第二章 语音控制小车设计要求 2.1 功能设计要求 语音控制小车是凌阳大学推出的基于SPCE061A的代表性兴趣产品,它配合61板推出,综合应用了SPCE061A的众多资源,打破了传统教学中单片机学习枯燥 和低效的现状。小车采用语音识别技术,可通过语音命令对其行驶状态进行控制。 语音控制小车的主要功能: 1. 可以通过简单的I/O操作实现小车的前进、后退、左转、右转功能; 2. 配合SPCE061A的语音特色,利用系统的语音播放和语音识别资源,实 现语音控制的功能; 3. 可以在行走过程中声控改变小车运动状态; 4. 在超出语音控制范围时能够自动停车。 2.2 参数说明 车体:双电机两轮驱动 供电:电池(四节AA:1.2V×4 或1.5V×4) 工作电压:DC 4V~6V 工作电流:运动时约200mA 2.3 注意事项 1. 一定要注意电池的正负极性,切勿装反; 2. 长期不用请将电池取出电池盒; 3. 由于语音信号的不确定性,语音识别的过程会出现一定的误差和不准确 性; 4. 由于小车行动比较灵活,速度比较快,在使用时一定要注意保持场地足 够大,且保证不会对周围的物体造成伤害; 2 语音控制小车 5. 不要让小车长时间运行在堵转状态(堵转状态:由于小车所受阻力过大, 造成小车电机加电但并不转动的现象),这样会造成很大的堵转电流,有可 能会损坏小车的控制电路。 2.4 备注 可以自行添加各种传感器,实现避障、循迹、跟踪等功能。 3 语音控制小车 第三章 核心器件简介 3.1 SPCE061A特性简介 SPCE061A是一种十六位单片机,使用它可以非常方便灵活的实现语音的录放, 该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益 电路。这为实现语音录入提供了方便的硬件条件。两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外十六位单片机具有一套易学易用 的指令系统和集成开发环境,在此环境中,它支持标准C语言编程,也支持C语言与汇编语言的互相调用。另外还提供了语音录放的库函数,只要了解库函数的使用, 就可以很容易的完成语音的录放、识别等功能,这些都为软件开发提供了方便的条 件。SPCE061是一款拥有2KRAM、32KFlash、32个I/O口,并集成了AD/DA功能强大的16位微处理器,它还拥有丰富的语音处理功能,为小车的功能扩展提供了相当 大的空间。只要按照该单片机的要求对其编制程序就可以实现很多不同的功能。 SPCE061A 是继µ’nSP?系列产品SPCE500A等之后凌阳科技推出的 又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑 到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使µ’nSP?能够非常容易地、快速 地处理复杂的数字信号。因此,与SPCE500A相比,以µ’nSP?为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选 择。 SPCE061A特性: ?位μ’nSP微处理器; ?工作电压:内核工作电压VDD为3.0V~3.6V(CPU),I/O口工作电压VDDH为 VDD~5.5V(I/O); ?时钟:0.32MHz~49.152MHz; ?内置2K字SRAM; ?内置32K闪存ROM; 4 语音控制小车 ?可编程音频处理; ?晶体振荡器; ?系统处于备用状态下(时钟处于停止状态),耗电小于2μA@3.6V; ?个16位可编程定时器/计数器(可自动预置初始计数值); ?个10位DAC(数-模转换)输出通道; ?位通用可编程输入/输出端口; ?个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; ?具备触键唤醒的功能; ?使用音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; ?锁相环PLL振荡器提供系统时钟信号; ?实时时钟; ?通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; ?声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; ?具备串行设备接口; ?低电压复位(LVR)功和低电压监测(LVD)功能; ?内置在线仿真板 (IC E,In- C ircuit E m ulator)接口。 3.2 精简开发板——61板 “61板”是SPCE061A EMU BOARD的简称,是以凌阳16位单片机SPCE061A为核心的精简开发-仿真-实验板,大小相当于一张扑克牌。 “61板”除了具备单片机最小系统电路外,还包括有电源电路、复位电路、ICE电路、音频电路(含MIC输入部分和DAC音频输出部分)等,“61板”可以采用电池供电。图3-1所示为该精简开发板的实物图。 5 语音控制小车 图3-1 61板实物图 6 语音控制小车 第四章 系统总体方案 4.1 系统硬件方案 系统的结构框图如图4-1示。 图4-1 系统结构框图 系统组成主要包括以下两部分:SPCE061A精简开发板、语音小车控制电路板。 图中的语音输入部分MIC_ IN、按键输入KEY、声音输出部分的功率放大环节等已经做到了精简开发板——61板上,为我们使用提供了很大的方便。在电机的驱动 方面,采用全桥驱动技术,利用四个I/O端口分为两组分别实现两个电机的正传、反 转和停三态运行。 4.2 系统控制方案 小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作, 小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的 7 语音控制小车 同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时 间到,中断服务程序会发出指令让小车停下来。 详细的控制过程请参看第6节程序设计部分。 8 语音控制小车 第五章 系统硬件设计 小车驱动电机一般利用现成的玩具小车上的配套直流电机。考虑到小车必须能 够前进、倒退、停止,并能灵活转向,在左右两轮各装一个电机分别进行驱动。当 左轮电机转速高于右轮电机转速时小车向右转,反之则向左转。为了能控制车轮的 转速,可以采取PWM调速法,即由单片机的IOB8、IOB9输出一系列频率固定的方波,再通过功率放大来驱动电机,在单片机中编程改变输出方波的占空比就可以改 变加到电机上的平均电压,从而可以改变电机的转速。左右轮两个电机转速的配合 就可以实现小车的前进、倒退、转弯等功能。 5.1 车体介绍 语音控制小车为四轮结构,如图5-1所示。其中前面两个车轮由前轮电机控制, 在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自然状态下, 前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整个小车提供 动力。所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮,如图5-2所示。 图5-1 车体侧视图 9 语音控制小车 图5-2 车体顶视图 5.1.1 小车的行走原理 直走:由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这 是只要后轮电机正转小车就会前进。如图 5-3所示; 倒车:倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机 反转,小车就会向后运动,如图 5-4所示; 左转:前轮电机逆时针旋转(规定为正转),后轮电机正转,这时小车就会在 前后轮共同作用下朝左侧前进,如图 5-5所示; 右转:前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝 右侧前进,如图5-6所示。 10 语音控制小车 图5-3 小车前进原理图 图5-4 小车倒车示意图 图5-5 小车左转示意图 图5-6 小车右转示意图 5.2 控制板原理图 控制板主要包括:接口电路、电源电路和两路电机的驱动电路,控制板原理图 如图 5-7所示。 11 语音控制小车 接口电路:接口电路负责将61板的I/O接口信号传送给控制电路板,I/O信号主要为控制电机需要的IOB8~IOB11这四路信号,同时为了方便后续的开发和完善,预留 了IOB12~IOB15以及IOA8~IOA15接口,可以在这些接口上添加一些传感器。 电源部分:整个小车有4个电源信号:电池电源,控制板工作电源,61板工作电源,61板的I/O输出电源。系统供电由电池提供,控制板直接采用电池供电(VCC),然后经二极管D1后产生61板电源 (VCC_61),通过61板的Vio跳线产生61板的端口电源(V1)。 二极管D1作用: 1.降压,4节电池提供的电压VCC最大可达到6V,D1可有效地降压。 2.2.保护,D1可以防止电源接反烧坏61板。 图5-7 控制板原理图 5.2.1 全桥驱动原理 全桥驱动又称H桥驱动,下面介绍一下H桥的工作原理: H桥一共有四个臂,分别为B1~B4,每个臂由一个开关控制,示例中为三极管 12 语音控制小车 Q1~Q4。 如果让Q1、Q2导通Q3、Q4关断,如图 5-8所示,此时电流将会流经Q1、负载、Q2组成的回路,电机正转。 图5-8 B1、B2工作时的H桥电路简图 图5-9 B3、B4工作时的H桥电路简图 如果让Q1、Q2关断Q3、Q4导通,如图 5-9所示,此时电流将会流经Q3、负载、Q4组成的回路,电机反转。 如果让Q1、Q2关断Q3、Q4也关断,负载Load两端悬空,如图 5-10所示,此时电机停转。这样就实现了电机的正转、反转、停止三态控制。 如果让Q1、Q2导通Q3、Q4也导通,那么电流将会流经Q1、Q4组成的回路以及Q2和Q3组成的回路,如图 5-11所示,这时桥臂上会出现很大的短路电流。在实际应 用时注意避免出现桥臂短路的情况,这会给电路带来很大的危害,严重会烧毁电路 图5-10 B1~B4全部停止工作时的H桥简图 图5-11 B1~B4全部工作时的H桥简图 13 语音控制小车 5.2.2 动力电机驱动电路 动力驱动由后轮驱动实现,负责小车的直线方向运动,包括前进和后退,后轮 驱动电路是一个全桥驱动电路,如图3-12所示:Q1、Q2、Q3、Q4四个三极管组成四个桥臂,Q1和Q4组成一组,Q2和Q3组成一组,Q5控制Q2、Q3的导通与关断,Q6控制Q1和Q4的导通与关断,而Q5、Q6由IOB9和IOB8控制,这样就可以通过IOB8和IOB9控制四个桥臂的导通与关断控制后轮电机的运行状态,使之正转反转或者停 转,进而控制小车的前进和后退。 图5-12 后轮电机驱动电路 当IOB8为高电平、IOB9为低电平时Q1和Q4导通,Q2和Q3截止,后轮电机正转,小车前进;反之当IOB8为低电平、IOB9为高电平时Q1和Q4截止,Q2和Q3导通,后轮电机反转,小车倒退;而当IOB8、IOB9同为低电平时Q1、Q2、Q3和Q4都截止,后轮电机停转,小车停止运动。 注意:IOB8和IOB9不能同时置高电平,这样会造成后轮驱动全桥短路现象。 5.2.3 方向电机控制电路 方向控制由前轮驱动实现,包括左转和右转,前轮驱动电路也是一个全桥驱动电 路,如图3-12所示:Q7、Q8、Q9、Q10四个三极管组成四个桥臂,Q7和Q10组成一组,Q8和Q9组成一组,Q11控制Q8、Q9的导通与关断,Q12控制Q7和Q10的导通与关断,而Q11、Q12由IOB10和IOB11控制,这样就可以通过IOB10和IOB11控制前轮电机的正转和反转,进而控制小车的左转和右转。 14 语音控制小车 图5-13 前轮电机驱动电路 当IOB10为高电平、IOB11为低电平时Q8和Q9导通,Q7和Q10截止,前轮电机正转,小车前轮朝左偏转;反之当IOB10为低电平、IOB11为高电平时Q8和Q9截止,Q7和Q10导通,前轮电机反转,小车前轮朝右偏转;而当IOB10、IOB11同为低电平时Q8和Q9截止,Q7和Q10也截止,前轮电机停转,在弹簧作用下前轮被拉回到中间 位置,保持直向。 注意:IOB10、IOB11不能同时为高电平,这样会造成前轮驱动全桥的桥臂短路。 结合以上对前轮和后轮的状态分析,得到小车的运行状态与输入的对照表,如 下表所示: 表5.1 基本的输入与小车运动状态对照表 IOB11 IOB10 IOB9 IOB8 后电机 前电机 小车 0 0 0 0 停转 停转 停 0 0 0 1 正转 停转 前进 0 0 1 0 反转 停转 倒退 0 1 0 1 正转 正转 左前转 1 0 0 1 正转 反转 右前转 15 语音控制小车 另外还有一些不常用的运行状态,比如右后转、左后转等,结合以上对前轮和 后轮的状态分析,其端口对照如表5.2所示: 表5.2 输入与小车的运动状态对照表 IOB11 IOB10 IOB9 IOB8 后电机 前电机 小车 0 1 1 0 正转 正转 右后转 1 0 1 0 正转 反转 左后转 注意:为了小车的安全请不要出现以下两种组合情况: 表5.3 禁止的输入状态列表 IOB10 IOB9 IOB8 IOB11 后电机 前电机 小车 * * 1 1 * 停转 停 1 1 * * * 停转 停 ) 16 语音控制小车 第六章 系统软件设计 6.1 系统的总体程序流程 系统的总体程序流程如图 6-1所示: 图6-1 系统总体程序流程图 语音识别小车的主程序流程如图 6-1所示,分为四大部分:初始化部分、训练 部分、识别部分、重训操作。 初始化部分:初始化操作将IOB8~IOB11设置为输出端,用以控制电机。必要时 还要有对应的输入端设置和PWM端口设置等。 训练部分:训练部分完成的工作就是建立语音模型。程序一开始判断小车是否 被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的 17 语音控制小车 模型存储到Flash,在以后使用时不需要重新训练;如果已经训练过会把存储在Flash中的模型调出来装载到辨识器中。 识别部分:在识别环节当中,如果辨识结果是名字,停止当前的动作并进入待命状 态,然后等待动作命令。如果辨识结果为动作指令小车会语音告知相应动作并执行 该动作,在运动过程中可以通过呼叫小车的名字使小车停下来。 重训操作:考虑到有重新训练的需求,设置了重新训练的按键(61板的KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位(0xe000单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为0xffff时会要求重新对其进行训练。 下面详细介绍以上提到的子程序。 6.1.1 语音识别的原理简介 在介绍子程序之前首先介绍一下语音识别的原理。 语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到的 语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶 段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息, 然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配 度,则输入的语音被识别。 语音识别的具体流程如图6-2所示: 18 语音控制小车 图6-2 语音识别流程说明框图 6.1.2 训练子程序 当程序检测到训练标志位BS_Flag内容为0xffff,就会要求操作者对它进行训练 操作,训练操作的过程如图 6-3所示:训练采用两次训练获取结果的方式,以训练 名字为例:小车首先会提示:给我取个名字吧,这时你可以告诉它一个名字(比如 Jack);然后它会提示:请再说一遍,这时再次告诉它名字(Jack),如果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建 立模型,小车会告知失败的原因并要求重新训练。成功训练名称后会给出下一条待 训练指令提示音:前进,参照名称训练方式训练前进指令。依次训练小车的名称—前进指令—倒车指令—左转指令—右转指令,全部训练成功子程序返回,训练结束。 19 语音控制小车 图6-3 训练流程图 下面是训练部分的子程序,在训练时如果训练不成功TrainWord()返回值不为0,要求重复训练,只有当训练成功,TrainWord()返回0,进行下一条指令训练。 void TrainSD( ) { while(TrainWord(NAME_ID,S_NAME) != 0) ; //训练名称 while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ; //训练第1个动作 while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) ; //训练第2个动作 while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ; //训练第3个动作 while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ; //训练第4个动作 } 6.1.3 语音识别子程序 语音识别流程如图6-4所示:首先获取辨识器的辨识结果,判断是否有语音触发, 20 语音控制小车 如果有语音触发则会返回识别结果的ID号,ID号对应名称或者对应不同的动作。如 果ID号为名称,则结束运动(如果当前在运动状态),进入待命状态,等待下一次 的指令触发;如果ID号为动作,则语音告知将要执行的动作,并执行该动作。 图6-4 语音识别部分流程图 6.1.4 动作子程序 动作子程序包括:前进、倒车、左拐、右拐、停车子程序; 前进:由小车的结构原理和驱动电路分析知:只要IOB8为高电平,IOB9,IOB10,IOB11全部为低电平即可实现小车的前进。前进子程序包括语音提示、置端口数据、 启动定时器操作,该部分程序如下: void GoAhead() //前进 { PlaySnd(S_ACT1,3); //语音提示 *P_IOB_Data=0x0100; //前进 *P_INT_Mask |= 0x0004; //开2Hz中断 __asm("int fiq,irq"); 21 语音控制小车 uiTimecont = 0; //清定时器 } 倒车:由小车的结构原理分析和驱动电路分析知:只要IOB9为高电平,IOB8, IOB10,IOB11全部为低电平即可实现小车的倒退。倒退子程序包括语音提示、置端 口数据、启动定时器操作,程序如下: void BackUp() //倒退 { PlaySnd(S_ACT2,3); //语音提示 *P_IOB_Data=0x0200; //倒车 *P_INT_Mask |= 0x0004; //开2Hz中断 __asm("int fiq,irq"); uiTimecont = 0; //清定时器 } 左转:由小车的结构原理分析和驱动电路分析知:小车左转需要两个条件:1. 前轮左偏2.后轮前进,这时对应的I/O状态为:IOB8、IOB10为高电平,IOB9、IOB11 为低电平。左转子程序包括语音提示、置端口数据、启动定时器操作,该部分程序 如下: void TurnLeft() //左转 { PlaySnd(S_GJG,3); //播放提示音 *P_IOB_Data=0x0900; //前轮右偏 Delay(); //延时 *P_IOB_Data=0x0500; //前轮左偏 *P_INT_Mask |= 0x0004; //打开2Hz中断 __asm("int fiq,irq"); //允许总中断 uiTimecont = 0; //清定时器 } 注:在左转之前首先让前轮右偏,然后再让前轮朝左偏,这样前轮的摆动范围 22 语音控制小车 更大,惯性更大,摆幅也最大,能更好实现转弯。 右转:由小车的结构原理分析和驱动电路分析知:小车右转需要两个条件:1. 前轮右偏2.后轮前进,这时对应的I/O状态为:IOB8、IOB11为高电平,IOB9、IOB10 为低电平。右转子程序包括语音提示、置端口数据、启动定时器操作,该部分程序 如下: void TurnLeft() //左转 { PlaySnd(S_GJG,3); //播放提示音 *P_IOB_Data=0x0500; //前轮左偏 Delay(); //延时 *P_IOB_Data=0x0900; //前轮右偏 *P_INT_Mask |= 0x0004; //打开2Hz中断 __asm("int fiq,irq"); //允许总中断 uiTimecont = 0; //清定时器 } 注:在右转之前首先让前轮左偏,然后再让前轮朝右偏,这样前轮的摆动范围 更大,惯性更大,摆幅也最大,能更好实现转弯。 6.1.5 中断子程序 虽然已经有了前进、后退以及停车(通过直接呼叫小车的名字使其停车)等语 音控制指令,但是考虑环境的干扰因素,小车运行时的噪音影响和有效距离的限制, 小车运行后可能接收不到语音指令而一直运行。为了防止出现这种情况,加入了时 间控制,在启动小车运行的同时启动定时器,定时器时间到停止小车的运行,该定 时器借助于2Hz时基中断完成,图 6-5所示为该程序的流程图。可以在程序中修改uiTimeset参数来控制运行时间,当uiTimeset=2时,运行时间为1s,以此类推。 23 语音控制小车 图6-5 2Hz定时中断子函数 6.2 程序中需要说明的几个问题 在程序中有几个地方不易理解,需要特别说明一下: 首先,小车有没有被训练过是怎么知道的? 在这里利用了一个特殊的Flash单元,语音模型存储区首单元(该示例程序中为 0xe000单元)。当Flash在初始化以后,或者在擦除后为0xffff,在成功训练并存储后为0x0055(该值由辨识器自动生成)。这样就可以根据这个单元的值来判断是否经 过训练。 其次,为什么已经训练过的系统在重新运行时还要进行模型装载? 在首次训练完成之后,辨识器中保存着训练的模型,但是系统一旦复位辨识器 中的模型就会丢失,所以在重新运行时必须把存储在Flash中的语音模型装载到辨识器(RAM)中去。 第三,在转弯时为什么前轮要先做一个反方向的摆动? 这是为了克服车体的限制,由于前轮电机的驱动能力有限,有时会出现前轮偏 转不到位的情况,所以在转弯前首先让前轮朝反方向摆动,然后再朝目标方向摆动。 这样前轮的摆动范围更大,惯性更大,摆幅也最大,能更好实现转弯。 24 语音控制小车 第四,关于语音的一些具体问题,关于语音的一些具体问题请参看SPCE061A相关书籍中关于语音的详细介绍。 调试结果及数据(包括电路装配、焊接、电路调试所用仪器和仪表工具,调试的具 体步骤,发现的问题、原因分析及修正等,也包括PCB图)电路调试及故障分 析 25 语音控制小车 第七章 连接与操作说明 7.1 硬件连接 语音控制小车电路包括两大部分:61板部分和控制板部分,硬件部分的连接如 图7-1示,主要用到SPCE061A的IOB8~IOB11来控制小车的状态。 电源部分连接:电池电源直接接控制板电源接口J1, J2接61板的电源,连接时注意电源极性。 61板和控制板的I/O连接有两种情况: 采用I/O排针向下的61板,直接将61板和控制板扣接在一起即可,61板的IOBH 通过J6与控制电路连通; 采用I/O排针向上的61板,直接用排线将61板的IOBH和J5相连接即可。 图7-1 系统结构框图 7.2 硬件模块连线图 26 语音控制小车 图7-2 连线图 7.3 功能说明 1. 小车运动控制: 通过SPCE061A的I/O端口,驱动控制板的H桥电路,进而控制前轮电机和后轮 电机。 2. 声控功能: 利用特定人语音识别实现小车的名称和动作训练,并根据相应的语音指令输入 执行前进、后退、左转、右转、停车等动作。 3. 定时控制功能: 利用时基定时器设定运行时间,小车运行同时启动定时器,时间到小车停止运 行。 7.4 代码下载 硬件连接完成之后,检查无误,接下来就可以下载程序了。具体的步骤为: 第一步:打开集成开发环境,打开“CarDemo.spj”文件,编译链接。(注意: 如果看不到CarDemo.spj,请在弹出的对话框中选择打开类型为spj或者所有文 件) 第二步:点击菜单Project->Select Body,或者直接点击 图标打开如图 3-2 27 语音控制小车 所示的对话框: 图 7-3 Select Body对话框 第三步:在弹出的对话框中选择Body Name为SPCE060A_061A,选择Probe为Auto,点击OK按钮确定。 第四步:点击IDE工具栏上的图标选择Use ICE模式。 第五步:按F8快捷下载按钮,下载代码。 7.5 训练小车 成功下载程序以后,去掉下载线并复位系统(如果使用EZ-Probe还应将Probe选择跳线S5拔去),小车就会提示对它进行训练。训练采用应答式训练,每 条指令的训练次数为两次,每一条命令的训练过程都是一样的,以“前进”为例说明: 步骤一:小车提示“前进”; 步骤二:告诉小车“前进”; 步骤三:小车提示“请再说一遍”(重复训练提示音); 步骤四:再次告诉小车“前进”(重复训练一次)。 这是一个完整的训练过程,如果训练成功,小车会自动进入下一条指令的训练, 并会提示下一条指令对应的动作;如果没有训练成功,小车会提示“说什么暗语呀”或者“没有听到任何声音”等信息,这样的话就要重复刚才所说的四个步 骤,直到成功为止。 28 语音控制小车 整个的训练过程共有5次这样的训练,依次为:名称——前进——后退——左拐 ——右拐。整个的训练流程如图 7-4所示: 图7-4 小车训练流程 7.6 声控小车 训练完小车之后,怎样进行声控操作,让小车运动或者停下来呢? 可以直接对小车说前进,或者倒车、左拐、右拐等,小车如果识别出指令会有 一个回应信号,告知你它要执行的动作,然后执行该动作。如果想要小车执行 其它动作,直接告诉小车将要执行动作对应的指令即可。比如在前进时告诉小 车“倒车”,小车识别出之后就会直接倒车。 29 语音控制小车 如果在小车运动的过程中想要小车停下来,可以直接呼叫小车的名字,小车准确识 别之后就会停下来。 7.7 重新训练 在实际的使用过程当中,可能会对训练的结果不满意,或者其他人也想对它进 行训练、控制。这样就要求小车可以被重新训练。为此,我们把61板的KEY3 键定义为重新训练按钮,系统运行之后就会不断的扫描61板的KEY3键。如果 检测到KEY3键按下,那么程序首先会把训练标志位(0xe000)单元擦除,并 会进入一个死循环等待复位的到来。复位到来之后,程序检测到训练标志单元 内容为0xffff,认为小车没有经过训练,就会要求对它进行训练。 30 语音控制小车 第八章 结束语 本设计综合应用了SPCE061A丰富的软硬件资源,成功的实现了语音控制功能。下面简单 的介绍一下实际应用中的一些资源优势:在硬件方面,较高的执行速度、内置的硬件乘法器、 ADC和DAC功能、内置的AGC自动增益环节,这些为语音处理提供了强大基础。在软件方面, 标准的C语言编程,丰富的语音资源函数为编程提供了很大的方便。 该设计方案结构简单,以单芯片实现了语音播放与识别以及电机控制功能,相当于“语音识别芯片+普通单片机”的功能。但是比“语音识别芯片+普通单片机”方案实现起来要简单很多,而且成本也会降低很多。 该语音控制小车操作比较简单,训练和识别成功的几率也比较高,是一个典型的语音识 别应用方案。 29 语音控制小车 参考文献、资料索引 文献、资料名称 编著者 出版单位 凌阳16位单片机应用基础[M] 罗亚非 北京航空航天大学出版社 凌阳16位单片机原理及应用[M] 张彦斌薛钧义 清华大学出版社 单片机应用系统设计与产品开[M]赵亮 人民邮电出版社 耿德根 詹卫前李青北京航空航天大学出版社 单片机创新开发与机器人制作 David Cook 毕树生 北京航空航天大学出版社机器人制作提高篇 李大寨 高志慧 译凌阳大学计划网www.unsp.com.cn 此表格有学生填写所参考的文献、资料 30 语音控制小车 致 谢 在论文完成之际,我要特别感谢我的指导老师左老师的热情关怀和悉心指导。在我撰写论 文的过程中,左老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方 面,还是在论文的研究方法以及成文定稿方面,我都得到了左老师悉心细致的教诲和无私的 帮助,特别是她广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我 终生受益,在此表示真诚地感谢和深深地谢意,感谢长期以来xx老师对我的学习指导。 在论文的写作过程中,也得到了许多同学的宝贵建议,感谢所有关心帮助我的良师益。 31
/
本文档为【毕业论文-语音控制小车-毕业设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索