浅谈“校园一卡通系统”如何应用于“RFID应用技术”课程的教学过程
2018-01-04马蓉
马蓉
摘要:鉴于“RFID应用技术”课程在高职教学中遇到的困难,专门为该课程研究设计了校园一卡通系统。本文主要阐述了如何将校园一卡通系统融入课程教学,详细说明了该系统框架的设计过程。最终目标是利用该框架,进一步指导学生着手开发一系列的RFID应用,使学生从一个仅了解RFID通讯原理的學习者转换成为一个RFID应用的开发者。
关键词: 物联网;RFID技术;Arduino
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2018)30-0096-02
RFID技术是物联网的核心技术之一,因此,“RFID应用技术”课程是物联网专业的核心课程之一。课程的最终目标是使学生对RFID技术有清晰的了解,并能够进行实际运用。而市面上多数的RFID实训教学设备所提供的开发环境大多建立在业务层之上,而接触不到底层的通讯过程,整个课程的内容与信息系统开发无异。
鉴于这种情况,我们本着简洁、复用的设计思想,专门为这门课程设计开发了一套校园一卡通系统的开发框架。我们要求学生在完成校园一卡通系统的学习后能够独立完成另外一项RFID应用系统的开发。最终使学生从一个仅了解RFID通讯原理的学习者转换成为一个RFID应用的开发者。
1校园一卡通系统设计的总体思路
在实际的一卡通系统的设计过程中会出现许多商业化的设施:硬件平台、卡片与阅读器的结构、通讯协议、开源(第三方)库源码等,同时也会涉及一些设计模式等不易理解的内容。鉴于高职学生的理论基础有限,我们设计了一个能够满足各种RFID应用场景的开发框架(包括简单的数据表示及使用方法),并完成了一套校园消费一卡通全部功能作为示例程序,以支撑课程内容。该框架选取Arduino与MFRC500系列作为硬件平台,选取C/C++作为开发语言,尽可能的少引入其他商业(或开源)设施,从而将注意力集中在如何应用RFID技术本身。学生只需有基本的C语言开发基础即可看懂示例程序,后期参考该系统的设计、利用该系统提供的函数库资源,自己就可以完成一个可实际应用的RFID项目。
2 校园一卡通系统框架的整体设计
2.1硬件设计
系统的硬件设施包括4个部分:Arduino UNO、MFRC522、Joystick、卡片。Arduino UNO是Arduino开发板家族成员之一,Arduino本身即为一单片机系统以及开发IDE的统称,可以认为一卡通系统是存放并且运行在这个单片机系统中的。MFRC522是一块连接在Arduino UNO开发板上的芯片,它作为 “阅读器”的角色。JoyStick是一个简易的控制摇杆,它能够测量四个方向的输入并将其以模拟信号的形式传送给Arduino UNO。在本系统中,JoyStick扮演了用户输入控制器的角色,一卡通系统的所有功能选项都以上、下、左、右四项菜单方式提供给用户使用,比使用传统的键盘控制更加直观,有良好的用户体验。卡片是系统操作的对象,系统所使用的卡片为当前应用最为广泛的Mifare One系列卡片。
2.2软件设计
系统的软件设施为一套函数库文件以及工程文件,工程的编译工作须由Arduino IDE完成,编译完成后同样由Arduino IDE将二进制文件上传至Arduino UNO开发板中。上传完毕后,项目即开始运行,直到UNO断电停止运行。在运行的过程中,一卡通系统将一直提供服务,接收用户的控制指令并做出响应。系统的输出是以串口信息的方式呈现,通过观察Arduino IDE提供的串口来获取系统响应。
2.3功能介绍
一卡通系统具有基本卡片的管理功能,即开卡与销毁卡操作,除此之外还具备充值、消费、查询功能。其中,开卡可以理解为:将一张新的Mifare One卡片纳入本系统进行管理,此卡片将用于本系统,且仅用于本系统。销毁卡的功能则与开卡相反,即从本系统中删除本卡片的所有信息,卡片今后还可以使用于其他系统。既然系统具有记录卡片信息的功能,所以还应该具有一些列管理数据的功能,如查询已有数据、清除数据、统计等等。
总结校园一卡通系统应该具有的功能如表1所示:
系统运行后,首先显示主功能菜单,每一项主菜单下都有一个二级菜单。所有的功能菜单将以4项为一组的方式显示,分别对应JoyStick的上下左右操作,如图1所示。
拨动JoyStick摇杆可以选择二级功能。每一个二级功能菜单都设置down操作(向下)为返回一级菜单。
3 校园一卡通系统开发框架的设计与实现
对于系统开发框架的设计我们有两个设计原则:
第一,系统必须具有非常强的复用性以满足不同的RFID应用场景。也就是说这套框架不是仅仅为了校园一卡通这一种应用场景来设计,还应该可以满足公交卡系统、地铁计费卡系统、门禁系统等不同场景的需要。因此,就要求系统中的各个模块具有清晰的接口,尽可能全面的功能,以及简明易用的整合方法以提高整个框架的复用性。
第二,系统必须较少的引入其他商业设施,以方便教学。其中Mifare卡片、MFRC522阅读器,这是RFID不可缺少的设施,除此之外,我们在希望构建系统时尽量少的引入其他的内容,从而将核心放在RFID技术本身。所以,系统框架中的控制主机的功能,例如数据存储,仅考虑在Arduino UNO上完成,同时,用户控制也仅考虑使用JoyStick的四个方向作为按键,从而完全脱离对开发端PC机的依赖,PC机仅仅起到一个串口输出监视器的作用。
3.1数据管理功能的实现
在Storage.h中我们将实现对数据存储的所有操作,通过定义类:STORAGE。我们设想的STORAGE类应该具有这样的特性:
1)它负责一切保存关于Data的数据到EEPROM中;
2)为了简明、复用,所有函数尽可能少的传递参数。所以我们设置成员:
unsigned char ptr;
Data& data;
ptr的作用看作一個指向EEPROM记录块首的指针,即ptr * 10总是指向index块所在的位置,这样,由于EEPROM中所有记录块的结构相同,在访问特定的记录块内地址时,可以采用ptr * 10 + 块内偏移量这样的固定公式来完成。index与ptr之间始终保持着index = ptr + 1的数学关系。
data作为对Data类的引用,将要处理的数据传给操作者STORAGE类。
3.2金额处理
由于在RFID类中,我们没有实现ISO/IEC 14443中的Increment与Decrement这两种操作,所以我们不得不将金额信息存放在普通的数据块中。在数据块中,数据被逐字节识别,这对消费与充值操作这样加减运算造成了一定的麻烦,我们必须实现字符到数值的转换。也就是首先把来自PC机串口监视器输入的字符串转换为数值,然后把来自卡片的字节数据转换为数值,最后把经过加减运算的数值转换回字节数据发送给卡片。
在Money类中,我们通过三个函数来完成这样的转换。有了这些技术上的准备,我们可以着手设计MONEY类了,其中cardBuffer[]用于保存卡片数值块的数据,只保留其前4字节,serialBuffer[]用于保存串口监视器输入的字符串,而balance则作为真正做加减运算的金额数值。
3.3菜单的设计与实现
对于菜单的设计,通过校园一卡通管理系统的展示可以看出,所有的界面最多显示4个功能,分别对应控制摇杆的4个方向。我们希望系统能有统一的界面,所以我们将所有的界面用长度为40个字符的“*”装饰在界面的最上与最下,其中最上行中要在中央位置放置功能名的大写英文。我们创建CreateUI类,它的功能分别为打印最上行装饰、打印最下行装饰、打印其中的菜单这三项。
3.4用户交互功能的实现
系统中,JoyStick仅仅是在2个模拟管脚给Arduino一个信号,这远远不够。所以我们专门定义一个类:OPTION,来对这两个模拟管脚适当的处理。这个类必须具有以下特性:
1) 能够得知JoyStick输入值所对应的方向;
2)能够将用户输入过的值保存下来,提供给系统使用;
3)能够使系统需要用户输入时停下来等待用户摇动JoyStick。
4 结束语
通过设计开发校园一卡通系统的系统框架,进一步提高了“RFID应用技术”课程的教学效果。利用这个框架,我们可以指导学生着手开发一系列的RFID应用,包括公交卡系统、地铁卡系统、门禁系统等等。最终使大部分学生从一个仅了解RFID通讯原理的学习者转换成为一个RFID应用的开发者。
参考文献:
[1] 陈吕州.Arduino程序设计基础[M].北京:北京航空航天大学出版社,2015.
[2] 贝毅君.RFID技术在物联网中的应用[M].北京:人民邮电出版社,2013.
【通联编辑:光文玲】