1 无线语音控制智能车设计概述
1.1 设计目的
随着电子工业的发展,计算机技术随着集成度的提高,和大规模集成电路的发展。计算机的一个重要分支——嵌入式计算机也在向高度智能化的方将发展。让机器能像人一样思考,理解人的语言已不再是一个新鲜的话题。实现使用语音控制单片机,将人机接口简化到人类可以用最自然的方式操作机器是本次设计的目的。本次拟设计能用语音无线遥控的智能小车。根据识别的语音命令来控制启动、停止、返回,完成作品虽功能单一且无实际使用价值,但可将原理推广至各种智能家电的语音遥控,所以该技术具有很高的实际应用价值。
1.2 设计实现总体功能
- 利用单片机的语音采集、播放、语音识别资源,实现人类语音的命令识别;
- 通过数字无线传输模组,将控制指令无线发送;
- 接收无线语音指令,实现控制小车的前进、后退、左转、右转等功能;
- 在超出控制范围(开阔处大于100米)时能够自动停车;
2 系统总体方案
2.1 方案论证
2.1.1 方案一
采用AVR系列8位单片机ATMEGA16L实现语音遥控器,由于有语音识、和语音播放和无线数传功能,所以需要扩展语音识别模块和语音播放模块还有无线发射接收模块,这样必然造成端口的资源紧张,所以还必须加入接口扩展芯片。该实现方案遥控器部分结构如图 3-1所示:
3 系统芯片功能介绍
在无线语音遥控智能车的设计中,主要包含四片芯片和两个模组,芯片中包括一片凌阳SPCE061A 16位单片机,用于语音命令的识别、发送以及命令的语音播放。两片ATMEGA16L高档8位单片机,一片和nRF2401模组组成串口无线发射模块,另一片作为车体部分的主控制器。最后一块为L298N直流电机驱动芯片,用于接收车体主控制器的控制信号,驱动直流电机为小车提供前进的动力。
3.1 主控芯片及其各部分性能
3.1.1无线语音遥控器主控制器SPCE061A介绍
经过上述讨论,实现声音智能控制功能最理想的控制芯片为台湾凌阳科技推出的SOPC(System On Programmable Chip)级16位MCU-DSP混合处理器SPCE061A作为处理语音指令的控制芯片,其兼有微处理器,数字信号处理器,存储器的三重功能,具有丰富的片上系统资源。凌阳SPCE061A具有μ’nSP™的指令系统提供具有较高运算速度的16位*16位的乘法运算指令和内积运算指令,增添了DSP功能,使得μ’nSPTM系列运用在复杂的数字信号处理方面既很便利,又比专用的DSP芯片廉价。凌阳内嵌32K字的Flash和2K字的SRAM,ROM和RAM统一编址,属于冯诺依曼结构计算机,这样的设计在制作中方便了对语音指令的压缩和存储。
3.1.3 nRF2401无线传输模组的主要特性:
nRF2401 是单片射频收发芯片,工作于2.4~2.5GHz ISM 频段,0~1Mbps 数据传输速率,125 阶(梯度1MHz)收发频率,地址检验和CRC 校验。芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm 的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM 技术使nRF2401 可以使用同一天线,同时接收两个不同频道的数据。nRF2401 适用于多种无线
4.1.4 直流电机驱动芯片L298N的介绍
L298是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。其管脚图和实物图分别如图3-9、图3-10所示。
4.2 无线语音遥控器中SPCE061A的功能
在本次设计中,关键地问题之一在于人声的A/D转换存储与识别,SPCE061A提供了语音输入压缩以及辨识的先进技术。
- 语音指令的输入。凌阳 SPCE061A利用麦克风的指令输入系统,SPCE061A内置由D/A转换器 DACO和逐次逼近寄存器SAR组成的逐次逼近式8通道10位A/D转换器,以及采样/保持电路。其中7个通道用于将模拟量信号(电压信号)转换为数字量信号,可以直接通过引线(IOA 0-IOA 6)输人(Line_Inl-Line_ln7)另外一个通道只用于语音输人,即通过内置自动增益控制放大器的麦克风通道(MIC-In)输人,是语音采集专用通道,也可设置为普通A/D输入。
2.语音指令的训练。语音遥控器作为机器,一定是不能先天理解人类的语言的,所以,必须教会它人类语言的含义。即语音训练,内容是将人类的语言事先已训练的方式经过模数转换存储在凌阳SPCE061A的FLASH中,并指定每一条语音所要指向的操作,以便在日后的使用中将采集来的语音与存储的语音相比对,以确定单片机需要进行的操作。
凌阳SPCE061A对于不同的辨识能力提供以下两种语音训练方式:
1)特定发音人识别SD(Speaker Dependent),是指语音样板由单个人训练,可用于语音提示,而DVR用来录音和放音;
2) 非特定发音人识别SI(Speaker Independert)。是指语音样板由不同年龄、不同性别、不同口音的人训练,可以识别一群人的命令;
在本次设计中,需要向小车训练:向前、向后、左转、右转、停止等几项语音指令,以供控制小车时的辨识使用。
值得注意的是,使用非特定发音人识别需要利用大量的DVR存储不同人训练的语音,但是凌阳SPCE061A并不能提供大量的内存空间供存储使用,由于设计条件有限,无法扩展必要的存储芯片完成存储语音的功能,故选择使用特定发音人识别。其训练具体流程参看后文内容。
3.对训练的语音指令的存储。将经A/D转换后的数据压缩存储,SPCEO61A单片机的16位DSP有很强的信息处理能力,最高时钟频率达49.152 MHz,具备运算速度高等优势。这些为语音的录放、合成及辨识提供了条件。凌阳压缩算法中DVR可用于录、放音。语音的编码、存储、解码处理是通过操作麦克风输人所生成的WAVE文件完成的,但在这个环节上会出现的一个问题为其占用的存储空间很大,对SPCEO61A单片机的32K FLASH来说想要存储大量的信息显然是不可能的。而SPCE061A提出了解决方法:SACMV25.LIB。该库将A/D、编码、解码、存储及D/A做成相应的模块,对于每个模块都有其应用程序接口API,所以只须了解每个模块所要实现的功能及其参数的内容,然后调用该API函数即可实现相应功能。在进行A/D转换之前,从MIN_IN输入的模拟信号要经过缓冲器和放大器,AGC功能将通过MIC——IN通道输入的模拟信号放大值控制在一定范围内,然后放大信号经采样-保持模块送入比较器参与A/D转换值得确定。
. SPCE061A的语音辨识。语音辨识是一种以语音模型为指令基础的控制方式,语音模型的质量直接影响辨识操作的速度和准确率。具体步骤是经过两次语音采集,即训练和发布指令。系统经复杂的函数操作将发布指令与预先训练的一音模型进行比对,如与语音模型相匹配,则输出控制信号。具体原理如图: