一种基于RFID的作业快速收评系统的研究
2019-09-26徐屹恒丁当张昕杨
徐屹恒 丁当 张昕杨
研究背景
目前中小學教师或课代表每天手工登记交作业情况、核查出没有交作业的学生,耗时耗力,且容易发生差错而需要二次核实,部分科目的作业批改后还要人工登记作业成绩等。人工收作业登记效率低下常常让教师们苦恼。发现这个问题后,我们走访了几个小学、初中的教师,得知他们常常为找出谁没交作业而花费大量时间。因此,开发一套提高作业情况登记效率和记录分析作业成绩等第的系统是非常有意义的。
研究思路
图书馆的图书借还系统给了我们灵感,该系统是基于RFID技术实现的。每本书里都有电子标签,当把图书放置在操作台上时,RFID读卡器便能识别一叠借/还的图书,一两秒时间操作屏幕上就能显示书目列表。系统自动与图书馆数据库联网,实现图书的借/还记录。借鉴这个思路,我们研发了一套基于RFID技术的作业快速收评系统,在每本作业上都贴上电子标签,教师收完作业,把本子放在操作台上,系统就能自动读取出哪些同学交了作业,再和数据库中学生信息比对,没交作业的学生清单便立刻显示在屏幕上。
研究方案
为了实现基于RFID的作业收交,我们首先需要从RFID的工作原理、RFID的种类、RFID标签的价格研究项目的可行性。确定了基于RFID作业收评系统的硬件结构、软件功能,接着我们采购RFID读写器和标签,研究读写器的功能和标签数据的读写方法,调测RFID和电脑连接的软件代码。硬件调试成功后,按照制定的软件功能,设计数据库,完成客户端、服务器端程序的编写。
研究过程
在每个作业本上贴上有学生信息的RFID标签,在客户端控制超高频RFID读写模块,同时读取一叠作业本信息,并将读取到的信息写入服务器端数据库,教师还可选择写入作业成绩功能将作业等第写入数据库。教师、家长、学生可以访问服务器端,获取未交作业学生名单、作业评分等信息。系统的数据库采用广泛用于嵌入式设备的轻量型数据库SQLite,客户端和服务器端软件都采用Python语言进行编程。
图1为系统软件功能及实现方法的思维导图。通过此图,我们明确了收作业客户端、Web查询客户端和服务器数据库的功能和相互之间的关系,明确了系统需要设计的用户界面、数据库内容和要实现的软件功能。
RFID选型
每个作业本上都需粘贴标签,因此标签必须为无源型的而且要小,同时成本要低;另外基于作业快速收交的需求,系统需要使用具有高速地多重标签识别功能的RFID识读器。通过查阅资料,我们采购了超高频RFID读写器UHFReader188和超高频RFID标签。
外壳制作
为了保护RFID读写器并方便堆放作业本,我们为RFID读写器制作了外壳。外壳采用椴木板,在makercase网站上输入外壳尺寸生成设计图纸,由激光切割机切割,用热熔胶粘合成型。
RFID标签学生信息写入
本系统设置学号为“入学年份+班级号+学号”,如20170301为2017年入学的3班1号学生。在标签中不设置科目信息,是为了方便标签重复利用。把RFID读写器连接到电脑串口,用读写器软件设置正确串口号,打开所连接的串口,然后将标签逐一放到RFID读写器上,使用RFID读写器自带的软件对标签编码进行改写。如果电脑没有串口,可采用串口转USB线将读写器连接至电脑USB口。
RFID读写器串口调试
本项目用到的串口命令有:打开串口、向RFID读写器发送读取标签命令、接收串口数据、关闭串口。
打开串口、接收串口数据、关闭串口
调用Python中pyserial模块的语句。
·打开串口:ser=serial.Serial(ser=serial.Serial(port=comport,baudrate=57600,bytesize=8,parity='N',stopbits=1,timeout=10》。经过测试,超时参数设为10秒能稳定读出32个标签数据。
·接收数据:ser.read(20480)。20480表示缓冲区字节数。
·关闭串口:ser.close()
向读写器发送读取标签的命令需按照RFID串口协议,向读写器发送一串十六进制命令代码。Python语句为:
d=bytearray.fromhex(06 FF 01 05 01 2F FB)
ser.write(d)
发送了询查命令后,使用语句:c=ser.read(20480),将RFID读写器应答的一串十六进制数据读到列表c,最后对读到的串口数据c进行解析,分离出本次读取到的学号信息并排序。
数据库设计
系统数据库采用soLlite数据库。它能够支持Windows、Linux、Unix等主流操作系统,同时能够跟很多程序语言相结合。系统的设计主要是2个数据表学生信息表(记录学生基本信息),以及提交作业的信息表。
用户界面设计
系统的用户界面有收作业客户端用户界面和Web查询客户端用户界面。收作业客户端用户界面采用Python tkinter设计,使用了Menu组件、Button组件、OptionMenu组件、ListView组件等。Web查询客户端用户界面采用PYthon flask实现,Flask是Python中的一个微型Web开发框架。
软件实现
收作业客户端基于Windows下Python2.7+pyserrial模块开发,并采用Python内置组件包tkinter实现图形界面,实现串口初始化、RFID数据读取和解析、数据显示、数据提交、数据清除等功能。收作业客户端将作业数据提交到soLite数据库里。软件流程如图2所示。
服务器端软件采用Python的flask框架实现了一个简易的WebServer,提供了单日作业统计、个人作业情况汇总、平时作业总评等功能。flask框架提供了webserver的基本架构,只需要增加相应的模块和页面模板,即可实现相应的功能。每个模块获取用户的请求,分析需要实现的功能,从数据库中取出满足条件的数据,利用模板构造相应的页面,返回给客户端浏览器。
研究结果
基于RFID的作业快速收评系统的创新点在于能快速、同时、准确读取一叠作业本信息。此功能采用了高速多重识别标签、性能卓越的超高频RFID读写器,精心调整相关串口参数,使其能稳定可靠地同时读人多本作业信息。
教师可在批改时将作业本根据作业等第分开摆放,最后将作业等第相同的学生信息和等第信息一起由收作业客户端读人数据库。每天单个班级一项作业情况登记和成绩等第登记的工作时长由10~20分钟缩短至1~2分钟。
系统还具有自动计算学期作业成绩总评分的功能,能客观公正评价学生的平时学习情况。另外,Web查询页面还提供了单个学生的某段时间内作业情况分析功能,方便督促学生提高作业质量。
本系统可以广泛应用于中小学,将教师、课代表每日统计交作业情况的工作量大大降低。另外根据教育减负的要求,中小学作业成绩都采用等第制,本系统方便将成绩等第信息化,使作业等第数据具有后续分析价值。本系统在班级中进行了试用,得到了教师的好评,具有很好的推广价值。
该项目获得第33届全国青少年科技创新大赛创新成果竞赛项目中学组工程学一等奖。
专家评语
项目基于RFID技术开发了一套作业快速收评系统,制作了相应的实物装置,实现了实时准确读入作业本信息功能,解决了学生作业收集评价效率低的问题。项目源自生活,方案合理,构思新颖,符合中学生创新的特点,有较好的推广应用价值。建议进一步提高系统的可靠性和适用性,并在学校推广使用。