APP下载

基于RFID和WiFi的分布式校园智能考勤系统

2016-12-24胡必玲黄志炜郭玉堂

合肥师范学院学报 2016年6期
关键词:考勤线程串口

胡必玲,杨 诺,黄志炜,郭玉堂

(合肥师范学院 计算机学院,安徽 合肥 236032)



基于RFID和WiFi的分布式校园智能考勤系统

胡必玲,杨 诺,黄志炜,郭玉堂

(合肥师范学院 计算机学院,安徽 合肥 236032)

为解决高校日常教学管理中传统教师点名考勤方式的低效,采用RFID和WiFi设计实现了基于普通IC卡并能兼容校园卡的课堂智能考勤系统。系统以windows7为开发平台,采用B/S和C/S架构,以MyEclipse以及KeiluVision4为主要开发工具,实现了学生的自主签到,数据的智能感知和存储,考勤数据的分权管理,考勤表格的下载和打印。经测试,系统运行稳定,便捷高效。

RFID;智能考勤;WiFi;物联网

多数学校在对学生日常上课考勤的管理方面依旧采用传统的老师点名或学生签到的方式,这种考勤方式既浪费老师和学生宝贵的课堂时间,也使考勤数据的处理效率低下,不利于考勤数据的保存、校领导对记录文件的审核和查找以及学期末教师对学生平时成绩的给出。

物联网技术的发展,使得信息的获取、传递和分析变得智能化。本文在对学生日常上课考勤必要性充分认同的基础上,本着节约老师和学生宝贵的课堂时间,提升考勤数据的处理效率和存储有效性为根本目的,采用高度集成的非接触式[1]读写芯片结合数据库处理技术开发出适用于校园管理人员、教师和学生的智慧校园学生考勤管理平台。

1 系统方案设计

1.1 系统总体架构

为方便考勤各个教室各个时间段学生的上课情况,系统采用分布式的架构。每个教室部署一个考勤终端,结合校园内覆盖的无线网络,实现考勤数据的实时采集和存储。系统总体架构如图1所示。

1.2 系统工作流程

对于每个考勤终端,管理员提前设定系统执行签到的时间,当系统运行到该时间时,开始发送指令(包含此次课的课程名)给单片机,单片机接收到信息后,显示出课程名并开始准备读卡,学生用指定的卡刷卡后,读卡器开始验证该卡的密码,验证通过后,卡片信息通过串口传输至ESP8266模块进而转化成数据包通过无线路由传输到服务器端,服务器端的socket通信控制程序接收到信息后执行一系列的校验等其他操作,符合签到的卡号存放内存中待签到结束后一并存储至数据库。同时本系统WEB服务器通过外网映射器接入了互联网,领导或教师在异地可以打开WEB浏览器即可进行查看学生签到情况。

图1 系统结构图

图2 系统各终端工作流程

系统终端划分为三种模式,分别为开卡模式、密码模式和签到模式。系统采用的卡是普通IC白卡,进行注册后,硬件才会识别,执行接下来的程序。为了让系统更加具有安全性,设计了密码模式,通过此模式可以改变卡上的密码,密码不正确,在签到模式下刷卡后会发出警报。进入签到模式,单片机开始接受pc端发出的控制信号,根据接受的控制信号执行相应的签到程序。

系统对学生信息的录入采用excel表格自动解析导入数据库的方式,在网页脚本上对上传的文件格式、大小,以及异步查询是否已经导入过该班级学生信息等层层校验,另一方面对表格进行初步的解析,检查是否符合规定的格式,全部通过后才会导入数据库。教师信息的录入采用添加用户名和密码以及权限的方式。教师可以通过浏览器查询到所教班级的签到情况,同时可以一键将签到情况以excel表格形式进行导出。

2 硬件系统

2.1 单片机和射频读卡器

系统硬件使用51系列单片机STC11F60XE做为数据处理前端,并采用基于此单片机的MifareRC522作为读写芯片。STC11F60XE单片机工作电压为4.1-5.5v,主要核心部件包含有60k的flash存储器,1280字节的SRAM,1k的EEPROM;全双工异步串行口(UART),以及两个定时器,和看门狗等。全双工异步串行口可当2个串口使用,串口可在P3与P1之间任意切换,典型功耗<2uA,本设计中将一个口用于与读卡器进行数据通信,另一个用于与ESP8266无线通信模块进行数据通信。

MifareRC522作为读写芯片,简易框图如图3所示,它是一种高度集成的非接触式(13.56MHZ)读写芯片,支持ISO1443A/MIFARE,可以读写各种TypeA标准的IC卡。

