引言
信息时代的校园离不开信息化的管理,数字化“校园一卡通”建设是校园信息化建设的重要组成部分,是校园信息化采集的基础工程。校园一卡通是由学校统一发放的集工作证、学生证、图书证、餐卡、浴卡、上机卡、考勤卡、电子钱包等功能于一体的非接触式射频IC卡。校园一卡通将智能IC卡的强大功能与计算机网络的数字化理念融入校园,将学校各个系统连为一体,可以随时掌握每一个持卡人的基本情况,有效地简化校园日常管理,提高学校的管理水平和服务质量。同时,在减少学校的重复性投入建设、管理及节约费用等方面也起到积极作用。鉴于RFID技术的逐步成熟及校园一卡通的广泛应用与优势,为弥补学生考勤管理的缺陷,设计开发了基于校园一卡通的考勤管理系统。
1 考勤管理系统概述
在本系统中,校园一卡通作为非接触式身份识别的标签,构成考勤管理系统的信息采集源。校园一卡通与读卡器之间利用射频方式进行数据传输,读卡器对校园一卡通的操作可以在瞬间完成。学生在上下课时,只需将个人的一卡通在读卡器前一晃,读卡器即可自动、快速、准确地获得校园卡卡号和刷卡时间等信息,然后微控制器对信息简单打包,上传至上位机软件系统。考勤管理系统软件对接收到的数据包进行解包、校验等操作后,及时修改相关数据并把部分信息保存至数据库,方便教师随时查询学生的出勤情况、汇总考勤报表等,从而有效地完成考勤管理工作,为学生考勤管理提供完整的解决方案。
2 系统硬件设计
2.1 校园一卡通工作原理
校园一卡通的电气部分由ASIC和天线组成。卡片的天线仅仅由几组线圈组成,很容易被封装到卡片中。卡片的ASIC一般由一个高速的RF接口、一个控制单元和一个几KB的EEPROM组成。
当读卡器向一卡通发出一组固定频率的电磁波时,卡片内的LC串联谐振电路的频率与读卡器发射的频率相同。在电磁波的激励下,LC谐振电路产生共振,产生微弱电流作为电源为其他电路提供工作电压,将卡内的数据发射给读卡器或者接收读卡器的数据。
2.2 一卡通读卡器模块
本模块采用AK-RFMOD05CD芯片对校园一卡通进行读写操作,该芯片可以读写符合ISO14443 TYPE A/B -2,-3规范的射频卡芯片(AT88RF020、AT88SC6416CRF、ST_SRI176、ST_SRIX4K、MIFARE S50、MIFARE S70以及其他兼容ISO14443 TYPE A/B规范的CPU卡、双界面卡)。芯片与MCU之间可以通过多种接口(UART、SPI、TWI等)进行数据通信,便于用户使用。从应用的角度概括起来,其性能特征如下:
◆ 完全兼容ISO14443 TYPE A和TYPE B标准,可以稳定读写各种符合ISO14443 A/B两种通信协议标准的卡片;
◆ 支持UART、SPI、TWI协议等多种外部通信接口,方便用户开发;
◆ I/O引脚CMOS和TTL输入/输出电平兼容;
◆ 直接驱动50 Ω天线;
◆ 卡片通信FIFO为48字节;
◆ 工作频率13.56 MHz。
同时,该芯片可对外提供13个I/O引脚、256字节的EEPROM、内置上电复位电路、看门狗电路等硬件资源。其本身还具有自动检测与测控功能,便于应用系统的开发。
2.3 读卡器模块硬件接口
读卡器模块采用Wiegand协议与微控制器通信。本系统将Wiegand数据输出线WD0和WD1分别与CortexM3系列微控制器LM3S1138的2个I/O引脚相连,读卡器模块与LM3S1138连接图如图1所示。
图1 读卡器模块与LM3S1138连接图
读卡器数据线WD0连接PB0引脚,当该引脚被读卡器置为低电平时,说明当前传输一位数据0;读卡器数据WD1连接PB1引脚,当该引脚被读卡器置为低电平时,说明当前传输一位数据1。读卡器的Wiegand协议选择线连接PB2引脚,当该引脚悬空时(高电平或高阻)时,模块选择26位 Wiegand协议,否则选择34位Wiegand协议。此外,读卡器模块与微控制器LM3S1138共地。
2.4 Wiegand协议与接口定义
Wiegand协议是由摩托罗拉公司制定的,具有适用于涉及门禁控制系统的读卡器和卡片的许多特性,其协议没有定义通信的波特率和数据长度。Wiegand协议支持多种数据格式,现在应用最多的是26位、34位、36位、44位等,其中标准26位格式是一个开放式的格式,并且对所有HID的用户开放,其数据帧格式如图2所示。
图2 26位Wiegand数据帧格式
任何人都可以购买某一特定格式的HID卡,并且这些特定格式的种类是公开可选的,现在几乎所有的门禁控制系统都接受26位格式的标准,促使其逐步成为广泛使用的工业标准,其中26位Wiegand数据帧格式定义如下:
◆ 第1位为2~13位的偶校验位;
◆ 第2~9位对应电子卡HID码的低8位;
◆ 第10~25位对应电子卡的PID号码;
◆ 第26位为14~25位的奇校验位。
以上数据从左至右顺序发送,高位在前。在上述标准26位Wiegand协议数据中,只包含了电子卡HID码的低8位二进制编号(实际电子卡的HID码为16位),即对应于Wiegand数据帧的第2~9位;同时包含电子卡的16位PID二进制编号,即Wiegand数据帧的第10~25位。
当安装读卡器模块时,在读卡器和门禁控制面板的连接点(终端)上都能够看到7根连接线, Wiegand接口引脚定义如表1所列。目前几乎所有的标准型读卡器都可以提供可供选择的Wiegand接口,WD0和WD1线负责传送Wiegand数据,也被称为Wiegand信号线。Wiegand数据由这2根线分别输出0或1。输出0时,WD0线上出现一个负脉冲;输出1时,WD1线上出现一个负脉冲。
表1 Wiegand接口引脚定义
2.5 26位Wiegand数据接收
Wiegand数据的接收对时间的实时性要求比较高,如果用查询的方法接收极易出现丢帧的现象。假设查询到WD0为0时主程序正在指向其他任务,等主程序执行完该任务时WD0已经变为1了,那么这样就丢失了一个Wiegand数据0。这样读出的Wiegand数据将不能通过奇偶校验,导致MCU接收不到读卡器模块发送的正确卡号。目前,以外部中断方式接收Wiegand数据是比较好的选择,其核心代码如下:
char card_id [27];
const int WiegandBitType 26
void GPIO_Port_B_ISR(void) { /*中断服务程序*/
static int len=0;/*声明静态整形变量,用于记录存储位置*/
unsigned long ulStatus;/*声明变量用于存储端口中断状态*/
ulStatus=GPIOPinIntStatus(GPIO_PORTB_BASE,true);/*读端口中断状态*/
GPIOPinIntClear(GPIO_PORTB_BASE,ulStatus);/*清除端口中断*/
if(ulStatus & GPIO_PIN_0) card_id[len++]=0;/*判断触发中断引脚,存储数据0*/
if(ulStatus & GPIO_PIN_1) card_id[len++]=1;/*判断触发中断引脚,存储数据1*/
if(len>=WiegandBitType) len=0;/*判断Wiegand数据帧是否接收完毕*/
}
程序开始后初始化相关引脚的输入/输出方式,并且设置PB0和PB1的中断为下降沿触发,在接收数据时,主程序中断后进入相应的中断服务程序。在中断服务程序中判断触发中断的引脚编号,得知当前传输的数据是0或者1,并将数据存入一个全局静态数组。其Wiegand数据接收流程如图3所示。
图3 Wiegand数据接收流程
使用数字式示波器对读卡器的WD0和WD1数据线的波形进行截取和分析。当协议选择线为高电平或悬空时,即选择26位Wiegand协议。此时将一张校园卡放置在读卡器上,截取的26位Wiegand数据波形如图4所示。其中上面波形为WD0,下面波形为WD1。从而可知该卡的26位Wiegand码为00000110100010010100110111,数据波形与微控制器所接收的数据保持一致。
3 上位机软件设计
该系统的上位机软件是基于Visual Studio 2008系统平台进行开发,并采用Access数据库技术。开发过程中,主微控制器把采集到的校园一卡通编号等信息都通过虚拟串口传输到PC上位机,上位机软件对接收到的数据再进一步进行处理。为了较好地完成通信任务,该软件采用多线程串口通信CserialPort类进行开发,CserialPort类是由Remon Spekeijse提供的免费串口类,其内部函数完全透明,并允许用户对相关类进行改造、补充与完善。
图4 26位Wiegand数据波形图
刷卡过程中,微控制器通过中断方式获得校园一卡通的ID,然后将数据进行打包、封装并通过UART0传输至上位机。上位机软件在获得传输到的数据包后,立即对数据包进行解包解析,并利用解析数据查找已备份的数据库系统,获得校园一卡通主人的考勤信息、基本信息等并予以显示。考勤管理系统软件界面如图5所示。同时软件需要对部分数据库数据进行修改和备份,保证用户对数据的准确访问。
图5 考勤管理系统软件界面
此外,根据用户的需要灵活地设计系统的各子功能模块,给出相应的功能模块集;将原有子系统的某些配置功能置于系统部署模块中,可以有效地防止系统由于一卡通用户配置不当而产生的不良后果,从而减少系统维护的开销。
结语
校园一卡通的考勤管理系统通过先进的RFID获取准确的数据,采用Accesss数据库存储备份数据。这些数据信息能够真实地反映学生的出勤情况,提供了基于各种条件的统计、查询与分析功能,为学校教学管理的全面开展和学生考勤考核提供了重要的参考依据,具有一定的实际应用价值。