1 引言
为了提高广大单片机爱好者学习单片机的兴趣,凌阳科技大学计划教育推广中心推出了应用SPCE061A作为主控制器,外加电机驱动电路制作的智能机器人。该机器人采用特定人语音识别对机器人进行控制,可以完成向前走、倒退、左转、右转、跳两首舞曲、向左瞄准、向右瞄准、发射、连续发射等功能。该智能机器人可以大大提高在校学生学习单片机的兴趣。
2 模组特性简介
2.1 SPCE061A特性简介
SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,使用它可以非常方便灵活的实现语音的录放系统,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件:
特性:
◆ 16位μ'nSP微处理器;
◆ 工作电压:内核工作电压VDD为3.0~3.6V(CPU),IO口工作电压VDDH为VDD~5.5V(I/O);
◆ CPU时钟:0.32MHz~49.152MHz;
◆ 内置2K字SRAM;
◆ 内置32K闪存ROM;
◆ 可编程音频处理;
◆ 晶体振荡器;
◆ 系统处于备用状态下(时钟处于停止状态),耗电小于2μA@3.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)接口。
2.2 机器人简介
2.2.1 机器人驱动电路图
机器人驱动电路图如图2.1所示:
图 2.1机器人驱动电路图
机器人驱动电路采用功率较大的三极管搭成H桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。这些电机包括2个用于走路的电机与一个头部转向的电机。另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。
2.2.2主要功能
◆ 通过语音命令对其进行控制;
◆ 可以跳两首舞曲;
◆ 走步功能、转向功能、转头功能;
◆ 发射飞盘功能;
3 系统总体方案介绍
用61板来控制机器人,使用了IOB7-IOB15资源,另外使用了扬声器。如图3.1所示:
图3.1 系统的结构框图
系统主要由61板与机器人驱动电路构成。61板作为整个系统的主控板,驱动电路驱动电机。在主控板61板的控制下完成各个动作。另外增加了特定人语音识别的功能,通过命令来控制机器人,使机器人智能化。
4 系统软件设计
在主函数中调用相关函数完成特定人语音的训练,然后再训练成功后进行语音识别,根据识别的命令执行相关的操作。程序流程图如4.1所示:
图4.1程序流程图与中断流程图
判断是否为第一次下载根据FLASH中的标志位来进行判断。将训练好的语音模型导出存储到FLASH中使用库函数BSR_ExportSDWord(uiCommandID);进行操作,然后再调用读写FLASH中的函数进行。在进行语音识别时,首先读取FLASH将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID);函数将语音资源载入内存。在识别出命令后,执行相关动作,相关动作操作就是操作电机的正向或反向旋转同时配合延时与播放声音组合起来形成不同的动作。
应用方案的验证步骤:
步骤一:启动u'nSP IDE。打开机器人应用实例程序,编译、链接确认没有错误。如图4.2所示:
图4.2编译、链接图
步骤二:下载程序代码到机器人的61板上。
步骤三:打开机器人的电源,进行语音训练,训练过程按照下面进行:
按顺序训练以下15条指令:"名称","开始","准备","跳舞","再来一曲","开始","向前走","倒退","右转","左转","准备","向左瞄准","向右瞄准","发射","连续发射"。每条指令要训练两遍。当一条指令被正确识别时会提示进入下一条;如没有被识别会要求重复该指令,直到正确识别为止。
步骤三:如果训练成功则进入语音识别状态,如果训练没有成功则重复训练。由于SPCE061A的FLASH存储器只有32K,所以15条指令需要分组存放。在这里分成3组,每组5条指令。在不同组指令中交换需要根据出发名称,所以在识别状态,要执行动作首先需要出发名称,就是训练的第一条命令,然后可以识别第一组的其余四条命令。在触发第一条指令,然后再触发第二条指令,就可以识别第三条指令,参考下图:
图4.3 机器人操作示意图
5 结语
应用SPCE061A外加电机驱动控制电路可以实现多个电机的控制,完成机器人的许多动作。单片机爱好者可以自己制作电机驱动电路,发挥想象力制作出自己的机器人。
6 参考文献
[1] 罗亚非.凌阳16位单片机应用基础[M]. 北京:北京航空航天大学出版社,2003
[2] 凌阳大学计划网站www.unsp.com.cn