张海静,侯建军,霍娟娟
(北京交通大学 电子信息工程学院,北京100044)
地理教学离不开地球仪,传统地球仪只能借助外力实现一维转动,配合教师传授地理知识,缺乏令人耳目一新的效果,不能积极调动学生对地理课的学习兴趣。为了改善地理教学的枯燥,增强其趣味性,在教学过程中需要借助先进的教学模具,从而激发学生的学习兴趣,保证教学质量。而功能强大的智能地球仪可以在无任何支撑及触点电的空中自转,如磁悬浮地球仪是一种可以利用无线发声及先进隐形码光学识别技术来实现语音控制转动的智能语音地球仪[1]。这些地球仪结构设计复杂,成本高昂。
本文采用低成本模块化设计,使用单片机控制模块、语音识别模块及云台转动模块,设计了一款能将用户的声控命令转化为国家地理位置的智能地球仪。该地球仪能智能识别任意用户说出的国家名称,驱动云台转动使目标国家正对着用户,点亮代表该国首都的彩色LED指示灯,并且语音播放该国的详细介绍,包括人口、面积、现任领导人、地理、历史、气候、资源等。与其他智能地球仪相比,该智能地球仪易于操作、趣味性强,能充分激发学生的好奇心和求知欲。同时设计简单、成本低廉,更适合在各学校普及使用。
智能语音地球仪硬件系统如图1所示,主要由双自由度云台模块、语音识别播放模块、单片机控制单元和外围控制电路组成;软件系统包括系统控制主程序和语音识别播放程序。
图1 硬件框图
AT89S52是由Atmel公司设计制造的一种低功耗、高性能的8位单片机[2],作为智能地球仪的主控制器,P1口用来接收语音识别结果控制云台的转动,P2和P3口用来控制外围的一些电路,主要包括复位电路、LED灯的点亮电路等。
语音芯片LD3320芯片是一款基于非特定人语音识别技术的声控芯片,可以实现语音识别及MP3播放功能[3]。为了能使芯片正常工作,共有42个引脚需要配置,而单独使用AT89S52单片机无法直接完成对该芯片的配置。虽然采用扩展I/O口的做法也能实现,但是为了使整个系统更加稳定可靠地工作,本文选用单片机STC10L08XE作为系统的协MCU来完成对LD3320语音模块的控制。
双自由度云台有4个控制转动方向的端口,分别是水平左转、水平右转、上升、下降,需要24 V的交流电来驱动,而语音识别结果的二进制序列经过解码后由单片机AT89S52的I/O口输出,其端口电平是0~5 V的直流。为了能使单片机根据语音识别结果驱动云台转动,在AT89S52和云台之间放置一个电流放大器件ULN2003。ULN2003是大电流、高耐压达林顿阵列,包括7个达林顿管,在5 V的工作电压下,能够与 TTL和CMOS电路直接相连,这样就可以直接处理原来需要标准逻辑缓冲器来处理的数据[4]。将控制云台转动方向的4个端口D_Right、D_Left、D_Up、D_Down 分 别 与 继 电 器 K1、K2、K3、K4相连,单片机AT89S52根据解码后的语音识别结果控制继电器的断开和闭合,从而控制云台转动的方向和角度。云台转动电路图如图2所示。
语音识别播放电路主要由语音芯片LD3320、STC10L08XE单片机及其他外围电路构成。语音芯片LD3320内部固化有完整的非特定人语音识别特征库和高效的非特定人语音识别搜索引擎模块,不需要事先训练和录音。只需要单片机把候选识别语句的拼音串传入芯片内部,通过芯片内部的DSP算法,找出最佳识别结果。同时此芯片还支持MP3播放功能,此时需要外接Flash芯片,用来存储播放的声音素材等数据。STC10L08XE单片机读取串行存储芯片的MP3数据,依次送入LD3320芯片内部就可以从芯片的相应引脚输出声音[3]。STC10L08XE单片机与语音芯片LD3320之间采用并行的通信方式,故在硬件上需要使用8根数据线和4个控制信号将语音芯片与单片机并行连接。
2.4.1 复位电路
为了保证智能地球仪在每次上电启动或复位操作后具有唯一确定的位置,故需要为其设定起始转动位置。当云台转到初始位置时,就给单片机AT89S52发送一个判断信号,表示复位完成,可以开始语音识别。本设计中利用光电开关完成这一信号的给定。光电开关利用被检测物体对光束的遮挡或反射检测物体的有无,一般包括发射部分和接收部分。发射部分由发光管辐射出光脉冲,接收部分为光敏三极管。当没有物体遮住时,光敏三极管导通,电阻极小;当有物体遮住时,电阻极大[5]。系统设计中在云台平台侧面设置挡板,初始位置固定光电开关,当云台转至初始位置时,挡板会正好停在光电开关中央,使光电开关处于截止状态,此时会给单片机一个信号(低电平 0),此信号接在 AT89S52单片机P3_7引脚。光电开关示意图如图3所示。
地球仪转动至目标国家时,点亮目标国家首都位置的彩色LED指示灯以增强智能地球仪的演示效果。系统设计中选用LED彩灯和译码器完成由单片机AT89S52控制的彩色LED灯点亮电路。单片机AT89S52接收语音识别结果二进制序列并作为译码电路输入,输出则与代表目标国家首都的LED彩灯相连。译码电路示意图如图4所示。
软件主要由系统控制主程序和语音识别播放程序组成。编程时着重考虑了以下几个方面:正确地初始化语音识别播放程序;正确地分析、判断、处理识别结果;精确地控制云台转动。
AT89S52单片机接收语音识别结果,并根据识别结果控制云台的转动。程序中通过标志位g(AT89S52单片机P3_7脚的信号)来判断云台是否处于初始位置,通过对继电器通电时间的控制来完成对云台转动角度的控制。系统控制流程图如图5所示。
图5 系统控制流程图
每个国家都对应着继电器的闭合时间,控制云台转动的角度能使智能地球仪准确转动,从而使目标国家正对用户。设定地球仪上经度和纬度为0的位置是初始位置,任一国家首都所在经度为 L,纬度为W,从初始位置转动到任一国家首都所在位置需要的水平时间为TH(单位为 s),垂直时间为 TV(单位为 s,符号代表方向),测量得出云台水平转动 360°需 105 s,垂直转动 60°需要18 s。根据下式可以计算得出从初始位置转到任一国家首都位置需要的时间。
式中,E表示东经,W表示西经,+表示北纬,-表示南纬。
由于语音识别和MP3播放会使用LD3320芯片的一些公共资源,为了使芯片稳定地工作,软件设计在功能切换的时候,必须从“通用初始化”开始,对芯片进行一系列的设置,避免产生冲突。为了提高识别精度,可以修改语音芯片寄存器35的值,值越大识别启动就越敏感,但是会带来更多误识别,识别的正确率降低。为了保证识别灵敏度的同时兼顾正确率,系统将寄存器35的值设置为40H。语音识别播放流程图如图6所示。
图6 语音识别播放流程图
在系统设计中为了提高语音采集的质量,避免误识别,硬件方面采用高精度的麦克实现语音命令采集,并增加按键开关以确认有效的语音识别结果。该系统已经实现了对48个国家的智能语音控制功能用以效果演示,在此基础上很容易扩展实现对更多国家的语音控制。同时还可以增加液晶显示模块,更加生动形象地显示目标国家的图片和文字。
系统稳定正常的工作具有非常重要的意义。智能地球仪在上电后,让其连续不断地工作48 h,期间随时对其发出语音命令,测试能否正确识别。同时检测是否会出现程序跑飞的现象,导致死机。经测试该系统运行稳定可靠,在长时间运行过程中未发生死机或程序跑飞等异常情况。
总地来说,该智能地球仪系统设计思路巧妙,利用一些简单的芯片和元器件实现了相对复杂的功能。用户可以通过声音命令对地球仪进行控制,系统根据语音识别结果来精确计算地球仪转动的角度,点亮目标国家的LED灯,增强整个系统的演示效果。实际应用表明,该智能地球仪能够广泛应用于地理、历史等学科教学和科学素养拓展教育,满足学校教学多元化和个性化需求,促进教师教学观念、手段和方法的更新,激发学生的学习兴趣,促进学习方式的变革。
[1]刘幺和,宋庭新.语音识别与控制应用技术[M].北京:科学出版社,2008.
[2]孙育才,王荣兴,孙华芳.ATME新型AT89S52系列单片机及其应用[M].北京:清华大学出版社,2006.
[3]用声音去沟通VUI Voice User Inter.LD3320开发手册[EB/OL].[2011-8-26].http://www.icroute.com/.
[4]友达电子.ULN2003[EB/OL].[2011-7-20].http://wenku.baidu.com/view/04568009763231126edb119c.html.
[5]维库电子市场.光电开关原理及应用[EB/OL].[2011-7-20].http://www.dzsc.com/data/html/2007-4-18/12659.html.