吕中兴++黄艳++闵惠芳
摘要:随着现今安保系统智能化趋势不断地发展,门禁系统的智能化要求也迫在眉睫。为实现门禁系统的智能化,本文提出了一套针对于门禁系统以MIFARE卡为识别对象,基于PIC16F877单片机的非接触式IC卡读卡器的设计方案。首先,该方案以PIC单片机为控制核心构成主控模块,MFRC500专用芯片为读写模块。其次,RS485通信电路构成通信转换模块,与PC机构成管理系统;LCD显示电路和矩阵键盘电路构成人机接口模块,实现人机交互;7805稳压电路构成电源模块,提供芯片稳定直流电源。最后,该方案经实际电路测试显示,能实现对MIFARE卡进行识别读写操作,对门进行开关操作,并能与PC管理机形成可靠的数据库,同时能对待通过人员进行身份核实。
关键词:非接触式IC卡读卡器 PIC单片机 智能化的门禁系统 MFRC500
中图分类号:TN409 文献标识码:A 文章编号:1007-9416(2014)12-0138-03
非接触式IC卡,由IC芯片、感应天线组成,封装在一个标准的PVC卡片内,芯片及天线无任何外露部分。是世界上最近几年发展起来的新技术,它成功地将射频识别技术和IC卡技术结合起来,解决了无源(卡中无电源)和免接触这两个难题,是电子器件领域的一大突破。卡片在一定距离范围靠近读写器表面,通过无线电波的传递来完成数据的读写操作[1]。由于非接触式IC卡具有安全性、智能性、较大存储容量、更好的应用环境适应性、读写设备简单和操作速度快等优点,其技术发展十分迅速,应用领域愈加广泛,特别是在学校一卡通、门禁、公交等场合。非接触式IC卡技术的这些特点恰好适用于门禁系统的智能化,故将非接触式IC卡技术运用于门禁系统中。而非接触式IC卡技术的关键是对非接触式IC卡读卡器的设计,所以本文围绕对门禁系统中非接触式IC卡读卡器的设计展开,简要介绍其工作原理,详细描述硬件设计和软件设计。该读卡器系统包含单片机芯片PIC16F877、读写芯片MFRC500、稳压芯片7805和通信芯片MAX491等常用芯片,这些芯片的一般性保证了系统二次开发的可行性。该方案能够稳定实现预期的门禁功能,且易于制作、成本较低。除此之外,可以通过改变外围电路,满足其他多种自动识别系统。
1 系统组成
通用读卡器功能较为简单,通过执行上位PC机的命令,对卡片进行简单的读写操作。故这类读卡器的系统组成也较为简单,由主控制单片机、通讯芯片、读卡芯片、终端验证这四部分组成。
而门禁读卡器是专用读卡器,是通用读卡器的一种扩展运用,是门禁控制系统中十分关键的组成部分,它的功能就是对待通过人员进行身份核实,从而决定各重要场所出入的大门的开关。每个被门禁读卡器所控制的门上都安装有电子锁,门禁读卡器就是通过给输出继电器发送信号来控制电子锁对重要场所的门进行开关。当用户需要通过门禁读卡器控制的大门时,需要通过读卡器对所持卡片的信息核实才可以通过大门,或者采用直接输入密码的方式出入。
该门禁读卡器系统以PIC16F877控制模块、MFRC500读写模块为核心,RS485通信模块、存储模块、时钟模块、天线模块、电源模块、人机接口模块(LCD显示电路和矩阵键盘电路)和蜂鸣器报警模块等组成辅助模块,系统组成框图如图1所示[2]。读写器与非接触式IC卡的数据交换,通过在射频场中天线线圈之间的耦合,建立无线链接完成。
2 工作原理
本设计方案采用的非接触式IC卡是MIFARE1 IC射频卡,以Philips公司的S50系列芯片为核心,并采用了国际上常用的ISO14443 TYPE A非接触式接口标准[1]。S50上内建有8K存储容量的E2PROM并划分为16个扇区,每个扇区划分为4个数据存储块,每块16个字节,以块为存取单位,每个扇区可由多种方式的密码管理。每张射频卡都有唯一的序列号,字节数为32位[1]。除此之外,该系列芯片具有防冲突机制,支持多卡操作。其主要电路包括RF射频接口电路和数字电路这两部分,其功能框图如图2所示。片内无源,工作的电源能量由IC卡读卡器天线发射无线载波信号,耦合到卡片上的天线而产生。
当MIFARE卡进入读卡器的射频场时,单片机PIC16F877发出请求,通过对读写模块中MFRC500芯片特殊内存寄存器的读写来控制读写模块与MIFARE卡建立连接,进行读写操作。MFRC500 实际上是PIC16F877与射频卡之间进行信息交换的“中间人”。任何卡片上数据读写均须通过MFRC500来传递。传送不同类型的指令给MFRC500,就能实现对MFRC500的控制。读卡器发给卡的数据信息在调制前采用的是米勒编码,而卡发给读卡器的数据信息采用的是曼切斯特编码[7]。
3 系统硬件设计
3.1 控制芯片的选择
此读卡器系统选择的控制芯片为Microchip公司的PIC16FXX系列中的PIC16F877芯片。由Microchip公司推出的PIC16FXX系列单片机,采用了精简指令集RISC结构,具有高速度、低功耗、低电压、大电流LCD驱动能力等优点。其次,这个系列的单片机采用的是双总线结构,也称为哈佛结构。这种结构将程序总线和数据总线分开,使得取指令和取数据同时进行。由于哈佛结构将指令空间和数据空间分开,使得单片机能在取指令的同时执行另一条指令,从而实现流水作业[3]。
相比之下,PIC单片机芯片要优于MCS-51单片机芯片,可体现在如下三个方面[3]:
(1)总线结构。MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令空间和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。PIC单片机的程序和数据总线可以采用不同的宽度。数据总线是8位,但指令总线分别为12、14、16位。(2)流水线结构。 MCS-51单片机的取指和执行采用单指令流水线结构,两种操作不能同时进行;而PIC单片机的取指和执行采用双指令流水线结构,也就是可以同时进行取指和执行两种操作。(3)寄存器组。 PIC单片机的所有寄存器,包括I/O口、定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。
综上所述,PIC16F877单片机运行处理效率高、数据吞吐率大,故本设计方案选择了PIC16F877芯片作为主控制芯片。
3.2 MFRC500模块
MFRC500是应用于13.56MHZ非接触式通信中高集成读卡系列,内嵌ISO14443协议解释器,它支持ISO14443中TYPEA通信标准,支持使用MIFARE高波特率的非接触式通信。该读卡芯片内部结构由并行微控制器接口、双向FIFO缓冲区、中断、数据处理单元、状态控制单元、安全和密码控制单元、模拟电路接口及天线接口组成;MFRC500外部接口则包括数据总线、地址总线、控制总线、电源等[4]。MFRC500的并行微控制器接口自动检测连接的8位并行接口的类型[5]。它包含了一个双向FIFO缓冲区和一个可配置的中断输出,这样就连接各种单片机提供了很大的灵活性。数据处理部分执行数据的并行—串行转换。状态和控制部分允许对器件进行配置以使性能调节到最佳状态。模拟电路包含一个具有非常低阻抗桥驱动器输出的发送部分,这得最大操作距离可达10cm,接收器可以检测到非常弱的应答信号[6]。
3.3 电源模块
该读卡器系统内所有芯片的工作电压均为 5V,而读卡器是通过电源插头直接接入电压为220V、频率为50HZ的市电,故该系统需要一个降压稳压电路为芯片提供稳定在5V的直流电。在仔细考虑后,决定采用常用的降压稳压电路7805电路。该电路结构简单,易于实现,成本较低,且功能较为稳定,故非常符合读卡器系统的要求。由于具体电路比较常见,这里不再赘述。当所需电流超过稳压器标定值时,可采用外接功率管的方法来进行扩流。
3.4 单片机与MFRC500模块接口电路
PIC16F877单片机与MFRC500模块的数据通信是通过SPI三线串行总线实现的,其中三线分别为片选线SS ,时钟线SCLK和数据线SDATA ,SS和SDATA是双向的,而SCLK是单向的。时钟只能由主控制器PIC16F877单片机产生;SS为数据发送使能,若一方有数据要发送给另一方,则该方控制SS线为低电平,并在发送结束后将该线置高电平,接受方不得控制该线,双方必须遵守通信协议,不得同时控制该线;SDATA为数据线,由数据发送端控制,数据接受端必须释放该线。该线在一次传输开始时还同时为数据接受端的响应信号。
通信的起始者是PIC16F877单片机,应答者是MFRC500读写模块。完整的通信过程应该是,先由单片机向读写模块发送控制和数据信号,读写模块执行完单片机所要求的命令后,将命令执行的状态和响应数据反馈给单片机。开始通信前,单片机和读写模块必须都处于空闲状态。读写模块的RST接外部PIC16F877的I/O口,这样在读写模块出现异常时可由单片机强制复位。之后,单片机向SS控制线发送下降沿信号,等待读写模块在SDATA数据线上的响应。若在规定时间内SDATA数据线未响应,则单片机终止本次传输,将错误代码返回给主程序,由主程序进行错误处理。若SDATA数据线正确响应,则单片机可将命令和数据发送至读写模块。PIC16F877等待读写模块发回的状态和响应数据,若在规定时间内未响应,则终止本次传输,且向主程序报告错误。若SS控制线信号正确响应,则单片机可接收状态和数据[7]。
3.5 人机交互模块
该人机交互模块包括LCD显示和矩阵键盘电路,通过读卡器的识别功能达到对IC卡进行读写和系统设置的功能,使得能自动识别待通过人员的身份并进行对重要场所门的开关操作。LCD采用ACM1602A芯片,基控制器大部分为HD44780,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写和常用的符号,能有效显示人员信息和反馈读卡信息。键盘电路由2*8的矩阵键盘所构成,该矩阵键盘直接插接在电路主板上的一个10针扩展插槽上[8]。
3.6 通信模块
PIC单片机与PC上位机进行数据交换时,采用RS485串行通信,通信接口采用RS485总线。电路设计时采用MAX491芯片将单片机的串口数据转换为RS485信号输出。
4 系统软件设计
由于C语言具有编程效率高、软件调试直观、维护升级方便、程序重复利用率高和程序跨平台移植性高,所以本设计方案采用C语言来进行软件开发。该系统软件设计是在MPLAB IDE开发环境中进行开发,可以分为两个部分:对MFRC500读写模块应用程序的开发和对读卡器其他辅助电路的应用程序开发[9]。前者包括:主控程序、PIC单片机初始化程序、读卡器核心模块MFRC500子程序、防冲突子程序和数据块操作子程序等;后者包括:LCD显示子程序、键盘驱动子程序和蜂鸣器驱动子程序等。门禁读卡器的软件设计流程,见图3。门禁读卡器的软件设计需要依据其工作处理的过程,具体步骤如下所述。读卡器系统启动后,先对单片机和MFRC500读写芯片进行初始化处理,初始化主要目的是清空芯片中各种标志位和数据寄存器,防止之前的数据对以后判断产生影响,打开PIC单片机中断。初始化后,读取时钟芯片第一个RAM空间内的数据。判断读卡器系统内的日志信息是否己经存满,如果存满,就与上位机进行远程通信,发送错误信息,请求上位机提取所有日志信息。提取完成后,清空RAM中的所有数据信息,然后开始正常工作。如果RAM中的数据未存满,读卡器则等待卡片。当有MIFARE卡进入读卡器的射频范围,关闭PIC单片机中断,这使得读卡器在工作时不接收上位机的任何指令。关闭中断后便开始通过PSAM卡和该卡片鉴权,如果不通过则在LCD显示屏上显示相应的错误信息。通过读取卡片的序列号和带通过人员的信息,检查卡片是否在黑名单中。如果在,则在液晶显示屏上显示相应的错误信息;如果不在,蜂鸣器长响一声后开门并将所有信息存在存储模块中,将时钟芯片内的日志数量加l。
5 结语
本文提出并验证了一种针对门禁系统、基于PIC单片机的非接触式IC卡读卡器的设计方案,能实现对待通过人员的身份识别,对大门进行自动开关,性能稳定可靠。除此之外,制作较为简单,成本较低。但是在应用中,还有可改进之处,例如:读写芯片可改为采用遵守ISO14443 TYPE B标准的MFRC531芯片,这样可以提高通信效率、更易于实现软件编码、形成电路更简单。
参考文献
[1]陈大才,王卓人译.KlausFinkenzeller.射频识别(RFID)技术[M].北京:电子工业出版社,2001.
[2]莫德举,吴刚.通用非接触式IC卡读卡器的开发[J].仪器仪表学报,2006(23):936-939.
[3]丁跃军,来清民,刘建华,吴清荣.PIC单片机基础教程[M].北京:北京航空航天大学出版社,2005.
[4]陈冲,赵升,谢文彬,高猛.基于无线通信的非接触式IC卡读卡器设计[J].温州大学学报,2011(32):18-24.
[5]张俊杰,乔宜正.非接触式IC卡读写模块的应用开发[J].世界电子元器件,2004(12):44-46.
[6]王爱英.智能卡技术[M].北京:清华大学出版社,2000.
[7]李淑琴,陈林,范蟠果.射频识别非接触式IC卡读卡器的设计[J].计算机测量与控制,2007(3):378-380.
[8]许珊,王凤桐,徐霁堂.基于非接触式IC卡读卡器研究[J].中国校外教育,2014(2):163.
[9]严雄武,梁楚樵.MIFARE非接触式IC卡读卡器的设计构架研究[J].武汉理工大学学报,2002(26):85-87.