图3 读写芯片框图

2.2 Wi-Fi模块ESP8266

ESP8266是一款超低功耗的UART-WiFi透传模块,封装尺寸小,使用功耗低,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi无线网络上,进行互联网或局域网通信,实现联网功能。ESP8266模块支持多种工作模式,本系统通过指令将模块配置在透传模式,使得ESP8266模块通过路由器连接互联网,手机或电脑通过互联网对设备进行远程控制。

3 软件系统

3.1 通信协议设计

为了在RFID阅读器的显示模块中提示当前签到课程、当前刷卡学生的姓名,以及错误反馈信息,如没有找到该学生的信息,未到签到时间等,需要PC机对卡号信息处理后进行反馈。实现方案是设计通信协议标准,PC机接受到信息后,反馈信息格式为(空格字母中文字样),如(y落花雨)代表姓名为落花雨的同学签到成功。第一个字符必须是空格,发送到阅读器端后,会对将上次的内容进行清除;第二个字符是字母,具体含义如下所示:

y代表签到成功

e代表未找到该学生的信息

n代表未到该学生的签到时间

i代表初始化变量

c代表重复签到

l代表修改课目

a代表录入信息异常错误

后面的中文则依据字母的不同进行不同的显示,若字母为y,则中文代表学生姓名,若是l,中文表示所签到的课程名。其余的情况不用跟随中文,c51底层自己处理,检测到是哪个字母就会做出相应的显示。

3.2 终端处理程序

终端处理程序包含单片机端数据发送和接收部分,wifi模块和服务器通信部分,刷卡时单片机端的信息处理部分。单片机发送数据至串口时直接调用send_byte(),并在数据前加上*号,以便服务器端的终端控制服务程序区分数据信息。单片机接收串口发送过来的数据采用中断的方式,服务器控制端发送数据,串口以约定好的协议方式去接收,如控制程序发送信息让单片机准备开始签到,并显示课名为数据库,中断函数接收串口数据开始进行处理,获取空格后将原先的用来接收数据的receive数组清空,将后面的字母赋值给uflag变量,将后面的中文文字放置到receive字符数组中,在放置的过程中会判断是否为字母o,若是就会停止放置,同时将处理结束的标志变量overflag置为o,为显示部分作准备。

ESP8266通信模块与单片机直接通过串口进行连接,由于ESP8266模块断电后,除了本身连接热点的信息能够存储外,其他的模式需要重新设置,于是在设计过程中将ESP8266模块和单片机一起初始化,部分核心初始化代码如下:

Send_ASCII("AT+CIPMUX=0"); //单路连接模式

Send_Hex(0x0d);//回车换行

Send_Hex(0x0a);

delay_ms(200);

Send_ASCII("AT+CIPMODE=1"); //透明传输

Send_Hex(0x0d);

Send_Hex(0x0a);

delay_ms(200);Send_ASCII("AT+CIPSTART="TCP","192.168.1.100",1000"); //建立TCP连接

Send_Hex(0x0d);

Send_Hex(0x0a);

delay_ms(200);

Send_ASCII("AT+CIPSEND");

通过透明传输方式,单片机可以非常便捷的将信息通过WiFi模块传输至服务器端。

单片机端的信息处理部分则是结合通信协议的规定,单片机开机后会循环调用ctrl_process(),即始终刷新屏幕,循环显示函数中会根据uflag的字母来显示相应的信息。为避免在显示的过程中中断函数还没有将数据添加到receive字符数组中,显示函数就开始取数据,导致出现丢失数据或者乱码的现象,在判断uflag之前先判断overflag的值是否为o,若是则往下执行,否则还是显示主界面。Uflag值若为字母y,则显示签到成功;若为字母q,则提示该学生请假;Uflag值若为字母n,提示未到签到时间;若为字母a,则提示录入信息错误,录入信息错误主要原因为在数据库中没有存储该卡号或系统异常导致无法存储签到信息;Uflag值若为字母c,则提示重复签到。

3.3 终端控制服务程序

图4 终端控制服务程序处理框图

