毕业设计 基于单片机的无线语音遥控车的设计

本文详细介绍了基于单片机凌阳SPCE061A的无线语音遥控车的毕业设计,包括硬件方案(遥控器和车体控制板设计)、音频电路、I/O接口、无线通信,以及软件设计(主程序流程和无线发送应答)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于单片机的无线语音遥控车的设计

1 系统硬件设计方案

根据需要,系统硬件拟使用两块PCB板设计。其中一块为语音遥控器,用于搭载凌阳SPCE061A单片机、电源电路、音频电路、I/O电路等外围电路。另一块为车体控制板,用于搭载接口电路,电源电路及电机驱动。本章将对硬件系统各部分作具体分析。

1.1 遥控器硬件设计方案

在无线语音遥控智能车的设计中,凌阳SPCEO61A单片机作为遥控器的主控制器,需要增加一系列的外围电路的支持才能实现音频输入输出和识别,以及语音命令的输出等功能。需要增加的外围电路有:电源电路、MIC输入电路、音频输出电路、无线传输电路、复位电路、I/O接口电路。

1. 电源电路

   凌阳SPCE061A单片机内核和nRF2401模组电源电压要求为3.3V,其他逻辑器件要求5V供电,设计中采用DC9V供电,直流电压先通过LM7805得到5V直流电源为逻辑电路供电,然后通过SPY0029稳压到3.3V,为整个单片机内核和nRF2401供电。另外,在LM7805的前端入一个二极管,目的在于防止电源接反而对整个电路造成损坏。

图1-1 电源电路图

2.音频电路

  1)MIC输入电路

 在使用SPCE061A的语音训练和声音控制的时候,需要使用MIC输入电路将语音信号接收,并传送至SPCE061A进行处理。为提高输入的声音质量,MIC输入电路还应具备一定的滤波降噪功能。电路中的∏性滤波器就能很好的实现这个功能。同时使入电路可以实现自动增益(AGC)控制。其中X1是语音的MIC输入端。

图 1-2 MIC输入电路

2)DAC输出电路

在语音训练的过程中,凌阳SPCE061A需要输出信号提示音,以让训练者了解其工作状态,方便进行语音训练。另外还要播报小车的工作状态。SPCE061A自带双通道DAC

音频输出, DAC1、DAC2转换输出的模拟量电流信号分别通过DAC1和DAC2管脚输出, DAC

输出为电流型输出,所以DAC输出经过SPY0030音频放大,以驱动喇叭放音。这为单片机的音频设计提供了极大方便。在P9上接一个2pin的插针外接喇叭,即可实现提示语音输出功能。DAC电路中,SPY0030是凌阳的一款音频放大芯片,相当于LM386,但是它比LM386音质好,可以工作在2.4-6.0V范围内,最大输出功率可达700mW。

图 1-3 DAC输出电路

3.I/O接口电路

         接口电路凌阳SPCE061A的两路16位I/O接口引出,因为一般逻辑电路都是8位并行总线,所以SPCE061A的I/O接口分为4组,每组8个端口加两个电源线,电源电压可由双刀双掷选择为3.3V或5V。另外,串口和IOB7及IOB10复用,在此设计中用该资源将语音命令传输给串口nRF2401模组进行无线发射。

图1-4 I/O接口电路示意图

1.2车体控制硬件设计方案 

车体控制部分电路主要由nRF2401无线模组、ATMEGA16L最小系统电路、舵机驱动电路和L298N直流电机驱动电路组成。无线模组接收到语音指令后,传递给单片机,然后微处理器根据指令返回不同的响应信号,控制舵机和动力电机做出不同的响应动作。下面详细介绍各部分的电气结构和工作原理。

1.2.1主控制器最小系统

1-6 车体主控制器最小系统图

在上图中,OCR1A和OCR1B为两路16位定时/计数器的输出引脚,能够产生高精度,低频率PWM脉冲信号,占空比1/65535布进可调,近似于连续可调,用来驱动舵机转向。OC2为8位定时/计数器2输出引脚,用来产生高频PWM信号,调节直流驱动电机的转速,占空比1/255布进可调。另外PC0-PC5用来模拟nRF2401的通信时序,传给响应数据或读出语音指令。串口nRF2401无线模组的原理图和此处一样,只是其发射的数据改为ATMEGA16L串口接收到的数据,即SPCE061A串口发出的语音指令。

1.2.2 直流动力电机驱动电路

图1-7  电机驱动电路

 L298N的主要功能和性能参数,前面都已经详细介绍过,在此不再赘述。由于只用到了一个直流动力电机,为了增加驱动能力,我将L298N的两路驱动并联实用,实现方法为,将OUT1和OUT4 并联为OUT1,OUT2和OUT3并联为OUT2,IN1和IN4并联为IN1,IN2和IN3并联为IN2,EnableA和EnableB并联为Enable,则L298的逻辑控制如下表3.1。其中C、D分别为IN1或IN2;L为低电平,H为高电平,※为不管是低电平还是高电平,Ven为Enable上的电压。

表1  L298对直流电机控制的逻辑真值表

输入

输出

Ven=H

C=H;D=L

正转

C=L;D=H

反转

C=D

制动

Ven=L

C=※;D=※

没有输出,电机不工作

1.2.3舵机驱电路

AVR系列高档8位单片机的IO驱动能力很强,无需外接驱动电路,需特殊说明的是舵机的额定电压为6伏,这里采用7.2伏直接供电,虽然超出额定电压,但不会损坏舵机,省掉一个电压转换芯片的同时,还提高了舵机的响应灵敏度。    

2. 系统软件设计方案

2.1 语音遥控器的主程序流程设计

                       

