课堂指纹签到智能管理系统的设计与实现
2020-07-02项新建朱韬汛郑永平
项新建,朱韬汛,郑永平
(1.楼宇控制与节能优化国家级实验教学示范中心,合肥 230000;2.浙江科技学院 a.自动化与电气工程学院;b.机械与能源工程学院,杭州 310023)
21世纪初开始出现了将指纹识别应用于考勤的研究。段少雄等[1]通过对基于极坐标下点模式匹配的指纹匹配算法进行优化,设计了一种具有排班与管理功能的指纹考勤系统;王超峰[2]在嵌入式ARM平台上加入指纹识别技术,设计了一种体积小、可移动的考勤机,并能通过USB接口向计算机系统上传数据;曹始亮等[3]将WiFi通信技术与指纹识别相结合,设计了一种适用于WiFi覆盖范围内的考勤系统。以上运用指纹识别技术的考勤系统将指纹与个体做到精准匹配,降低了成本,提高了效率。随着信息化、网络化进程的加快,近几年考勤系统开始向以计算机存储为基础的联网考勤方向发展[4]。李书钦等[5]采用校园无线技术和信息化手段设计了一种高校课堂智能考勤方法,提高了考勤工作效率;伟力斯[6]设计了一种基于射频识别(radio frequency identification,RFID)技术并采用SQLServer2012数据库系统进行信息存储的签到系统;在此基础上王珏辉[7]将指纹签到应用于高校学生签到,结果表明能有效提高签到效率。随着手机取代计算机的趋势越来越明显,陈长印等[8]设计并实现了在签到系统中使用手机进行签到控制及查看。基于以上研究,以实现课堂考勤的智能化与自动化为目标,我们设计了一种课堂指纹签到智能管理系统,通过WiFi网络与指纹终端进行数据传输,按照Modbus Tcp协议对数据进行编译以增加传输速率。
1 方案设计
1.1 总体框架
图1 系统框架Fig.1 System diagram
系统由指纹终端、服务器和管理软件组成,如图1所示。指纹终端由微控制单元(microcontroller unit,MCU)控制模块、通信模块、指纹模块、指示灯模块及电源模块组成。学生版App通过服务器控制指纹终端进行指纹录入与比对,在作为服务器的教室计算机上使用MySQL数据库对签到信息进行管理。
工作时将系统置于同一WiFi网络内,在学生版App中输入学号、姓名并选择工作模式,服务器将这些数据处理后发送到下位机终端进行控制。录入模式下,指纹终端存储学生指纹并生成指纹ID,MCU将ID传回服务器与学生信息对应,共同保存于运行在教室计算机上的MySQL数据库。签到模式下,终端将采集到的指纹与指纹库比对,返回ID给服务器。服务器在数据库中进行信息比对并将结果发送至教师版App显示。数据传输按照Modbus Tcp协议进行。
由于系统在WiFi环境下工作,指纹终端固定于教室中,因此只有持手机到教室签到才能成功。为防止使用同一部手机通过指纹膜代签的情况出现,服务器对完成签到的手机IP地址进行记录,当天不再处理其后续数据。由于通过局域网中的动态主机配置协议(dynamic host configuration protocol,DHCP)进行自动IP地址分配时一般会自动采取一个媒体存取控制地址(media access control address,MAC)分配一个固定IP的策略,即一部手机连过一次局域网后IP地址固定,因此如果同一学生在签到成功后第2天使用别的手机进行签到会造成IP地址冲突,系统会做出提醒。
1.2 硬件设计
指纹终端电路如图2所示。MCU控制模块采用嵌入式芯片STM32F103ZET6为主控制器,该单片机内核为Cortex-M3,自带外设直接存储器访问(direct memory access,DMA)、看门狗(watch dog timer,WDT)等各类定时器及多个通用同步/异步串行接收/发送器(universal synchronous/asynchronous receiver/transmitter,USART)[9]。芯片的运算速度快且功能强大,适用于系统使用2个USART进行数据收发的情况。
图2 指纹终端电路图Fig.2 Fingerprint terminal circuit diagram
1.2.1 指纹模块
图3 AS608电路图Fig.3 AS608 circuit diagram
以AS608芯片为核心的指纹模块内置DSP(digital signal process,数字信号处理器)运算单元并集成指纹识别算法,能快速采集图像以提取特征[10]。模块配备USART,系统MCU通过USART2与其数据交互。模块内设有1个72 KB的图像缓冲区与2个512 B的特征文件缓冲区,用户可通过指令读写任意一个缓冲区[11]。AS608电路如图3所示,用户可读取状态引脚(WAK)用于判断有无手指按下,模块得到256×288像素的图像进行特征提取并存放于缓冲区,提取过程控制在0.40 s以内。录入模式下芯片将特征文件以0~299的ID编号形式存入容量为300的指纹库。
1.2.2 通信模块
系统选用深圳安信可科技有限公司生产的ESP8266模块实现WiFi通信。该模块既可用作服务端也可用作客户端,支持传输控制协议(transmission control protocol,TCP)、用户数据报协议(user datagram protocol,UDP)、超文本传输协议(HTTP)等网络协议。由于TCP协议通过3次握手与服务器建立连接,传递数据时有确认应答、滑动窗口、快速重传、拥塞控制等机制,在数据传输完毕后才断开连接以节约资源,能保证数据的完整性[12]。
图4和图5分别为TCP通信中指纹终端与服务器连接和断开的过程。图4为3次握手建立连接的过程,下位机发送请求连接的同步序列编号(synchronize sequence numbers,SYN),服务器响应后返回针对SYN的确认标志(acknowledge character,ACK),终端再次发送ACK标志建立连接。图5为断开连接的过程,服务器接收到终端发送的结束标志(FIN)后,返回针对FIN标志的ACK标志,终端再次发送ACK标志后等待服务器断开连接。
图4 指纹终端与服务器建立连接Fig.4 Fingerprint terminal connected with server
图5 指纹终端与服务器断开连接Fig.5 Fingerprint terminal disconnected with server
1.3 软件设计
软件部分由Socket服务器与Android客户端组成,均使用JAVA编程语言编写并按Modbus协议传送数据。
1.3.1 Modbus通信协议
由于Modbus具有标准、开放且帧格式紧凑等特点,因此本系统使用该协议规定的应用层数据格式。Modbus是一个请求/应答协议,一个通用帧中含有附加地址、功能码、数据及差错校验4部分。每次通信都是主站先发送命令,可以广播也可以寻址单播。功能码与数据组成协议数据单元(protocol data unit,PDU),功能码用于告诉从站要执行的功能,数据是传输的信息[13]。
Modbus协议共分为RTU、TCP和ASCII 3种模式,RTU与TCP皆采用十六进制对数据编码,与采用ASCII字符发送报文的ASCII模式相比数据吞吐量更高。TCP模式下数据帧由MBAP报文头与PDU数据单元组成。由于数据使用TCP/IP协议进行传输,能保证数据的完整性,因此不再需要差错校验,通过MBAP报文头能完成从站匹配和验证报文结束的工作[14]。
表1为改写参数时的数据帧格式。MBAP报文头中11 12为事物处理标识,用于Modbus客户机与服务器配对,由客户机发起,服务器复制;00 00表示使用的是TCP模式的Modbus协议;00 0B表示从下一字节开始到数据帧结束的字节数,此处请求时字节为11 B,响应时为6 B;01表示单元标识符,同样由客户端发起,服务器复制。功能码中10表示要实现写寄存器的功能。数据部分前两个字节00 00表示起始地址;00 02表示写2个寄存器;04表示用到的寄存器共有4个字节;寄存器1用于存放学生学号信息,此处为03 F8,表示学号信息十进制数1 016,寄存器2用于存储指令,此处为00 05,表示进入签到模式。
表1 改写参数时数据帧格式Table 1 Data frame format when overwriting parameters
1.3.2 Socket服务器
系统中服务器用于数据处理,程序运行后服务器始终监听本机端口号为3 000的端口,一旦有客户端建立连接,立即开启数据接收线程。由于Socket(套接字)网络通过输入输出流进行数据交互,因此进入线程后服务器实时监控输入流以获得来自客户端输出流的数据[15]。Socket网络通信模式如图6所示。
图6 Socket网络通信模式Fig.6 Communication mode of Socket network
图7 Socket服务器流程Fig.7 Flow of Socket server
由于系统按照Modbus协议进行数据传输,因此服务器在获取数据后需对其进行解析以得到控制指令,然后根据指令内容向不同客户端发送命令以控制下一步的操作。Socket服务器流程如图7所示。服务器解析后能够得到录入、开始录入、录入成功、已录入、签到、比对数据、签到成功、签到失败及无法匹配9种指令。根据这些指令,服务器会进行相应的操作。
服务器使用MySQL数据库进行数据信息的存储。MySQL数据库作为一种常用的关系型数据库,使用SQL语句进行连接、查询等操作。编写程序时在使用forName()方法指定MySQL驱动程序之后通过DriverManager类中的getConnection()方法连接到数据库。然后通过使用createStatement()创建的statement对象对数据库进行数据查询、更改、插入等操作。系统在数据库表格中设置了ID、学号、姓名及日期4列。
1.3.3 Android客户端
系统Android客户端分为学生版App和教师版App两类,学生版App供学生进行模式选择,教师版则用于存储信息与查看签到情况。
学生版App界面如图8所示。首先将手机连入系统所处的WiFi网络中,点击连接按钮与服务器相连;再依次输入学号、姓名两项信息,即可进行录入或签到的工作。当按下录入按钮后,向服务器发送学号、姓名及录入指令,服务器以Modbus TCP协议对内容进行编码并发送至相应客户端以实现功能。当按下签到按钮时,服务器直接将相应数据发送至指纹端开始指纹识别,根据签到结果App显示不同提示信息。教师版App仅限于任课教师使用,登陆界面如图9所示。输入该教师的账号和密码后点击登陆,进入信息查询界面,如图10所示。同样,教师版App使用时先将手机连入系统所处的WiFi网络中。签到时,指纹匹配成功后返回的ID值与学生信息以数据帧格式被传至服务器,服务器在数据库中进行搜索比对,比对成功则录入日期,表示该生当天签到成功。选择好日期后点击完成按钮,返回到图10信息查询界面,点击查询按钮,学生的签到信息会显示在下方空白处。同时软件会统计出当天已签到人数及未签到人数。点击显示未签到人数的文本框后会显示未签到学生的具体信息。
图8 学生版App界面Fig.8 Interface of student App
图9 教师版App登陆界面Fig.9 Login interface of teacher App
图10 教师版App信息查询界面Fig.10 Interface of information inquiry of teacher App
2 功能测试
2.1 录入和签到功能测试
为测试系统的实际效果,选取10名学生在实验室进行功能测试。测试过程中每人分别进行录入及30次签到,签到周期为30 d,每天进行1次。录入测试时先将手机连入系统所处WiFi网络并连接上服务器,学生将模拟的学号、姓名输入学生版App对应位置。在App上弹出录入中的提示信息后将手指紧贴指纹模块进行指纹录入,录入完成后,App上弹出完成提示。签到测试时手机同样先连接服务器,信息输入后点击签到,待提示信息出现后将录过指纹的手指紧贴指纹模块进行签到,根据签到结果App会显示签到成功、失败或数据库无法匹配的提示信息。
测试结果表明,在学生样本为10人、总签到次数为300次的情况下系统都能够实现相应的功能,但录入及签到的时间有时会超过5 s,这有待改进。
2.2 信息查询测试
2019年3月18日10名学生进行签到测试后的界面如图11所示,其中8名学生已完成签到,2名学生还未签到。
3 结 语
针对高校学生课堂签到过程中可能出现的作假等问题,我们设计了一种课堂指纹签到智能管理系统。通过指纹终端完成指纹的录入与比对,通过运行于服务器上的MySQL数据库进行数据信息存储,通过学生版App进行信息输入与模式选择,通过教师版App进行签到结果查看。整个系统工作于同一WiFi网络内,数据处理均完成于服务器。为增加签到结果的真实性,系统对完成签到的手机IP地址进行记录以阻止其再次提出签到请求。但在试验测试中发现,通过将手机设置为静态IP的方式能改变IP地址,这在今后的研究中有待完善。