如上图4为终端控制服务程序的处理框图,图中连接设备指通过路由器连接到服务器的第二层线程上的设备,此时还没有进行身份的验证,合法设备指终端通过了系统的检测,成功创建了第三层线程进行后续控制操作的设备。终端控制服务程序主要负责监听端口,验证连接设备的身份,拦截无关设备接入,控制单片机工作(包括控制单片机进入签到模式,待机,准备签到,显示签到结果等)。签到终端控制服务程序采用三层嵌套线程设计,循环监听线程启动后一直监听端口号1000,如有单片机通过TCP/IP连接上后,会进行身份校验,通过后会开启下一个线程工作,否则会自动断开连接。签到终端服务工作线程,通过上个线程开启后并且获得一些socket连接的I/O流资源,通过逻辑控制,动态的取出数据库的定时信息,并进行相应的控制操作,包括控制单片机显示某些资源,工作与待机。为了保证系统的统一性,在tomcat开启时启动fiter过滤器时开启一个死循环线程,并用此线程去控制以上线程的开启与关闭。线程之间的明细分工,理论上对于同时接入的设备数量无限制,并且保证了每个终端与服务器的连接是独立唯一的,不存在数据干扰影响的情况,在实际测试中,我们用软件进行了模拟,windows7系统8G内存I5-3230处理器在多达50个连接数量时,一次完整签到需要耗费150ms-300ms时间,效果较为理想。

为了区分连接连接服务器的每个终端,设计了一张数据库映射表,每个IP地址对应一个签到教室,系统开启时会取出表中每条数据并将每条数据变为IP映射数据的实体类对象放入内存集合中。每个终端连接上服务器后程序会自动查找集合中是否存在该对象,若存在,则会转入下一步操作,并且去除集合中该对象,若不存在则会视为无关设备被拦截住,并且断开该socket的连接,连接成功后若出现异常会释放该连接资源并且恢复集合中的IP映射对象。该设计有效保证了终端控制程序的安全性,让无关的设备不会干扰系统的运作。同时为解决终端断线无法重连的问题,使用心跳包技术,对每个终端都加了一个中断函数,每隔5秒就会向服务器发送一个字符#号。终端控制程序中设定socket连接的超时时间为10秒,当控制程序10秒内未收到终端发来的数据,就判定终端已经断线,并自动释放该连接资源,恢复集合中IP映射对象,让无意或者人为断开连接的终端在10秒后重连成功。

3.4 系统web端设计

系统web端采用Jsp,servlet,JDBC搭建,为了规范前台页面开发,不再使用嵌套JAVA代码,一律使用JSTL标签与EL表达式,为了增加系统的用户友好性,前台数据通过jquey技术与后台进行交互,数据传递使用了主流的json数据格式,通过apachepoi技术支持excel表格进行操作即支持考勤数据数据的导出,学生信息的自动解析录入。

系统支持管理员及各领导进行学生信息管理,课程信息管理,班级信息管理,以及所有班级的考勤信息管理,对于普通用户及老师,能够对授课班级的考勤信息、请假信息进行管理。如图5是系统的登录主界面。

图5 Web登录界面图

3.4.1 学生名单自动解析

为了提高录入学生信息的效率以及提升用户体验度,使用poi的jar包解析excel表格的数据。由于学生的基本信息的重要性,在解析的时候使用了严格的校验方式,一方面在网页上进行严格的控制,如网页脚本对上传的文件格式,大小,以及ajax异步查询是否已经导入过该班级学生信息等的层层校验,另一方面对表格进行初步的解析,分析是否符合约定的标准,全部通过后才会开始正式提取数据。通过上一层的严格校验后,系统会将excel表格等相关数据全部提取到内存中,最后会调用批处理模块将数据批量保存至数据库中,大大提高了导入的效率。

3.4.2 签到结果查询和导出

传统的获取服务器端数据都会采用重定向或者转发技术,然而这种做法的最大弊端在于浏览器在发送请求时,若服务器不能及时给与响应就会造成浏览器短暂性的白屏(假死),显然这会让用户体验度大大折扣。本系统使用jquery的ajax异步通信,浏览器提交请求的时候,jquery一线程会调取过渡动画,另一线程进行提交请求。避免了浏览器端假死现象,同时用户可以进行其他操作。同时使用Apachepoi技术实现数据的自由导出。

3.5 安全性设计

3.5.1 对IC卡进行加密

由于读卡器会识别一切标准的IC卡,为避免单片机对同等规格的卡进行读取,减少对系统的工作效率的影响,系统设计中实现了对白卡的加密操作。初始化阶段向卡中写入一条秘钥,刷卡后会进行验证密码,错误的直接出现警告,通过后才会传输至服务器端。如代码中若定义密码为8,则当检测到密码为8时,则会调用send_byte()函数将采集到的卡号经串口发送至服务器端,否则会提示错误信息。在一定程度上提高了系统的安全性以及执行效率。