语音遥控器的主程序流程分为四大部分:初始化部分、训练部分、识别部分、无线通信部分和指令响应播报部分。初始化操作将IOB7设置为输入,IOB10设置为输出,然后设置串口控制寄存器,将串口通信参数设置为9600、N、8、1,为向串口无线模组发送数做好准备。同时,初始化DAC1和DAC2准备播放响应指令,初始化T/C为PWM模式,准备对语音数据进行采样。下面详细讨论后三个比较重要部分的软件实现步骤。

2.1.1训练部分

训练部分完成的工作就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到FLASH,在以后使用时不需要重新训练;如果已经训练过会把存储在FLASH中的模型调出来装载到辨识器中。

2.1.2识别部分

在系统方案的选取及程序的开发中,语音的识别及处理是整个系统的核心及难点.识别对象的选取会对程序运行、识别的效果及实用性起决定的作用.应根据具体的应用情况选择决定,以获得最佳的识别效率。为了降低开发的难度,提高语音控制器的实际的使用效能,语音控制器采用特定发音人识别方式.即语音控制器适用于某个具体的特定的对象.程序设计的最终目的是根据人的语音命令进行相应的处理,程序的响应、处理并转换成相应的控制指令,其依靠的转换平台就是语音的识别处理.语音识别的处理分为语音样板训练和语音识别两个过程.可将先前植入的标准命令模式的存储空间称之为“词库”,而把标准命令模式称之为“样板”.所谓语音样板训练,就是将待识别的命令进行频谱分析,提取特征参数作为识别的标准模式.语音识别的过程就是将提取语音命令的特征参数,与词库中的命令样板比较,取相似度最好的样板命令序号作为识别结果,以供程序进行处理。

在识别环节当中,如果辨识结果是名字,便等待下一个动作指令。如果在名字指令后紧接一个动作指令,遥控器将会将指令通过串口nRF2401模组发送出去,并等待小车的响应,如果在名字指令后超过一定时间,没有第二个指令到来,那么遥控器将清除前次识别结果进入新的识别。其流程图如图示。                              

2.1.3 无线发送应答部分

    既然是无线语音遥控智能车,肯定少不了无线通信,无线通当然是指两点间的通信了,所以设计中用了一对半双工无线通信模组nRF2401,由于其一块单独工作没有任何实际意义,所以在此将遥控器部分和车体部分的无线模组软件工作流程同时列举,在后面车体部分的软件设计中不再叙述。首先,我需要自己定义一个无线通信协议,nRF2401 无线模组,每次发送有效数据最少1字节,最多32字节,发送前模组自动为数据增加数据头和交验尾。因为不需考虑数据的保密性,所以就采用简单的一字节命令,这样也能提高通信的可靠性。

2.2 车体主控程序软件流程设计

    当车体主控制器检测接收到语音指令时,先返回DATA+5,告知遥控器自己进行了响应。然后在真正进行动作响应,先响应后动作的原因是因为小车完成某个动作的时间较长,会导致遥控器因接收不到响应指令而不断的重发语音命令。下车接收到语音指令后,共有五种动作可以响应,为了更好的描述用K表示T/C2产生的PWM占空比,J表示舵机的摆角,定义90度的位置为0,左摆为负,右摆为正,Dir表示L298N方向控制位,10表示向前,01表示向后,11或00停止。

2.3 软件开发环境

2.3.1凌阳SPCE061A单片机指令系统与开发环境

凌阳SPCEO61A单片机采用μ’nSP™内核指令系统的程序设计支持汇编语言和C语言编写。在编程中也可以使用汇编伪指令,这样能使句子所表达的意思的结构更加清晰,能够增强可读性,使汇编器的编译效率提高。μ’nSP™内核对支持ANSI-C中使用的基本数据类型,并且可以在C程序中调用汇编函数提高代码效率,并使其具有较好的实时性。声控小车的各种动作,以及指令以及工作方式都要通过C语言与汇编语言编写,并进行摸拟,调试等操作。为减少繁琐的堆栈操作和提高程序可读性,在本次设计中采用C语言编写辨识程序。

在编程工作结束后,将会对声控小车进行程序的输入。使用凌阳科技提供的一个集成开发环境μ’nSP™ IDE,它能完成程序的编辑、编译、链接、调试和仿真等功能。使用它的的软件仿真功能可以在不连接仿真板的情况下通过模拟硬件的部分功能来调试程序。并使用在线调试器PROBE对SPCEO61A程序进行写入,它既是一个程序烧写器人又是一个实时在线调试器。它利用了SPCE06lA片内置的在线仿真电路ICE(In-Circuit Emulator)接口和凌阳公司的在线串行编程技术。PROBE工作于凌阳IDE集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上SPCEO61A相应引脚,直接对目标电路板上的SPCEO61A调试,运行编写好的程序。PROBE的另一头是标准25针打印机接口,直接连接到计算机打印口与微机通信,在计算机IDE集成开发环境软件包下,实现在线调试。

图 5-6 计算机,PROBE和用户目标板三者之间的连接示意图

2.3.2 ATMEGA16L单片机指令系统与开发环境

为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。AVRStudio是Atmel公司推出的AVR单片机集成开发环境。能运行于Windows9x/ME/NT/2000/XP等操作系统平台下。它提供了源文件的编辑器,用于软件仿真的芯片仿真器和在线硬件仿真(ICE)的接口。源程序的编辑可采用汇编语言,其汇编级编译器(AVR Assembler)是免费提供的。AVRStudio也可采用C语言编程,支持第三方C编译器。AVRStudio还集成有软件调试(AVR Studio)和实时在线仿真器(JTAG ICE)以及AVRProg下载等功能。目前,ARTMEL公司所发布的最新版本为AVR Studio4.14,可以在ATMEL公司的官方网站htttp://www.atmel.com下载。

图2-7 AVRStudio开发环境

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值