【《语音控制的智能车系统设计与实现》16000字】_第1页
【《语音控制的智能车系统设计与实现》16000字】_第2页
【《语音控制的智能车系统设计与实现》16000字】_第3页
【《语音控制的智能车系统设计与实现》16000字】_第4页
【《语音控制的智能车系统设计与实现》16000字】_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

[4]的设计中则直接使用可以进行语音识别的单片机,使用的SPCE061A单片机作为控制器,但是只用于完成语音识别,利用无线模块进行和51单片机的通信,51单片机主要负责小车的控制,这种将语音功能和小车控制功能分隔开的思想值得借鉴。在这些研究设计文献中,都对实现方案以及所用的单片机或者芯片进行了不同的选择,通过这些经验初步了解本设计所需要实现的功能以及可选择的方案,可以知道如何驱动电机,选择什么样的电机驱动模块,如何去实现语音识别这个最为主要的功能,是否需要是使用通信模块,对这些有了基本的认识之后,从而清楚自己在设计中的思路以及对所用到的工具还有实现的方法进行初步的整理,使得自己在系统设计的过程中尽可能的有一定的初步理论验证,在接下来的动手设计中少走一些弯路。2.2语音控制智能车系统概述语音控制的智能车系统原理是利用语音信号中的信息进行处理,转换成控制智能车运动及功能的控制指令,从而设计并实现语音控制的智能车。该系统一般包含两大系统,即安卓手机语音识别与处理系统和智能车系统。安卓手机软件接收人发出语音信号并进行语音识别将其转换成文本进行处理分析,然后根据语音信息内容利用手机蓝牙发送不同的与之相对应的指令给智能车系统,智能车根据不同的蓝牙指令作出不同的反应,控制智能车的运动以及功能,利用蓝牙模块发送对应的数据到手机软件上,从而实现语音控制智能车。语音控制智能车有以下几个方面的发展趋势:(1)语音指令越来越多,语音控制的智能车正朝着功能更加多样化的方向发展,通过对智能车系统的不断升级完善,智能车所能受语音控制的功能也会越来越多,功能多样化的好处是有利于实现多功能甚至是几个功能组合成的复杂功能,增加了功能的同时也减少了原本需要多辆智能车才能实现同样功能的使用。(2)能够识别出相同语音信息指令的语音,更加的智能化。语音识别功能从单个固定的语音控制文本向多个相同含义语音控制文本发展,进一步发展成为只要是包含相同语音控制信息指令的语音都可以实现语音识别,实现更为智能化的语音识别功能。(3)采用各种新技术增强智能车的性能,例如使用物联网技术,控制多个智能车,系统性的分配智能车任务,使得智能车可以更加高效的运行。2.3本设计方案思路本设计以实现语音控制智能车的运动和功能为主要目的;以语音识别,各个分系统通信和智能车运动和功能实现为主要的设计内容。在语音识别方面开发安卓应用程序,并设计信息处理功能和程序界面设计;在智能车运动方面,要解决智能车供电问题,电机的驱动问题,还要考虑到智能车速度控制的问题以及智能车系统中各种功能模块不会产生很大的冲突;在多模块共同工作问题的处理办法上,对智能车系统再次进行分割,主要分为智能车运动系统和智能车控制与通信系统,使用两个单片机对应负责这两个系统(详见第二章的硬件设计部分),对智能车系统进行功能上的划分:单片机之间采用串口通信,单片机与安卓手机软件采用蓝牙通信。2.4研发内容和技术关键(1)安卓手机软件开发;(2)手机软件上语音识别与处理功能实现;(3)智能车的运动及控制;(4)安卓手机软件与智能车的数据通信。2.5主要功能要求(1)实现语音识别与控制功能(以下功能都是基于语音控制实现);(2)智能车根据语音指令做到向左行驶、向右行驶、向前行驶和向后行驶;(3)实现智能车的速度控制功能;(4)实现小车的循迹功能,能够自动防止撞到障碍物。3语音控制的智能车总体系统方案设计语音控制的智能车系统是通过语音的方式远距离控制智能车运动与功能的系统,主要分为语音识别与处理与智能车运动与控制部分,本章主要对整体方案进行初步的规划、比较、论证。最终确立一种控制便捷、稳定、语音识别率高的语音控制智能车的方案,满足该设计的功能要求,并具有一定的自动化和智能化。3.1语音识别实现方案的拟定和比较语音识别是整个语音控制的智能车系统的关键所在,语音识别的成功率和正确率关系着控制智能车运动和功能的效果好坏,经过阅读相关文献,目前有以下三种方案。方案一:采用凌阳16位SPCE061A语音控制单片机实现。在一块单片机上同时实现语音识别功能和智能车的运动与控制系统,性能强大,处理速度快,对于复杂的信号能够在较短的的时间内完成那处理,可以通过编程对音频信号进行处理,实现语音识别的功能,是利用处理数字信号实现语音识别的一种比较好的选择。方案二:采用MCS-51系列单片机实现。由于该系列单片机无法利用自身的芯片实现语音识别功能,但是可以与语音识别模块连接通信后,对数据进行处理后实现自身所不具有的语音识别功能,因此需要利用外部模块拓展功能,通常使用LD3320非特定人声识别模块,但这样必然会造成端口的资源紧张,而且其他功能也会在语音识别过程中受到影响。由于语音识别和智能车运动与控制的一体化方案也就导致语音识别的正确率和识别效果会受到人声在传递至智能车语音识别模块衰减的影响,因此如果想达到比较好的控制效果,人与智能车的距离通常不能太远,大大限制了智能车的功能运行,也使得控制智能车变得不便捷。方案三:使用安卓语音识别与处理软件实现。如今手机的语音识别功能日渐强大,识别精度高,识别效果好,并采用蓝牙与智能车进行通信和控制,相比较上面两种方案语音控制的距离会更加的远,识别的数量也会更多,也具有一定的可移植性,同时基于手机界面可实现一定的交互性,使得整个系统更具智能性,也更加符合本设计的需求。因此本设计采用安卓手机语音识别与处理实现语音识别并控制智能车运动与功能的方案。3.2智能车系统方案的拟定和比较方案一:使用STC89C52RC单片机实现。需要定时器中断实现智能车的驱动电机,需要串口中断和定时器中断,串口与蓝牙模块连接实现与手机软件的通信,还需要使用外部中断及端口实现智能车的速度测量,使用的中断较多而且中断工作时由于存在中断优先级使得各个中断间会有一定的影响。方案二:使用STC12C5A60S2单片机(简称STC12单片机)和STC89C52RC单片机(简称STC89单片机)实现。将智能车系统按功能分为两个子系统,STC12单片机负责智能车的通信和控制系统,STC89单片机负责智能车的运动系统。利用STC12单片机的双串口,智能车通信与控制系统的STC12单片机其中一个串口与蓝牙模块相连接,实现安卓手机的蓝牙通信以及数据传输,STC12单片机的另一个串口和STC89单片机的串口相连接,实现智能车的通信与控制系统对智能车运动系统的通信与控制,并且将智能车系统的功能模块,例如循迹模块、测速模块等等,与STC12单片机相连,实现基于智能车运动下的功能。将智能车功能中的运动功能和其他所需要的功能划分开来,既使得各个模块运行时降低相互间的影响,减少单片机的不断中断,也使得整个智能车的系统框架变得清晰。通过比较和验证两种方案,本设计选择了方案二完成智能车系统中运动、控制、通信的实现。3.3语音控制智能车总系统方案的确定经过比较与方案的验证,最终确定语音控制的智能车的总体方案为:选择语音识别方案中的方案一:开发安卓手机软件作为客户端,实现语音识别与处理,利用手机蓝牙与智能车进行通信,完成数据传输和指令控制。选择智能车系统方案中的方案二:智能车作为终端,使用STC12单片机作为智能车的总控制端和与安卓软件通信端,并与STC89单片机进行通信,完成对应的语音指令所需要的智能车运动。使用STC89单片机作为智能车的运动的控制端,负责智能车的运动。语音控制的智能车总系统框图如图3-1。图3—1语音控制的智能车总系统框图语音控制的智能车系统框图如图3—1所示,整个设计的设计思路是将整个系统按照功能进行划分,大致思路是手机软件进行语音识别,STC89单片机进行智能车的各种运动功能,STC12单片机负责数据的收集和通信,也就是作为智能车的总控制系统,主要接收手机传来的控制指令,并下达指令给STC89单片机,完成整个过程的控制。因此有两个通信过程,两个单片机使用串口通信,STC12单片机则进行远距离通信。整个语音控制的智能车系统分为客户端和终端两个部分。客户端主要进行数据的收发处理,语音识别,并将信息显示在手机界面上,终端包含智能车通信与控制系统和智能车运动系统,智能车通信与控制系统主要的模块有:数码管模块、测速模块、蓝牙无线通信模块。智能车运动系统的主要模块有:数码管模块、循迹模块、避障模块、L298N电机驱动模块、电机模块、电源模块。主要的通信过程:STC12单片机实时监测智能车速度,并发送至客户端,手机与STC12单片机进行语音控制指令通信,STC12单片机对语音指令信息进行处理后对STC89单片机下达智能车所需要的运动控制指令,完成相应的功能,从而实现语音控制的智能车过程。首先安卓手机软件为客户端,主要负责的功能:(1)基于安卓手机系统语音识别引擎实现语音识别功能;(2)基于安卓手机蓝牙实现数据的接收和发送;(3)基于开发安卓手机软件对各种数据进行处理,利用手机界面实现交互功能。智能车为终端,智能车系统包含两个分系统(智能车系统中硬件的连接详见第四章硬件设计部分,智能车语音控制与处理系统中软件流程与逻辑详见第五章软件设计部分)。智能车通信与控制系统主要负责的功能:(1)智能车与安卓手机软件基于蓝牙的数据通信控制功能;(2)STC12单片机和STC89单片机基于单片机串口通信控制功能;(3)智能车测速功能;(4)智能车速度显示功能智能车运动系统主要负责的功能:(1)智能车的直行、退后、左转、右转、停止;(2)智能车速度控制;(3)智能车循迹功能;(4)智能车避障功能;(5)智能车状态显示功能。4语音控制智能车硬件系统设计4.1语音控制的智能车的硬件组成本设计所用到的硬件主要包括:STC89C52RC单片机、STC12C5A60S2单片机、小车底盘(小车底盘包括直流减速电机、小车轮胎、电源供电系统)、L298N电机驱动模块、速度测量模块、红外避障模块、数码管显示模块、循迹模块、蓝牙通信模块。硬件系统框图如图4—1所示。图4—1硬件系统框图STC12单片机的串口2连接蓝牙模块,串口1与STC89的串口相连,测速模块使用外部中断的引脚,实现计数,并连接数码管模块,用于速度值的显示。STC89与L298N电机驱动模块连接,电机驱动模块连接电机,STC89单片机输出PWM(Pulsewidthmodulation,脉冲宽度调制)波对智能车速度进行控制。STC89连接循迹模块、避障模块、数码管模块,其中数码管模块用于负责智能车的状态显示(功能模块具体实现详见第五章软件设计)。电源模块对两个单片机板进行供电。4.2智能车运动控制芯片STC89C52RCSTC89C52RC单片机是一款在消耗电量十分低的情况下同时有着较强性能的一款8位的微控制器,相比较与传统的51单片机,STC89C52RC单片机做了很多的改进,在程序的存储空间和数据的存储空间都得到了增强,也可以称为性能增强的芯片是8051的单片机,并且通过编程实现功能的代码同样也可以用在8051的单片机上,这些改进的地方都使得在嵌入式控制系统的应用中提供了更多的帮助和解决方法。具有以下的特点:STC89C52RC单片机有三个定时器,相比较STC89C51单片机(简称51单片机)多出来一个定时器T2,EEPROM的存储空间为4K字节,数据的存储空间为512字节,程序的存储空间为8K字节。STC89C52RC单片机还有一个双全工的串口,可以用来串口通信,也可以利用其进行烧录程序,并且STC89C52RC单片机还具有空闲模式,微处理器不工作,而继续工作的有计数器,也可以让串口工作。STC89C52RC芯片引脚图如图4—2所示。图4—2STC89C52RC芯片引脚图4.3智能车通信与控制芯片STC12C5A60S2STC12C5A60S2单片机可以在复杂环境下保证程序的正常运行,也可以十分快速的处理所需要的接受到的信号,同时保证耗电量在一个非常低的水平。在STC12C5A60S2单片机上所实现的功能所需要的运行的代码程序同样也可以在一般的51单片机上进行稍微的适配后运行实现相同的功能,同时速度可以达到一般的51单片机的10倍左右,STC12C5A60S2单片机(简称STC12单片机)一共有4个定时器,定时器的位数是16,。和STC89C52RC单片机有所不同之处,STC12单片机只有T0、T1两个定时器,定时器的位数是16,没有T2定时器,同时2路PCA(Programmable Counter Array,可编程计数阵列)模块进行寄存器的配置后也可以实现两个定时器,定时器的位数是16,共计四个定时器。虽然少了一个定时器,没有办法利用这个少的作为波特率发生器,但是STC12单片机拥有一个波特率发生器,而且是进行编程后可以自己单独工作的,在进行串口通信时,作波特率发生器。STC12单片机的有两路PCA,也可以作为2路PWM波输出,也可以配置寄存器后等同于两个定时器,也可以进行寄存器配制后等同于两个外部中断,在做外部中断时,会出现外部中断信号由低电平变成高电平的中断和外部中断信号由高电平变成低电平的中断,这两种中断PCA在进行寄存器配制后都是可以识别出来的,方便使用者编程,也可以当作两路D/A使用。STC12单片机也有只用于A/D转换的电路,电路一共有8路,ADC所能到达的精度高达10位,并且转换速度也十分的快。STC12单片机具有一个串口,工作方式是全双工异步通信,因为STC12单片机是高速的单片机,所以只要处理速度足够快,可以利用定时器进行适当的控制实现许多的串口。晶振选择:由于语音控制的智能车系统是通过串口和蓝牙通信,蓝牙模块和安卓手机软件远距离无线通信,因此在波特率的设置中,为了有更好的通信效果,产生较少的波特率误差,需要产生波特率,这时候就要定时器进行配合和设置。而定时器的效果和单片机的晶振有关,如果采用12M的晶振,然后用定时器配置出9600的波特率,计算得出的误差会比较大,但如果选择11.0592M的晶振,则基本上没有误差。因此选择的单片机板晶振都为11.0592M。4.4电机驱动L298N模块L298N模块是可以实现电机驱动的功能,驱动的电机是直流环境下进行工作使用的芯片是L298N芯片,利用两个H形状的类似于桥的电路形成的芯片,用于将直流电机进行工作,驱动板大概重33g。L298N的实物图如图4—3所示。使用说明:首先介绍一下驱动板主要的使用方法,L298N驱动板可以驱动直流电机,可以驱动一个直流电机,也可以再增加一个直流电机,两个电机互相不会影响不过此时的使能端ENA、ENB必须为高电平,否则驱动板则不会正常工作,也没有能力使得直流电机工作。L298N电机驱动板电路原理图如图4—4所示,控制与电机状态表如表4-1所示。直流电机的驱动:该驱动板可驱动两路直流电机,使能端ENA、ENB为高电平时有效,控制方式及直流电机状态图所示。因为两路的驱动方式都是相同的,因此讲述一边的控制方式,首先驱动板正常工作需要使能端为高电平,此时控制端口IN1、IN2才能够正常工作,IN1、IN2相当于控制电机的两个引脚为高电平还是低电平,例如ENA为高电平,IN1为高电平,IN2为低电平时,并且电机和驱动板连接好后,电机便会反转,同样的另一边的电机也可以根据这种控制方式实现电机的正转等状态,通过两个电机的配合实现智能车的向各个方向的运动。如果要对直流电机的转速可以发生改变,即利用PWM进行控制智能车单位时间所行驶的距离,可以对改变电机的控制端的状态,对IN1、IN2进行设置,清楚每一个状态下电机会往对应状态下的转动的方向,然后在使能端,也就是ENA处,将单片机产生的PWM脉冲输入进去,从而实现电机工作时间的改变、电机转速的改变、智能车速度的改变。图4—3L298N电机驱动板实物图图4—4L298N电机驱动板电路原理图表4—1控制与电机状态表4.5测速模块SD-1/2测速传感器是利用检测红外射线中断,根据检测到的不同状态,从而决定输出高电平还是低电平,当检测到障碍物时,输出电平信号为高,没有检测到妨碍红外射线传播的物体,或者检测范围内没有检测到妨碍红外射线传播的物体时,在电路工作和处理后输出电平信号为低。同时测速模块还有LED(light-emittingdiode,发光二极管)的显示功能,当检测到红外射线中断,LED指示灯会熄灭,当检测到红外射线正常传播时,LED指示灯会亮,方便使用者的调试。本设计使用测速模块经过对数据处理后,能够得到智能车的速度数据,对于使用者能都更为清楚的知道对于智能车的速度控制效果,本设计使用该模块既增加了该设计的功能,也使得智能车的速度控制得到反馈,使得控制效果更好。SD-1/2测速传感器实物图如图4—5所示,SD-1/2测速传感器电路原理图如图4-6所示。图4—5SD-1/2测速传感器实物图图4—6SD-1/2测速传感器电路原理图4.6蓝牙通信模块概述:DX-BT04-A蓝牙模块工作时所需要的电量较少的优点,而且能够快速的接收和发送信号,十分的灵敏,只需要一些简单的器件组合便可以充分发挥功能,操作起来也十分的简单便捷。通过蓝牙通信模块,利用其可以进行无线通信的优势完成STC12单片机和手机软件的通信,既保证了语音识别后指令的正常控制,还扩大了语音控制的的范围,本设计使用该模块后充分发挥无线通信的优点,使得整个设计突出可远距离控制的优势。蓝牙通信模块实物图如图4—7所示,应用电路图如图4—8所示。图4—7蓝牙通信模块实物图图4—8应用电路图5软件设计因为本设计方案选择的是单片机板和安卓手机软件组合设计和实现语音控制的智能车,并且使用了两块单片机板,因此本章节主要讲述两个单片机系统的软件设计以及开发安卓软件的软件设计。首先介绍一下单片机代码编程软件和安卓开发环境,然后开始介绍终端中智能车通信控制系统的软件设计、智能车运动系统的软件设计和客户端中安卓手机软件的系统设计,最后详细讲述上述三个系统中主要程序的逻辑与设计。5.1编程软件介绍5.1.1开发软件KeiluVision5与STC-ISP的介绍本次毕业设计所需要的智能车系统的程序开发需要进行软件编程,因此需要一款功能强大,简洁好用的开发软件,而所编写的代码基本上是用的C语言,因此使用Keil软件,并且使用的是C51的版本,同时在代码编写完成后,需要另一款软件将程序烧录进单片机中,从而让单片机按照所编写的程序进行工作运行,实现所需要的功能,因此选择了STC-ISP软件。接下来对这两个软件做一个简单的介绍。系统概述:KeilC51拥有着十分强大的功能,而且功能的种类也十分多,还有这各种各样的函数组成的库,并着有着优秀的界面,使得在操作上基本上和操作电脑界面一样,成为了现在单片机开发时需要对代码进行编程的使用最多的代码编写软件。KeilC51运行是需要合适的开发环境的,需要在Windows系统上安装软件并进行相应的配置,软件中代码的编写主要是通过.c文件实现的,我们建立一个.c文件后在该文件中将我们写的代码进行编译,经过软件一系列的处理,看是否有错误,在没有错误之后会提示我们,之后如果我们想验证代码的正确与否,可以使用软件的调试功能,或者生成.hex文件,利用程序烧写程序,将生成的.hex文件下载到单片机上。该软件因为使用的是C语言的编程,利用C语言的优点,可以有许多的函数可以使用,实现各种各样的功能,而且还因为C语言有着很好的可以在其他地方稍作修改就可以使用的特点,使得这个软件成为非常适合编写代码并且有一定的纠错和调试的软件。STC-ISP软件的主要作用是将单片机代码编写软件编写好的对应程序下载到单片机上,是专门开发出来的软件,为了让STC系列的单片机可以进行程序文件的烧录,基本上只要是STC单片机,该软件都可以正常工作,并且操作也不复杂,下载的流程也十分的简单,成为开发者的主要的使用的软件。STC-ISP的软件操作界面如图5—1所示。图5—1软件操作界面图5.1.2安卓开发编程环境在安卓开发的编程环境中,我选择了MIT开发的图形化编程软件APPInventor2。作为AppInventor新版本的APPInventor2,完全基于浏览器,开发者除了浏览器不需要额外安装任何软件。图形化的界面、云积木的方式,使得安卓软件开发变得便利简单,使用起来也不会有太大的难度,做出的功能也能够满足基本的设计要求,而且网站上也具有调试功能,通过安装调试助手,将开发的程序运行在调试助手上,省去了每次都要将程序打包,安装,再进行验证调试的步骤,而且也能实时的报错提示,对开发者找到软件的错误所在提供了帮助。5.2智能车通信与控制系统软件设计智能车通信与控制系统是基于STC12单片机实现,因此该系统设计的主程序是完成STC12单片机与STC89单片机的串口通信、STC12单片机与手机软件通信和实现使用智能车的功能模块:测速模块、数码管显示模块、红外避障模块和循迹模块。5.2.1工作流程图5—2STC12单片机系统流程图STC12单片机系统流程图如图5—2所示。STC12单片机板上电启动后,首先对测速功能、两个串口通信功能所需要的中断和一些定时器以及寄存器进行配置和初始化,等待手机连接上单片机板上的蓝牙,建立起通信后,开始接收测速模块的速度数据信息显示在数码管上,并通过蓝牙发送速度数据信息至手机,并时刻监测并验证是否手机发来的指令信息是否正确,当接受到正确的指令信息时,单片机会根据程序中的状态机机制将发送对应指令信息的控制指令至STC89单片机板,并回复客户端对应指令操作已完成。如果所接收到的控制指令需要小车的一些信息,便会发送相关数据,如进行速度设置后需要将目前速度值发送至客户端,该系统会发送当前速度设置值。5.2.2串口通信和蓝牙串口通信软件设计因为STC12单片机有两个串口,可用于蓝牙通信以及和STC89单片机的串口通信,首先对串口所需要的波特率进行配置和初始化,利用单片机上的独立波特率发生器作为波特率的发生器,两个串口可使用同一个波特率,串口初始化程序如下:对于数据处理,在串口2中断中进行数据的接收,设置每一次接收到的指令字节为3,并判断接受的数据是否正确,如果正确,则保存至字符串数组,并将设置接收完毕标志位和接收正确标志位,串口中断数据接收判断程序如下:5.2.3速度测量功能设计为了能够得知智能车的速度,以便我们更好的控制智能车的速度,利用速度测量模块和固定在电机上并随之同步运动的码盘,电机每转一圈,测量模块输出20个低电平信号,利用STC12单片机设置单位时间为1s,获得接收到的脉冲信号个数以及利用轮胎的周长,经过计算得出1s内智能车行驶的路程,从而得到智能车的速度相关数据。定时器和外部中断设置程序如下:5.3智能车运动系统软件设计5.3.1工作流程STC89单片机板上电启动后,首先对PWM波速度控制功能,串口通信功能所需要的中断和一些定时器以及寄存器进行配置和初始化,并设置一些数据的初始值,如智能车的速度、当前智能车的状态。建立起和STC12单片机板的通信后,智能车处于停止状态,等待STC12单片机板发送控制指令,接收到指令后,利用程序中的状态机机制,完成对应功能,如前进、后退、左转、右转、停止、循迹功能、速度控制功能和避障功能,并在数码管上显示不同的数字代表处于不同的状态下。STC89单片机系统流程图如图5—3所示。图5—3STC89单片机系统流程图5.3.2电机驱动与速度控制设计因为L298N电机驱动模块(简称驱动板)有A、B通道使能端(简称使能端)和四个单片机IO控制输入端(简称输入端),只有两个使能端为高电平时,驱动板才可以通过输出端口驱动两路的直流电机,因此对于速度的控制有两种方案:第一种方案是STC89单片机输出四路PWM波输出至驱动板的输入端,第二种方案是STC89单片机输出两路PWM波输出至驱动板的使能端。第二种方案仅仅需要两路PWM波便可以实现对智能车速度控制,因此选择方案二实现速度控制。PWM波输出实现程序如下:首先利用对定时器进行初始化,设置每1ms进行一次定时器中断,在定时器中断程序中对定时器的寄存器再次重新赋值再次开始计时,并记录中断次数,通过中断次数的处理获得更为准确并且足够长的时间,从而实现PWM波的周期、占空比的设置。速度控制程序如下(左右电机速度控制程序基本相同,只需要介绍一个程序):程序说明:通过设置20ms周期的时间,即定时器1ms的中断次数为20次时,将次数赋值为0,重新计数,我们通过调节占空比(push_val_right),当中断次数小于或等于控制占空比的变量值时,使得控制右电机的使能端为高电平,当中断次数大于控制占空比的变量值时,使得控制右电机的使能端为低电平,从而控制驱动板的电机驱动是否工作,从而实现PWM波的输出,并利用驱动板的四个输入端实现电机的正转、反转、停止,通过左右电机的配合实现智能车的左右转、直行和停止,并调节PWM波的占空比,实现控制电机一个工作周期内的工作时间,从而实现对智能车的速度控制。5.4安卓手机软件系统设计5.4.1工作流程手机软件流程图如图5—4所示,手机客户端主界面如图5—5所示,手动模式界面图如图5—6所示。图5—4手机软件流程图首先等待蓝牙连接按钮按下,选择连接的蓝牙,连接成功后会在界面上显示蓝牙的信息以及连接成功的提示,接收到STC12单片机上蓝牙模块发送来的智能车速度数据进行处理并显示在客户端界面上,当开始按键按下,调用语音识别等待语音识别结束后,分析处理语音信息,利用蓝牙发送对应的指令数据,接收处理智能车回复的数据并显示在客户端对应界面上,当手动模式按钮按下时,会换到界面2,显示手动模式下的按钮,(与智能车的通信会中断一下后自动重新连接)相应指令按下后发送对应指令至智能车,实现智能车手动按钮控制,按返回按钮回到主界面。手机客户端主界面主要分为四个区域:蓝牙连接与断开区、蓝牙信息显示区、速度显示与速度手动控制区、用户交互与通信区、功能区。蓝牙连接与断开区负责手机蓝牙与智能车系统上蓝牙模块的连接与断开,并在蓝牙信息显示区显示蓝牙信息及是否连接成功提示。可通过调节速度显示与速度手动控制区的水平滑动条,根据滑块所在位置设置智能车不同的速度档位,接受到智能车系统发来的相关速度数据,安卓手机进行处理后,换算成智能车的速度数据,在速度显示与速度手动控制区中显示。用户交互和通信区则负责实现交互信息的显示以及显示智能车系统发送过来的数据,也方便了后续的调试,在与智能车建立起蓝牙通信后,便会在用户交互和通信区提示用户可选用的功能,即对智能车的速度控制、循迹模式以及运动控制,用户可以点击功能区的开始按钮进行语音指令输入,也会显示智能车发送过来的通信数据。最后的功能区主要包含两个功能:语音识别功能和手动遥控智能车功能,当开始按钮按下,启动语音识别功能,根据语音指令调用不同的功能,并将语音信息显示在用户交互与功能区,当手动模式按钮按下时则会跳转到界面2,即手动模式界面,在手动模式界面中主要为三个区:返回区、蓝牙信息区和手动控制区。在返回区中主要负责退出手动控制智能车功能,返回主界面。当返回按钮按下时,返回主界面,退出手动控制智能车功能。蓝牙信息区负责显示蓝牙信息和提示是否连接蓝牙成功。手动控制区主要包括五个按钮,负责智能车的运动控制,按下按钮后便会通过蓝牙通信发送对应的控制指令,实现远程手动控制智能车。图5—5手机客户端主界面图图5—6手动模式界面图5.4.2蓝牙连接程序设计主要程序如下:图5—7蓝牙连接程序页面一程序说明:当点击连接按钮时,会获取手机的蓝牙列表供我们选择,当选择完成,并成功连接时会提示我们连接成功,否则则会提示连接失败,连接成功后会将所连接的蓝牙保存至微数据库,方便下次连接,并且显示该蓝牙相关信息,运行主界面函数,提示用户可以选择的功能。5.4.3语音识别程序设计主要程序如下:图5—8蓝牙连接程序页面二图5—9蓝牙连接程序页面三程序说明:当开始按钮按下时,调用语音识别器识别语音,识别结束时调用功能函数,例如前进函数中,判断语音识别器的识别结果是否为前进或者向前,如果是则调用蓝牙发送控制文本。5.4.4手动功能程序设计因为通过语音控制智能车有时候确实很方便,但需要一段时间进行语音识别的处理,因此添加了一个附加功能,基于蓝牙实现手动操控智能车,从而实现基本上较为精准的智能车控制。但实现遥控智能车需要一个手动功能的界面设计,此时出现了一个问题,在界面的转换时,手机与智能车的蓝牙连接会中断,因此需要解决界面变换时智能车与手机的蓝牙通信问题。实现方法:在蓝牙连接程序设计中,将蓝牙的信息保存在了微数据库中,所以可以利用微数据库存储的蓝牙信息,直接选择后连接,从而省去了再次进行选择蓝牙,再次连接蓝牙的重复操作,避免了客户端的重复操作。具体程序如下:图5—10蓝牙连接程序页面四程序说明:当跳转到界面2后,对界面2进行初始化,调用蓝牙连接微数据库中存储的蓝牙信息,如果连接成功设置连接区的文本为蓝牙相关信息,当返回按钮按下时则关闭界面2返回主界面,当前进按钮按下时则调用蓝牙发送对应的控制文本。6制作与调试 6.1硬件系统的连接与调试6.1.1总体特点该系统所涉及的各部分硬件电路,总体的特点是:(1)电路原理简单,所用的器件均为模块化器件。(2)由于使用了两块单片机板,因此分别对两块单片机板分别进行调试,等两快单片机板的功能都基本实现时再进行组装进行整体调试,同时模块和单片机板之间大多使用杜邦线进行连接,要注意连接线是否损坏,影响调试结果判断错误。6.1.2系统划分为方便调试,把智能车系统划按单片机板分成两组:(1)STC89单片机板构成的智能车运动系统一组;(2)STC12单片机板构成的智能车通信与控制系统为一组;6.1.3连接连接前根据各个模块的数据手册以及模块上的引脚说明,对照着程序上所设定的对应的各个模块的引脚接口,进行各个模块的链接,并按照下面所说的基本原则进行连接:(1)按模块一个个进行连接,首先连接模块的供电端和地端,这样保证各模块不会因为接反造成损坏和有正确的工作电压,然后按照单片机手册和各模块手册连接各个引脚;(2)模块连接好后仔细检查一遍,再给单片机上电,防止因为疏忽造成模块甚至是单片机损坏,并对连接最终结果进行记录,这样再接下来需要重新连接时节约大量时间,也可以降低出错率。6.2调试(1)对于单片机板的调试,应充分利用串口,将单片机和电脑连接后,打开我们所使用的烧录软件,利用它可以和单片机进行串口通信的功能实现串口通信,将程序调试信息输出在电脑屏幕上,也可以用串口调试助手模拟指令的发送和数据的接收,分析并验证程序是否正确。在两块单片机板都完成调试后,将两块单片机板连接后进行整体调试,同样利用电脑串口助手和部分调试程序编写,验证两块单片机板间的通信控制是否正常。(2)对于手机软件程序的调试,利用手机调试助手,将开发的软件运行,利用自带的报错提示,并利用手机界面,将所需要验证的信息显示在手机界面上,从而实现程序的调试。(3)最终将三个系统进行最后的调试,在经过前两个的调试后,首先进行STC12单片机和手机软件间的独立调试,也可以利用STC12的双串口,一个与电脑通信,将单片机板的调试信息显示,利用手机界面和自带的报错提示,将手机软件的调试信息显示在手机界面上。实现通信和控制后,将三个系统进行最后的整体调试,验证通信和功能的正常工作。7结论本设计方案达到了任务书的要求,设计并实现了语音控制的智能车,实现了较为完整的语音控制智能车系统的运动和功能:(1)实现了较为准确的语音识别功能,能够识别多条指令,并且能控制智能车的运动状态和功能设置;(2)经过调试,实现智能车的直行、退后、左转、右转、停止等运动功能;(3)实现智能车的沿着特定路线行驶的功能和自动避障功能;(4)实现对智能车的速度测量和速度控制,并显示在客户端界面上。因为时间有限,并且自己的水平也不是非常高,在实现过程中碰到了许多困难,但也积累了许多经验,因此在语音识别功能中,在语音识别指令的数量上和在使用语音识别功能时不受外部环境的影响上仍然需要进行加强,还有着可以继续优化的地方,实现识别更多的语音指令,增强复杂环境下语音识别抗干扰能力。另外在这个系统的进一步的完善和代码的优化方面,由于时间和设备的原因

温馨提示

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

评论

0/150

提交评论