3.5.2 权限管理

系统使用B/S架构实现了跨平台异地管理,为增强系统的安全性能,采用filter过滤器对于所有核心功能内容页面进行过滤,并在filte中设置机制获取用户访问的IP地址[9],超过5次提交账户,密码错误的立即封锁此IP地址。当非法用户进行枚举法攻击时,这套机制显得更为安全有效。

3.5.3 防sql注入

sql注入攻击是黑客对数据库进行攻击的常用手段之一。针对这种严重性的安全问题不能再使用传统的sql语句拼接法,而是使用prepareStatement()方法严格控制输入的字长,并且高频率使用这种方法时会进行批处理,增加执行效率。

4 系统测试

本部分对设计实现的考勤系统进行功能测试,主要包括学生名单的自动导入、签到过程以及考勤结果数据的显示与导出。系统测试实验连接图如下所示,测试系统包括一台pc机(用作服务器),四个考勤终端,每个终端包括一个单片机,一个RFID刷卡模块,一个WiFi模块,以及供电电源。

图6 系统测试实物连线图

测试流程如下:

(1)数据库录入终端IP映射信息;

(2)管理员添加课程的信息;

(3)选择对应课程上传对应班级学生信息的excel表格;

(4)批量添加课程的上课时间段信息;

(5)启动服务器,开启每个终端连接上服务器;

(6)终端连接成功后会被服务器通知进入签到模式的待机状态;

(7)到达指定签到时间后,服务器通知对应的终端进入签到模式;

(8)刷卡即可进行签到,终端会显示服务器返回的签到结果。

图7 学生名单自动导入

图8 签到测试

图9 查询详细签到信息图

图10 导出签到信息

图11 签到信息表

测试结果如图所示,系统能够实现学生名单的自动导入解析,考勤时间的批量设定,考勤数据的查询显示和结果的导出。系统操作简单,稳定性强,成本低,易扩展,具有很强的实用性。

5 结语

设计实现的分布式校园智能考勤系统,主要针对于一些需要在短时间内完成人群数量较多的签到场景,如学生考勤,课与课之间只有10分钟间隔,需要完成100人左右的签到,若采用单个指纹机进行签到,可能时间不够,多个指纹机成本很高,因此使用此系统可以完美的解决以上矛盾,该系统可以完美兼容多种卡,可以使用校园卡,避免重复购买白卡,在一定程度上降低了成本,而且方便数据的统一管理。系统兼容多种主流浏览器,如IE,Firefox,chrome ,360浏览器,QQ浏览器等,执行速率在110ms-165ms之间,服务器端传输中文至单片机端传输的错误率为零。系统运行良好,稳定。在此基础上,今后一段时间的工作将优化考勤终端外观设计,优化系统软件,进行实际部署使用。

[1] 徐爱钧.Keil C51单片机高级语言应用编程与实践[M].电子工业出版.2013.

[2] 吴湛击.无线通信新协议与新算法[M]. 电子工业出版.2013.

[3] 李江全.单片机串口通信及测控应用实战详解[M].人民邮电出版社.2014.

[4] 格特勒著. HTML5开发手册[M].人民邮电出版.2013.

[5] 赵俊峰.Java Web应用开发案例教程[M].清华大学出版社.2012.

[6] Yama Tienne,Erik. Apache PoiTurbs publishing[M]. 2012.

[7] 蒋海昌.Java Web设计模式之道[M.]清华大学出版社.2013.

[8] David Johnson著.AJAX企业级开发[M]. 人民邮电出版社.2008.

[9] [美]鲁尼著英著 .IP地址管理原理与实践[M].机械工业出版社.2013.

[10] [美] 克拉克(Justin Clarke)著,施宏斌,叶愫译.SQL注入攻击与防御[M].清华大学出版社.2013.

2016-05-21

合肥师范学院青年基金项目(2015QN13);安徽省高校省级自然科学研究重点项目(KJ2013A217)资助

胡必玲(1985-),女,安徽六安人,硕士,助教,研究方向为无线传感器网络,物联网。

GTP

A

1674-2273(2016)06-0028-06

猜你喜欢

考勤线程串口
基于C#线程实验探究
浅谈AB PLC串口跟RFID传感器的通讯应用
基于国产化环境的线程池模型研究与实现
基于人脸识别技术的考勤应用研究
智能人脸识别考勤系统
浅谈电子考勤的优势及简介
便携式指纹考勤信息管理系统设计
浅谈linux多线程协作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索