毕业设计(论文)-语音控制小车.doc_第1页
毕业设计(论文)-语音控制小车.doc_第2页
毕业设计(论文)-语音控制小车.doc_第3页
毕业设计(论文)-语音控制小车.doc_第4页
毕业设计(论文)-语音控制小车.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林航天工业高等专科学校毕业论文 NO: 毕业设计 题 目: 语音控制小车 系 别: 机 械 工 程 系 专 业: 机电一体化技术 姓 名: 学 号: 指导老师: 职 称: 2010年6月 摘 要随着电子业的发展,自动化已不再是一个新鲜的话题,无人驾驶的小汽车也必将进入实用阶段,本系统模拟将来的智能小车。根据开始录制的语音命令来控制启动、停止、返回和语音模。本文介绍了一种基于SPCE061A单片机的语音遥控小车,重点讨论了其硬件与软件系统的设计与实现。文章首先介绍了SPCE061A单片机和配套61实验板及其开发环境IDE;接着完成了总体方案设计、车体驱动设计、程序设计、语音辨识设计、功能模块的设计,最后对制作与调试过程做了较为详细的说明。测试表明,在环境背景噪音不太大,控制者的发音清晰的前提下,语音控制小车能对特定的语音指令做出反应,做出预想中的有限的动作。 关键词:SPCE061A 61实验板 IDE 驱动小车 语音辨识ABSTRACT With the electronics industry, automation is no longer a new topic, driverless cars will also enter the practical stage, the system simulation of future smart car. According to begin recording the voice command to control start, stop, return and voice mode. This paper introduces a microcomputer-based voice SPCE061A remote control car, focusing on its hardware and software system design and implementation. First we describe the experimental SPCE061A microcontroller and supporting plate 61 and its development environment IDE; then completed the overall design, body-driven design, programming, voice recognition design, function modules, and finally to the production and commissioning process made more detail. Test showed that the environmental background noise is not too large, the controller sounds a clear premise, voice controlled car can respond to specific voice commands to make the action expected of the limited.KEYWORDS:61 test board IDE drive car speech recognition 目 录第一章 绪 论- 1 -1.1设计背景- 1 -1.2 凌阳SPCE061A单片机- 1 -1.3 61实验板- 2 -1.4 系统开发环境IDE- 2 -1.5 ResWriter工具- 2 -第2章 凌阳SPCE061A单片机- 4 -2.1 SPCE061A总述- 4 -2.2 SPCE061A 特点- 4 -2.4 SPCE061A的结构- 6 -2.5 引脚排列- 7 -2.6 应用领域- 8 -2.7 SPCE061A最小系统- 9 -第3章 61实验板- 10 -3.1 硬件框图及简要说明- 10 -3.2 61板接口说明- 11 -3.3 61板的检测- 13 -第4章 系统总体方案- 16 -4.1 设计要求- 16 -4.2 系统总体方案- 16 -4.3 系统硬件方案- 17 -4.4系统控制方案- 18 -第五章 系统硬件设计- 19 -5.1 车体介绍- 19 -5.2 小车的行走原理- 21 -5.3 控制板原理图- 23 -5.4 全桥驱动原理- 24 - 5.5 动力电机驱动电路 - 26 -5.6 方向电机控制电路- 27 -第6章 系统软件设计- 30 -6.1 系统的总体程序流程- 30 -6.2 语音识别的原理简介- 31 -6.3 训练子程序- 32 -6.4 语音识别子程序- 34 -6.5 动作子程序- 34 -6.6 中断子程序- 36 -6.7 程序中需要说明的几个问题- 37 -第7章 系统开发环境- 39 -第8章 语音小车的使用- 40 -8.1 连接硬件- 40 -8.2 代码下载- 40 -8.3 训练小车- 41 -8.4 声控小车- 42 -8.5 重新训练- 43 -结 语- 44 -致 谢- 45 -参考文献- 46 -附录一 : 语音控制小车源代码- 47 - 第一章 绪 论1.1 设计背景语音处理技术是一门新兴的技术,它不仅包括语音的录制和播放,还涉及语音的压缩编码和解码,语音的识别等各种处理技术。以往做这方面的设计,一般有两个途径:一种方案是单片机扩展设计,另一种就是借助于专门的语音处理芯片。普通的单片机往往不能实现这么复杂的过程和算法,即使勉强实现也要加很多的外围器件。专门的语音处理芯片也比较多,像 ISD 系列、PM50 系列等,但是专门的语音处理芯片功能比较单一,想在语音之外的其他方面应用基本是不可能的。 SPCE061A 是凌阳科技推出的一款 16 位nSP 结构的微控制器。该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周期最高可以达到49MHz。SPCE061A 内嵌32K 字的FLASH 程序存储器以及2K 的SRAM。同时该SOC 芯片具有ADC 和DAC 功能,其MIC_ADC 通道带有AGC 自动增益环节,能够很轻松的将语音信号采集到芯片内部,两路 10 位的电流输出型 DAC,只要外接一个功放就可以完成声音的播放。以上介绍的这些硬件资源使得该 SPCE061A 能够单芯片实现语音处理功能。借助于 SPCE061A 的语音特色,开发出了这款语音控制小车。小车不仅具有前进、后退、左转、右转停车等基本功能;同时配合 SPCE061A 的语音特色,实现语音控制功能。 1.2 凌阳SPCE061A单片机 SPCE061A 是继nSP系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使nSP能够非常容易地、快速地处理复杂的数字信号。1.3 61实验板 “61板”是SPCE061A EMU BOARD的简称,是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,大小相当于一张扑克牌。 “61板”除了具备单片机最小系统电路外,还包括有电源电路、复位电路、ICE电路、音频电路(含MIC输入部分和DAC音频输出部分)等,“61板”可以采用电池供电。1.4 系统开发环境IDEnSP IDE是由凌阳科技提供的一个集成开发环境,它集程序的编辑、编译、链接、调试和仿真等功能为一体。具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使程序设计工作更加方便、高效。此外,它的软件仿真功能可以不连接仿真板,模拟硬件的部分功能来调试程序。1.5 ResWriter工具ResWriter工具是将语音、字模等数据资源(二进制文件)烧录到SPR1024/4096 Flash Memory的烧录工具。用PC Printer Port 通过EZ_Probe烧录SPR1024/4096,基本操作内容包括芯片的空白检查(Blank Check)、芯片的数据擦除(Erase)、读出芯片数据(Read)、烧录写入数据(Program)、校验检查写入的数据是否正确(Verify)。另外,该工具还具有文件整合功能,把多个小文件按照指定的格式生成索引表,然后将索引表与所有的小文件整合成一个大文件作为烧录Flash的数据资料。 第2章 凌阳SPCE061A单片机2.1 SPCE061A总述SPCE061A 是继nSP系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使nSP能够非常容易地、快速地处理复杂的数字信号。因此,与SPCE500A相比,以nSP为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择2.2 SPCE061A 特点有以下特点:1.体积小、集成度高、可靠性好且易于扩展把各功能部件模块化地集成在一个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。另外,模块化的结构易于系统扩展,以适应不同用户的需求。2.具有较强的中断处理能力中断系统支持10个中断向量及10余个中断源,适合实时应用领域。 3.高性能价格比片内带有高寻址能力的ROM、静态RAM和多功能的I/O口。另外,nSP的指令系统提供具有较高运算速度的16位16位的乘法运算指令和内积运算指令,为其应用增添了DSP功能,使得nSP家族运用在复杂的数字信号处理方面既很便利,又比专用的DSP芯片廉价。4. 功能强、效率高的指令系统指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持,这可以大大缩短产品的开发时间。5.低功耗、低电压采用CMOS制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。另外,nSP家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电。这对于其在野外作业等领域中的应用具有特殊的意义。2.3 SPCE061A性能16位nSP微处理器;工作电压(CPU) VDD为2.43.6V (I/O) VDDH为2.45.5V CPU时钟:0.32MHz49.152MHz ;内置2K字SRAM;内置32K FLASH;可编程音频处理;晶体振荡器;系统处于备用状态下(时钟处于停止状态),耗电仅为2A3.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- Circuit Emulator)接口;具有保密能力;具有WatchDog功能。2.4 SPCE061A的结构 SPCE061A的结构如下图2.1所示: 图2.1 SPCE061A的结构 SPCE061A主要包括输入/输出端口、定时器/计数器、数/模转换、模/数转换、串行设备输入输出、通用异步串行接口、低电压监测和复位等部分,并且内置在线仿真电路ICE接口,较高的处理速度使其能够快速的处理复杂的数字信号2.5 引脚排列SPCE061A有两种封装片,一种为84个引脚,PLCC84封装形式;它的排列如图1.4所示;另一种为80个引脚,LQFP80封装。PLCC84的排列如下图2.2所示: 图2.2 SPCE061APLCC84封装排列图 2.6 应用领域 家用电器控制器:冰箱、空调、洗衣机等白色家电 仪器仪表:数字仪表(有语音提示功能) 电表、水表、煤气表、暖气表 工业控制 智能家居控制器 通讯产品:多功能录音电话、自动总机、语音信箱、数字录音系统产品 医疗设备、保健器械(电子血压计、红外体温监测仪等) 体育健身产品(跑步机等) 电子书籍(儿童电子故事书类)、电教设备等 语音识别类产品(语音识别遥控器、智能语音交互式玩具等) 2.7 SPCE061A最小系统 最小系统接线如下图所示,在OSC0、OSC1端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。其它不用的电源端和地端接上0.1F的去藕电容提高抗干扰能力。(如下图2.3所示) 图2.3 SPCE061A最小系统原理图 第3章 61实验板3.1 硬件框图及简要说明 框图如下图3.1所示 图3.1 61板框图表3.1:框图说明 POWER 5v&3.3V供电电路 PLL 锁向环外部电路 Power电源指示灯 Sleep睡眠指示灯 RESET 复位电路 K4 复位按键 PROBE 在线调试器串行5pinS5 EZ_PROBE和PROBE切换的3PIN单排针 J3 2pin喇叭插针 EZ_PROBE 下载线的5pin接口 DAC 一路音频输出电路 MIC 麦克风输入电路 OSC 32768晶振电路 VRT A/D转换外部参考电压输入接口 R/C 其他外围电阻电容 K1K3 扩展的按键:接IOA0IOA2 PORTA/B32个I/O口 SPCE061A 61板核心:16位微处理器 说明: 您想自己动手制作音乐盒、复读机以及最炫的语音电视遥控器吗? 如果你拥有一块61板,你将会发现这些都将不再是梦想! 3.2 61板接口说明 61板接口说明如下图3.2所示 图3.2 61板接口(一) 输入/输出(I/O)接口61板将SPCE061A的32个I/O口全部引出:IOA0IOA15,IOB0IOB15,对应的SPCE061A引脚为:A口,4148、53、5460;B口,51、8176、6864。而且该I/O口是可编程的,即可以设置为输入或输出: 设置为输入时,分为悬浮输入或非悬浮输入,非悬浮输入又可以设置为上拉输入或是下拉输入;在5V情况下,上拉电阻为150K,下拉电阻为110K;设置为输出时,可以选择同相输出或者反相输出。(二) 音频输入/输出接口61板具有强大的语音处理功能,如图3.2所示,X1是语音的MIC输入端,自带自动增益(AGC)控制, J3是语音输出接口,一个2pin的插针外接喇叭,由DAC输出引脚21或22经语音集成放大器SPY0030A放大,然后输出,SPY0030A是凌阳的一款芯片,功能相当于LM386,但是比LM386音质好,它可以工作在2.46.0V范围内,最大输出功率可达700mW(LM386必须工作在4V以上,而且功率只有100mW)。(三)在线调试器PROBE和EZ_PROBE接口图3.2中J4为PROBE的接口,该接口有5pin,我们就是通过它将PROBE与PC机连接起来进行调试、仿真和下载程序的。这样,就不需要再用仿真器和编程器了。图3.2中的J11是EZ_PROBE的接口,我们提供一根下载线用作程序的下载,一端连接PC机的25pin并口,另外一端接61板的5pin EZ_PROBE接口。 (四)电源接口图3.2中J10是电源接口,61板的内核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来选择。61板的供电电源系统采用用户多种选择方式: 1、 5V供电 户可以用3节电池来供电,5V直流电压直接通过SPY0029(相当于一般3.3V稳压器)稳压到3.3V,为整个61板提供了5V和3.3V两种电平的电压。另外也可以直接外接5V的直流稳压源供电,5V电压再通过SPY0029稳压到3.3V。 2、 3.3V供电 可以提供直流3.3V电压为实验板进行供电,此时整个板子有3.3V电压,I/O端口电压此时只有一种选择。 需要注意的是由于SPY0029A最大输出电流为50mA,所以如果需要外接一些模组时要先考虑负载能力。 (五)外部复位 复位是对61板内部的硬件初始化,61板本身具有上电复位功能,即通电就自动复位,另外,还具有外部复位电路,即在引脚6上外加一个低电平就可令其复位。如图3.2中的RESET按键。 3.3 61板的检测 (一)主要测试部分 1、I/O口(A口作为输入,B口作为输出); 2、睡眠功能(进入睡眠状态,绿色指示灯点亮); 3、A/D转换输入(B口的低7位作为模拟电压源输出,对应A口的7个通道采样转换); 4、MIC输入及语音输出(同时实现A/D和D/A转换功能)。 (二) 61板自检的具体操作步骤(如图3.3所示) 图3.3 61板自检步骤第一步 连接电源,可以连接电池盒(3节),也可以直接接5V的稳压源; 现象:当电源接通时,红色的发光二极管会点亮。同时会有语音提示:“欢迎进入自检模式”,此时因为还没有连线,所以会听到:“I/O测试失败”的警告,进行第二步的操作; 第二步 用排线分别将IOA口的低8位和IOB口的低8位相连,IOA口的高8位和IOB口的高8位相连,然后按下RESET复位键; 现象:当按下RESET复位键后,程序重新开始执行,语音提示“欢迎进入自检模式”,当听到语音提示“I/O测试成功”后,进行第三步操作; 第三步 按K1键进行睡眠功能测试; 现象:如果测试成功,会看到绿色的发光二极管闪亮一下,并有语音提示“睡眠测试成功”,否则提示“睡眠测试失败”,然后进行第四步操作; 第四步 按下K2键进行A/D转换的测试; 现象:语音提示:“A/D测试成功”,否则提示“A/D测试失败”,进入最后一步操作; 第五步 拔掉第一步测试时的排线,并按下K3键测试MIC输入及D/A转换输出是否正常;(注:在按下K3键后,喇叭会发出啸叫声,用手按在MIC上可消除啸叫声。) 现象:可以在MIC上轻轻的拍几下,同时听是否有声音输出,如果有,则说明MIC输入和D/A转换输出部分正常。 以上操作,只有当I/O测试成功后,按键才会有效。 第4章 系统总体方案4.1 设计要求利用SPCE061A单片机和智能小车控制电路板,实现下述功能: 1.可以通过简单的I/O操作实现小车的前进、后退、左转、右转功能; 2.配合SPCE061A语音特色,利用系统的语音播放和语音识别资源,实现语音控制功能; 3.可以在行走过程中声控改变小车运动状态; 4.在超出语音控制范围时能够自动停车。4.2 系统总体方案 采用SPCE061A实现语音控制小车方案,由于SPCE061A内部具有语音识别和语音播放功能,所以只需要扩展基本的MIC和语音功放即可,该方案结构如图所示: 图4.1 基于SPCE061A的语音控制小车实现方案4.3 系统硬件方案 系统组成主要包括以下两部分:SPCE061A精简开发板、语音小车控制电路板。 图中的语音输入部分MIC_ IN、按键输入KEY、声音输出部分的功率放大环节等已经做到了精简开发板61板上,为我们使用提供了很大的方便。在电机的驱动方面,采用全桥驱动技术,利用四个I/O端口分为两组分别实现两个电机的正传、反转和停三态运行。系统的结构框图如下图4.2所示图4.2 系统结构框图 图4.3 硬件模块连线图4.4系统控制方案 小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间到,中断服务程序会发出指令让小车停下来。 第五章 系统硬件设计系统的硬件方面,由于大部分的功能实现都是在61板上完成的,只有电机控制部分电路另外设计在一块独立的电路板上,我们称之为控制板。下面详细的介绍小车的结构和运行原理以及控制电路板的结构和功能实现。 5.1 车体介绍 语音控制小车为四轮结构,如图 5.1。其中前面两个车轮由前轮电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自然状态下,前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整个小车提供动力。所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮,如图 5.1 图5.1 车体侧视图62桂林航天工业高等专科学校毕业论文5.2 小车的行走原理 直走:由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这是只要后轮电机正转小车就会前进。 倒车:倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机反转,小车就会向后运动。 左转:前轮电机逆时针旋转(规定为正转),后轮电机正转,这时小车就会在前后轮共同作用下朝左侧前进。 右转:前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝右侧前进。行走原理如图5.2所示。 车体前进原理图 车体倒车原理图 车体左转示意图 车体右转示意图 图5.2 小车行转弯原理图5.3 控制板原理图 控制板主要包括:接口电路、电源电路和两路电机的驱动电路,控制板原理图如图 5.3 所示。 接口电路:接口电路负责将 61 板的I/O 接口信号传送给控制电路板,I/O 信号主要为控制电机需要的 IOB8IOB11 这四路信号,同时为了方便后续的开发和完善,预留了IOB12IOB15 以及IOA8IOA15 接口可以在这些接口上添加一些传感器。 电源部分:整个小车有4 个电源信号:电池电源,控制板工作电源,61 板工作电源,61 板的I/O 输出电源。系统供电由电池提供,控制板直接采用电池供电(VCC ),然后经二极管 D1后产生61板电源(VCC_61),通过61 板的Vio 跳线产生 61 板的端口电源(V1 )。 二极管D1 作用: 1、降压,4 节电池提供的电压VCC 最大可达到6V,D1 可有效地降压。 2、保护,D1 可以防止电源接反烧坏61 板。 5.3 控制板原理图5.4 全桥驱动原理 全桥驱动又称H桥驱动,下面介绍一下H桥的工作原理: H桥一共有四个臂,分别为B1B4,每个臂由一个开关控制,示例中为三极管Q1Q4。 如果让Q1、Q2导通Q3、Q4关断,如图5-8所示,此时电流将会流经Q1、负载、Q2组成的回路,电机正转。 B1、B2工作时的H桥电路简图 B3、B4工作时的H桥电路简图 图5.4 全桥驱动原理 1 如果让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所示,这时桥臂上会出现很大的短路电流。在实际应用时注意避免出现桥臂短路的情况,这会给电路带来很大的危害,严重的会烧毁电路。 B1B4全部停止工作时的H桥简图 B1B4全部工作时的H桥简图 图5.5 全桥驱动原理 2 5.5 动力电机驱动电路 动力驱动由后轮驱动实现,负责小车的直线方向运动,包括前进和后退,后轮驱动电路是一个全桥驱动电路,如图5-12所示:Q1、Q2、Q3、Q4四个三极管组成四个桥臂,Q1和Q4组成一组,Q2和Q3组成一组,Q5控制Q2、Q3的导通与关断,Q6控制Q1和Q4的导通与关断,而Q5、Q6由IOB9和IOB8控制,这样就可以通过IOB8和IOB9控制四个桥臂的导通与关断控制后轮电机的运行状态,使之正转反转或者停转,进而控制小车的前进和后退。 图5.6 后轮电机驱动电路当IOB8为高电平、IOB9为低电平时Q1和Q4导通,Q2和Q3截止,后轮电机正转,小车前进;反之当IOB8为低电平、IOB9为高电平时Q1和Q4截止,Q2和Q3导通,后轮电机反转,小车倒退;而当IOB8、IOB9同为低电平时Q1、Q2、Q3和Q4都截止,后轮电机停转,小车停止运动。 注意:IOB8和IOB9不能同时置高电平,这样会造成后轮驱动全桥短路现象。 5.6 方向电机控制电路 方向控制由前轮驱动实现,包括左转和右转,前轮驱动电路也是一个全桥驱动电路,如图5-12所示:Q7、Q8、Q9、Q10四个三极管组成四个桥臂,Q7和Q10组成一组,Q8和Q9组成一组,Q11控制Q8、Q9的导通与关断,Q12控制Q7和Q10的导通与关断,而Q11、Q12由IOB10和IOB11控制,这样就可以通过IOB10和IOB11控制前轮电机的正转和反转,进而控制小车的左转和右转。 图5.7 前轮电机驱动电路 当IOB10为高电平、IOB11为低电平时Q8和Q9导通,Q7和Q10截止,前轮电机正转,小车前轮朝左偏转;反之当IOB10为低电平、IOB11为高电平时Q8和Q9截止,Q7和Q10导通,前轮电机反转,小车前轮朝右偏转;而当IOB10、IOB11同为低电平时Q8和Q9截止,Q7和Q10也截止,前轮电机停转,在弹簧作用下前轮被拉回到中间位置,保持直向。 注意:IOB10、IOB11不能同时为高电平,这样会造成前轮驱动全桥的桥臂短路。 结合以上对前轮和后轮的状态分析,得到小车的运行状态与输入的对照表,如下表所示: 表5.1 基本的输入与小车运动状态对照表 另外还有一些不常用的运行状态,比如右后转、左后转等,结合以上对前轮和后轮的状态分析,其端口对照如表5.2所示: 表5.2 输入与小车的运动状态对照表 注意:为了小车的安全请不要出现以下两种组合情况: 表5.3 禁止的输入状态列表 第6章 系统软件设计 6.1 系统的总体程序流程 系统的总体程序流程如图6.1所示 图6.1 系统总体流程图语音识别小车的主程序流程如图 6.1所示.分为四大部分:初始化部分、训练部分、识别部分、重训操作。 初始化部分:初始化操作将 IOB8IOB11 设置为输出端,用以控制电机。必要时还要有对应的输入端设置和PWM 端口设置等。 训练部分:训练部分完成的工作就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到FLASH,在以后使用时不需要 重新训练;如果已经训练过会把存储在FLASH 中的模型调出来装载到辨识器中。 识别部分:在识别环节当中,如果辨识结果是名字,停止当前的动作并进入待命状态,然后等待动作命令。如果辨识结果为动作指令小车会语音告知相应动作并执行该动作,在运动过程中可以通过呼叫小车的名字使小车停下来。 重训操作:考虑到有重新训练的需求,设置了重新训练的按键(61 板的KEY3 ),循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位(0xe000 单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为0xffff 时会要求重新对其进行训练。下面详细介绍以上提到的子程序。6.2 语音识别的原理简介在介绍子程序之前首先介绍一下语音识别的原理。语音识别主要分为“训练”和“识别”两个阶段。训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。 语音识别的具体流程如图图6.2 语音识别流程说明框图6.3 训练子程序当程序检测到训练标志位BS_Flag 内容为0xffff,就会要求操作者对它进行训练操作,训练操作的过程如图 6.3所示:训练采用两次训练获取结果的方式,以训练名字为例:小车首先会提示:给我取个名字吧,这时你可以告诉它一个名字(比如Jack );然后它会提示:请再说一遍,这时再次告诉它名字(Jack),如果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建立模型,小车会告知失败的原因并要求重新训练。成功训练名称后会给出下一条待训练指令提示音:前进,参照名称训练方式训练前进指令。依次训练小车的名称前进指令倒车指令左转指令右转指令,全部训练成功子程序返回,训练结束。 图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.4 语音识别子程序 语音识别流程如图 6.4所示:首先获取辨识器的辨识结果,判断是否有语音触发,如果有语音触发则会返回识别结果的ID 号,ID 号对应名称或者对应不同的动作。如果ID 号为名称,则结束运动 (如果当前在运动状态),进入待命状态,等待下一次的指令触发;如果 ID 号为动作,则语音告知将要执行的动作,并执行该动作。 图6.4 语音识别部分流程图6.5 动作子程序 动作子程序包括:前进、倒车、左拐、右拐、停车子程序。 前进:由小车的结构原理和驱动电路分析知:只要IOB8 为高电平,IOB9,IOB10,IOB11 全部为低电平即可实现小车的前进。前进子程序包括语音提示、置端口数据、启动定时器操作。 void GoAhead() /前进 PlaySnd(S_ACT1,3); /语音提示 *P_IOB_Data=0x0100; /前进 *P_INT_Mask |= 0x0004; /开2Hz中断 _asm(int fiq,irq); 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; /清定时器 右转:由小车的结构原理分析和驱动电路分析知:小车右转需要两个条件: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.6 中断子程序 虽然已经有了前进、后退以及停车 (通过直接呼叫小车的名字使其停车)等语音控制指令,但是考虑环境的干扰因素,小车运行时的噪音影响和有效距离的限制,小车运行后可能接收不到语音指令而一直运行。为了防止出现这种情况,加入了时间控制,在启动小车运行的同时启动定时器,定时器时间到停止小车的运行,该定时器借助于 2Hz 时基中断完成,图 12.14 所示为该程序的流程图。可以在程序中修改uiTimeset 参数来控制运行时间,当uiTimeset=2 时,运行时间为 1s,以此类推。 图6.5 2Hz定时中断子函数 6.7 程序中需要说明的几个问题 在程序中有几个地方不易理解,需要特别说明一下: 1.小车有没有被训练过是怎么知道的? 在这里利用了一个特殊的Flash单元,语音模型存储区首单元(该示例程序中为0xe000单元)。当Flash在初始化以后,或者在擦除后为0xffff,在成功训练并存储后为0x0055(该值由辨识器自动生成)。这样就可以根据这个单元的值来判断是否经过训练。 2.为什么已经训练过的系统在重新运行时还要进行模型装载? 在首次训练完成之后,辨识器中保存着训练的模型,但是系统一旦复位辨识器中的模型就会丢失,所以在重新运行时必须把存储在Flash中的语音模型装载到辨识器(RAM)中去。 3.在转弯时为什么前轮要先做一个反方向的摆动?这是为了克服车体的限制,由于前轮电机的驱动能力有限,有时会出现前轮偏转不到位的情况,所以在转弯前首先让前轮朝反方向摆动,然后再朝目标方向摆动。这样前轮的摆动范围更大,惯性更大,摆幅也最大,能更好实现转弯。 4.关于语音的一些具体问题,关于语音的一些具体问题请参看SPCE061A相关书籍中关于语音的详细介绍。 第7章 系统开发环境61 板的开发是通过下载线(EZ_PROBE)或在线调试器(PROBE)实现的。用它可以替代在单片机应用项目的开发过程中常用的两件工具硬件在线实时仿真器和程序烧写器。他们都利用了SPCE061A 芯片内置的在线仿真电路ICE(In-Circuit Emulator)和凌阳公司的在线串行编程技术。EZ_PROBE 和PROBE 均工作于凌阳IDE 集成开发环境软件包下,他们对应的5 芯的仿真头分别连接到61 板的缓冲电路输入管脚和SPCE061A 芯片相应管脚上,实现在目标电路板上的CPU(SPCE061A)调试、运行用户编制的程序;另一头是标准25 针打印机接口,直接连接到计算机打印口与上位机通讯,在计算机IDE 集成开发环境软件包下,完成在线调试功能。EZ_PROBE 和PROBE 不同的是在IDE 集成开发环境下需要选择当前是使用哪一种方式进行调试,具体操作见图1.6,其中PROBE 共有三种选择方式:采用自动方式调试可选Auto;采用PROBE 调试可选PRINTER_PROBE;采用EZ_PROBE 调试可EZ_PROBE 即可。第8章 语音小车的使用8.1 连接硬件 采用普通61板(排针在61板正面)控制板的J5焊接10PIN排针,用10PIN排线将61板的J7(IOBH)与控制板的J5连接,连接时注意方向。最后把喇叭接好,小车的硬件连接就完成了。 8.2 代码下载 硬件连接完成之后,检查无误,接下来就可以下载程序了。具体的步骤为: 第一步:打开集成开发环境,打开“Car_Demo.spj”文件,编译链接。(注意:如果看不到Car_Demo.spj,请在弹出的对话框中选择打开类型为spj或者所有文件) 第二步:点击菜单ProjectSelect Body,或者直接点击图标打开如图所示的对话框: 第三步:在弹出的对话框中选择Body Name为SPCE060A_061A,选择Probe为Auto,点击OK按钮确定。第四步:点击IDE工具栏上的图标,选择Use ICE模式8.3 训练小车 成功下载程序以后,去掉下载线并复位系统(如果使用EZ-Probe还应将Probe选择跳线S5拔去),小车就会提示对它进行训练。训练采用应答式训练,每条指令的训练次数为两次,每一条命令的训练过程都是一样的,以“前进”为例说明: 步骤一:小车提示“前进”; 步骤二:告诉小车“前进”; 步骤三:小车提示“请再说一遍”(重复训练提示音); 步骤四:再次告诉小车“前进”(重复训练一次)。 这是一个完整的训练过程,如果训练成功,小车会自动进入下一条指令的训练,并会提示下一条指令对应的动作;如果没有训练成功,小车会提示“说什么暗语呀”或者“没有听到任何声音”等信息,这样的话就要重复刚才所说的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论