1 引言
智能化已成为玩具行业的新趋势,让语音技术融入到玩具中,不仅可以赋予玩具“听”“说”的交流能力,使其更加生动、智能,还有利于在儿童中普及现代科学技术,推动语音技术产业化的发展。一些领先技术被应用于今天的玩具领域如:无线电、红外通讯、传感器、语音识别等等。
本文介绍的是基于SPCE061A的一种具有语音识别功能的玩具产品,并着重介绍了软硬件设计方法。
2 系统结构
硬件结构框图如图 2.1所示:主要由按键输入电路、触摸键输入电路、直流电机驱动电路、光敏器件输入电路、单片机最小系统等部分组成。
图 2.1 系统整体框图
整个系统工作于4.5V电压下,由3节5号电池提供4.5V电压,经过SPY0029稳压到3.3V为单片机系统供电。 整个系统在无操作时,处于睡眠状态,当3个按键、2个触摸键被触发时,睡眠被唤醒,进入相应的操作,执行完操作后1分钟内无任何按键触发,则再次进入睡眠。光敏器件在睡眠前不断采集光线强度,如果跟环境光线有较大变化,则会进入语音识别模式,MIC、直流电机、扬声器则是各动作的相应辅助器件。
3 硬件电路设计
3.1 微控制器电路
控制器采用凌阳科技公司的SPCE061A,其硬件资源分配见表 3.1。
表3.1 硬件资源分配表
IO口使用情况 | 使用 | IOA5:光敏器件输入; IOA4 ~~~ IOA3:触摸键输入; IOA2 ~~~ IOA0:按键输入; IOB9:BPWM输出口; |
剩余IO及处理方式 | 剩余IO: IOA15~IOA6、IOB15~IOB10、IOB8 ~IOB0 处理方式: 软件上设置为输出,输出低电平; | |
Timer使用情况 | TimerA | 训练过程、放音时使用 |
TimerB | BPWM输出频率的控制以及占空比的设置 | |
ADC使用情况 | 使用6通道 | 用来做光敏信号采集 |
中断使用情况 | 1) 训练、放音时使用FIQ_TMA; 2)使用IRQ3_KEY来完成睡眠唤醒操作; 3)使用IRQ5_2Hz做计时基准; |
3.2 键盘输入电路
键盘输入电路如图 3.1所示,当有键按下时,对应的IO口被拉到高电平,CPU处理后做相应处理。
图 3.1 键盘输入电路
3.3 触摸键输入电路
触摸键主要由555集成电路来实现,其原理如图 3.2所示,左边的触摸片为金属铜片,正常情况下,人本身会产生幅度为80~100mv的正弦波电压,当人手触摸到金属片时,产生的感应电压叠加在偏置电压上(偏置电压设置在0.6V),使得三极管导通,触发555集成电路使之3脚产生单稳态输出,从而系统从睡眠状态被唤醒。
图3.2 触摸键输入原理
3.4 光感输入电路
光照感应电路由电阻与光敏电阻器组成。光敏电阻器是一种受光照射导电能力急剧增加的电子元件。常用的型号为MG45,适用于可见光谱范围(0.4~0.76μm),亮电阻≤2~10kΩ,暗电阻≥1~10MΩ。使用时,耗散功率不要超过10mW,例如工作电压在5V时,通过的电流不应超过2mA。另外,应避免强光长时间照射,防止光敏材料老化。 在环境光照强度下,采集一个标准值,然后在主循环中,不断采集比较,当变化比较大的时候,意味着有手挡着,则进入相应的辨识子程序。 接口电路如图 3.3所示。[page]
图3.3 光感输入电路
3.5 直流电机驱动电路
直流电机控制电路比较简单。由I/O口输出信号,通过NPN型三极管8050反相驱动电路去控制电机。其控制电路如图 3.4所示。二极管起保护作用,防止电机的反向电流过大击穿器件。
图3.4 直流电机控制电路
3.6 MIC输入电路和扬声器输出电路
MIC采用驻极体电容话筒,这种话筒具有灵敏度高、无方向性、重量轻、体积小、频率响应宽、保真度好等特点。SPCE061A内置专门用于语音信号采集的具有自动增益控制放大器(AGC)的麦克风输入通道(MIC_IN)。语音信号经麦克风转换成电信号,由隔直电容隔掉直流成分,然后输入至内部前置放大器,最后通过ADC转换成数字信号。 扬声器采用一般的喇叭,电压不超过5V。凌阳SPCE061A单片机自带双通道DAC音频输出,DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出,DAC输出为电流型输出,61板自带音频放大电路,所以外接一喇叭即可。
4 软件设计
4.1 主程序流程及说明
整个系统的外部输入包括:按键、触摸键、感光控制及语音控制,其中语音控制需等到感光唤醒之后才能进行。当各控制键触发后,系统从睡眠状态唤醒,通过判断标志位,进入相应的处理子程序,之后在主程序中不断检测,1分钟内若无任何操作,则再次进入睡眠状态。 具体程序中,通过判断gKeyDoubleUseSign的值来确认执行何种操作,当为1时,进入键处理子程序;为2时,进入复用键处理程序;为0时,不执行任何操作,认为是出错或出现异常情况。在键处理子程序中,根据标志位gKeyID来判断进入哪一个处理程序,如表 4.1所示。
表4.1
gKeyID的值 | 对应处理 |
1 | 左手按键处理 |
2 | 背部按键处理 |
3 | 脸部触摸键处理 |
4 | 肚部触摸键处理 |
5 | 右手按键处理 |
0 | 异常情况 |
主程序包括端口的初始化,提示语音的播放,主循环以及进入睡眠状态前中断的初始化、端口的初始化。 主循环包括:键扫描,判断标志位及相应子程序,AD转换及比较。 端口的初始化包括A口和B口的初始化,A口的IOA0~IOA4设置为带唤醒的下拉电阻输入,IOA6设置为悬浮输入的光敏器件输入端;B口的IOB9设置为低电平输出,作为TimerA脉宽调制输出;其余未使用的端口设置为低电平输出。 提示语音的播放即“您好”的播放,主要应用于系统重新启动以及复位键的触发,在这里,复位键既可当一个功能按键来使用,也可以在系统无反应时当作重启键来使用。 进入睡眠状态前的系统初始化包括:端口A口的重新初始化,保证系统运行的可靠性;唤醒中断的允许、开中断;睡眠信号的写入。 其主流程见图 4.1:
图 4.1 主程序流程图
4.2 S480语音播放子程序
SACM-S480自动方式程序流程如图 4.2:
图 4.2 SACM-S480自动方式程序流程
4.3 语音的识别及训练程序流程图
语音的识别取材于凌阳语音库bsrv222SDL.lib及相关头文件,如bsrSD.h。SPCE061只有特定发音人模式,即只能辨识特定的使用者,辨识前需由单个人训练,且最多识别6条命令,序号范围从0x100到0x105,每条命令只有1.3秒,超出了1.3秒只有前1.3秒命令有效。在本系统中,利用通过光敏电阻的暗电阻较大,分压值也较大的原理,产品触发后通过AD采样,与原环境光线采集值比较有较大变化时,置标志位,从而在主循环中进入识别模式。而训练模式通过左手按键经IOA0触发,训练模块和语音识别框图如下所示:
图 4.3 训练模块
图 4.4 语音识别框图
在辨识主循环中,辨识得到确认后就可以执行相应的处理子程序,整个流程如图4.5所示。 [page]
图 4.5 语音辨识处理子程序
4.4 按键动作执行子程序
当外部输入的按键、触摸键触发时,进入睡眠唤醒中断。在中断中获取光敏器件采集到的AD值,主程序中扫描键盘,将取得的键值写入gKeyID,再根据gKeyID寄存器来判断到底进入哪个子程序。具体的执行子程序如下各图所示:
图 4.6 左手按键处理子程序
图 4.7 背部按键、肚子上触摸键处理子程序
图 4.8 脸部触摸键处理子程序
图 4.9 右手键处理子程序
4.5 中断及键处理子程序
在本系统中利用了FIQ_TMA快速中断、IRQ3_KEY、IRQ5_4HZ共4个中断。各中断的作用及返回值如表 4.2所示: [page]
表 4. 2
中断类型 | 返回值 | 作用 |
FIQ_TMA | 无 | 用于语音播放及语音辨识服务,gRecPlay=0进入语音识别;gRecPlay=1进入语音播放 |
IRQ3_KEY | 返回环境光线强度值gADEnviroment | 外部键唤醒中断后的取值以及主程序的进入 |
IRQ5_2HZ | 定时到返回gTime1Minuteh=1 | 用于时间计时基准,各动作执行时所需延时及定时 |
图 4.10 FIQ_TMA中断服务子程序
图4.11 4HZ时基中断服务子程序
在图 4.12中,语音辨识子程序执行的是BSR_FIQ_Routine(),而语音播放子程序执行的是F_FIQ_Service_SACM_S480()。
图 4.12 IRQ3_KEY中断
5 结语
系统用凌阳SPCE061A十六位单片机实现体现了它的极大优越性,集中体现在实现功能齐全、内部资源丰富、外围电路简单等方面。编程采用C和汇编混合编程来实现,集两种语言之优点于一体,它们的完美结合极大限度地简化了编程过程,丰富了编程思想,给开发者带来了莫大的方便。而凌阳单片机提供了很好的语音播放和录制机制以及简单的API接口编程,使得用凌阳单片机开发产品简单快捷。
6 参考文献
[1] 凌阳大学计划网站
[2] 雷思孝、李伯成、雷向莉,单片机原理及实用技术—凌阳16位单片机原理及应用 陕西:西安电子科技大学出版社
上一篇:基于解析TI数字机顶盒内核子系统设计
下一篇:无线光机鼠标设计(51兼容射频Soc nRF9E5)
推荐阅读最新更新时间:2024-03-16 13:01