张 凯 ,薛 飞,刘 奔
(南京信息工程大学信息与控制学院,南京210044)
随着我国经济的不断发展,人们出行的几率越来越高,而人们出行首选的交通工具大部分还是火车与汽车,排队买票是乘客出行的一个重要环节,如今因买票时插队而发生的乘客纠纷事件已屡见不鲜,这不仅严重影响了售票系统的进行与秩序,也耽误了大量乘客的时间,并且也引发了乘客对车站秩序的不满。因此,如何解决胡乱插队这一长久问题,构建一个轻松、和谐、有序的智能排队系统已经迫在眉睫。
作为一种具有代表性的生物特征识别方法,指纹识别利用指纹的终身唯一性得到了广泛的关注[1]。本文在排队系统中通过区分指纹来辨别出不同的排队等候的客户,将指纹识别技术与排队系统相结合,搭建了一个基于指纹识别的智能排队系统,该系统能很好的防止插队现象,构建和谐的售票环境。
为了解决车站买票时乱插队的现象,本文提出了基于指纹识别的智能排队系统,其具体要求与功能:每个售票窗口都是并列运行,互不干扰的,乘客根据每个窗口的液晶屏幕显示的实时排队情况选择售票窗口,通过该窗口的指纹识别模块进行指纹登陆,获取排队号,而后进行排队,等待窗口语音提示。选择售票窗口后,乘客首先按“取号”键,通过指纹识别器录入指纹,获取排队号,然后当听到扬声器提示“请第X 号窗口的第XX 号买票”时,乘客应到窗口买票,此时按“指纹识别”键,乘客通过指纹识别器进行指纹识别,若与数据库中指纹特征吻合则可以买票,否则蜂鸣器会连续发出警报声,同时显示屏上提示“请您继续排队!”,为了防止有人退出售票系统,允许在五个特征指纹范围内的误差。每当一位乘客购票结束后再按“下一位”键,显示屏与语音将会提示下一位乘客购票。通过这种方法乘客就无法进行插队,同时实现各窗口良好的并行运营,有效的解决了买票插队的混乱情况。
系统硬件主要包括:89C51 单片机、指纹识别模块、语音芯片、液晶显示屏、电源模块、发光二极管、蜂鸣器。指纹识别模块主要由指纹传感器,数字信号处理器,RS232 接口和存储芯片等构成,主要实现了指纹图像采集,指纹图像处理和指纹模板存储等功能;电源管理模块使用LM7805 为系统提供稳定的+5 V直流电压。89C51 作为中央处理器,它的串口用来连接指纹识别模块的串口,进行数据的发送与接收,89C51 的两个外部中断输入端分别接开关K3和K1,89C51 的T0 口接开关K2。开关K1的功能是对指纹识别器的模式进行转换,当绿色发光二极管亮时为识别指纹模式,当红色发光二极管亮时为指纹录入模式。在指纹录入模式下,开关K2闭合一次即可录入一次指纹。开关K3的功能是清除所有指纹,作为中央处理器89C51 不仅需要控制指纹模块,同时还要根据排队状况发送命令操作语音芯片播放语音,对液晶显示器进行控制;乘客的购票行为是由语音芯片利用存储在内部的语音片段对其提示进行的;每个窗口的当前排队情况与所取得的排队号的显示由液晶显示屏实现,图1 为系统主要结构图。
图1 系统结构图
指纹识别步骤如图2 所示,该步骤分为指纹特征模板的获得过程与指纹特征模板的匹配过程。在指纹特征模板的获得过程中,指纹图像从传感器中取得,经过指纹识别算法获得指纹特征并存入到数据库中,存储到数据库中的指纹特征称为指纹特征模板[2-4]。在指纹特征模板匹配过程中,将得到的指纹特征模板与之前存储的模块进行对比,对比结束后得到结果。
图2 指纹识别步骤
液晶显示屏主要显示每个窗口的当前排队状况以及乘客所取得的排队号,营造良好的人机交流界面。本文采用的是JM12864M-2 液晶显示屏,JM12864M-2 液晶显示屏可以显示汉字与图形,内置128 个字符(8×16 点阵)、8 192 个中文汉字(16×16 点阵)及64×256 点阵显示RAM(GDRAM)[5]。主要技术参数和显示特性如下。
电源:VDD 3.3 V ~+5 V(内置升压电路,无需负压);
显示内容:128 列×64 行;
显示颜色:黄绿;
显示角度:6:00 钟直视;
LCD 类型:STN;
与MCU 接口:并行或串行2 种控制方式,本文采用其中的并行方式;
多种软件功能:可根据指令设定如待机模式、睡眠模式及绘图模式等;
图3 为液晶显示模块与89C51 单片机引脚连接图。
图3 JM12864M-2 与单片机的并行连接
为了给系统提供稳定的电压,本文采用L7805CV稳压器,设计了一个电压稳压电路,提供+5 V 电压。L7805CV 有一系列固定的电压输出,它的使用寿命较长,有非常广泛的应用。在其内部有对电流的限制,以及安全工作区的保护和热保护,在散热性满足的条件下可以输出大于1.5 A 的电流,且可以根据外部器件而获得不同的电流与电压。
此系列的稳压器在使用时,要注意以下几点:
(1)必须分清输入端与输出端,混淆接错后易击穿烧坏,接地端不允许开路。
(2)做大电流输出时,一定要加散热器。
(3)35 V 是7805 的最大输入电压,7.5 V 是最小输入电压为,1.5 A 是最大输出电流。
图4 是系统电源模块设计电路图。
图4 系统电源模块电路
语音模块采用的是ISD2560 型语音芯片,该芯片工作电压是3 V,单片录音最多可以达到16 min。本系统中将该芯片的录音引脚闲置,只使用它的放音功能。可以通过设置芯片的地址引脚来访问每段语音。利用高级语音编程拷贝机ISD1425 对芯片片内的信息进行拷贝,图5 是ISD2560 与单片机的连接图[6-8]。
图5 ISD2560 与单片机的引脚连接图
软件的集成开发环境使用KEIL C51,系统软件设计的难点在于录入指纹数据的处理,排队系统过程的操作及语音芯片的控制,以下将对这些部分作简要的分析。
单片机通过串口完成对指纹模块的各种功能操作,通信过程中的操作应答指令与数据交换都是按照固定的数据包格式来进行的。单片机必须按照下述格式封装要发送的指令或数据,也必须按下述格式解析收到的数据包。
指令/数据包分为命令包,数据包(有后续包)和结束包,所有的数据包都要加包头:0xEF01,它们的格式如表1 ~表3 所示。
本文采用两次指纹登陆一个模板存于Flash 指纹库的方式,具体步骤如下:
(1)发获取图像指令:PS_GetImage,从采集指纹的传感器上读取图像并存于图像缓冲区。
(2)发生成特征指令PS_GenChar,输入参数为BufferID=1,参数根据原始图像生成指纹特征存于CharBuffer1 或CharBuffer2。
(3)重复以上2 步,注意在重复第2 步时输入参数为BufferID=2。
(4)发注册模板指令PS_RegModle,将CharBuffer1与CharBuffer2 中的特征文件合并生成模板存于Charbuffer2。
(5)发生成特征指令PS_StoreChar,将文件数据从特征缓冲区中存储到Flash 指纹库。
表1 命令包格式
表2 数据包格式
表3 结束包格式
本文中89C51 单片机的引脚INT0 用于产生外部中断信号清除指纹库数据,引脚INT1 用于产生外部中断信号进行系统模式转换。当清除指纹库的数据时蜂鸣器会长响一声,红绿灯分别代表录入指纹模式与识别指纹模式,下面将简单介绍这3 个功能的实现。
(1)指纹库内数据的清除
在清除指纹数据前,单片机应先通过函数VefPSW(void)来验证设备握手,若握手成功,则利用指令DELE_all 清空所有指纹信息。具体形式如下:
void Clear_All(void)
{ if(VefPSW()!=1){}
else{Command(DELE_all,50);
Command(DENT,20);}
}
(2)录入指纹
单片机利用函数Enroll(void)采集两次指纹生成一个指纹模块。采集上限为40 次,
超出设定的上限次数,则采集失败退出Enroll函数。具体形式如下:
unsigned char Enroll(void)
{ unsigned char temp=0,count=0;
while(1)
{ temp=ImgProcess(1);
if(temp==3)
{break;}
else {if(temp==1)
{count++;
if(count>=40) return(0);}
}
}
}
(3)指纹识别
单片机先利用函数ImgProcess(Unsigned char BUFID)读入一个指纹,然后利用函数Searchfinger()搜索指纹,如果搜索到,返回搜索到的指纹序号。具体形式如下:
unsigned char search(void)
{ unsigned char SearchBuf=0,i=0;
while(i<20)
{ if(ImgProcess(1)= =3)
{ SearchBuf=Searchfinger();
if(SearchBuf==1)
{return SearchNumber;}
else {return 0;}
}i++;
} return 0;
}
在本系统中,为了播放芯片中第一段语音,将ISD2560 的地址引脚A0 到A9 全部接地(GND);单片机的P1.0 引脚与ISD2560 的节电引脚PD 相连接,这样单片机就可控制芯片的开关;ISD2560 的录放模式引脚P/R 与单片机的P1.1 相连接,以此控制语音芯片的工作状态,系统中ISD2560 只工作在播放模式下。EOM 为语音信息结尾标志。
要使语音芯片工作在放音状态,首先要找到相应的语音段起始地址,这里我们通过给芯片的地址引脚赋值来实现,其次再将高电平赋予引脚P/R,低电平赋予引脚PD,最后在引脚/CE 上产生一个负脉冲作为启动信号,系统控制播放程序如下:
void play(void)
{ PD=1;CE=0;PR=1;
while(!EOM);delays();
PD=0;CE=0;PR=0;
}
该系统利用指纹的高精确性,在乘客排队买票时,售票员可根据采集到的指纹进行对比匹配,根据匹配成功与否进行售票,图6 为系统运行时的演示图。在售票过程中,可有效防止乘客买票时无故插队带来的不良影响,提高售票效率,有效改善售票大厅的人文环境。本系统真正实现了售票系统“一人一票”的快速、可靠、智能化管理。
图6 系统验证指纹时的运行图
[1] 魏发建,游敏娟,王保帅. 浅谈指纹识别的基本原理[J]. 中国科技信息,2009,10:138-139.
[2] 罗勇,韩晓军.基于FPGA 指纹识别系统的设计与实现[J]. 电子器件,2008,31(4):1361-1365.
[3] 史锦珊,孟祥菊.基于TPS 模板的弹性形变指纹的匹配算法的研究[J].传感技术学报,2004,17(4):587-589.
[4] 黄林波,李铁才. 一种指纹识别模块的研发方案[J]. 伺服控制,2011,5:67-69.
[5] 郭天祥.新概念51 单片机C 语言教程[M].北京:电子工业出版社,2009:167-168.
[6] 李娜.简单语音识别系统的设计与开发[J]. 机械管理开发,2006(6):88-89.
[7] 王立凤,戴明.基于ISD2560 的语音芯片的录放电路设计[J].电子元器件应用,2009,11(6):18-24.
[8] 王坤,张文科.基于单片机的语音芯片的语音系统设计[J].科技信息,2009(1):177-178