RFID卡在学校就餐管理系统中的应用设计
1 概述
现在,在一些就餐比较集中的大、中专及中学里,学生的就餐基本上采用微机管理,学生凭一张非接触式的RFID卡就可以很方便地在学校食堂消费。有些学校还采用了校园一卡通,只要持有一张合法的RFID卡,就可在全校范围内的公共消费场所进行消费。
RFID(Radio Frequency Identification)即射频识别卡或是感应式电子芯片。RFID射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动的物体,并可同时识别多个标签,操作快捷方便。AT88RF020就是Atmel公司生产的非接触式RFID卡。
2 RFlD卡AT88RF020的特点
◇AT88RF020是13.56 MHz射频卡,遵循ISO/IEC 14443 Type B协议;
◇容量为2048位;
◇每张卡有唯一序列号;
◇带有加密和锁定功能;
◇一个一次性计数器;
◇所有传输信息中包括一个字节的循环校验码;
◇写时间为3 ms;
◇写次数为100 000次;
◇工作环境是O~70℃。
3 RFID射频识别技术的组成及工作原理
3.1 RFID系统的基本组成
①标签(tag,即射频卡)。由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信,每个标签具有唯一的电子编码,附着在物体上标识目标对象。图1是RFID芯片AT88RF020的内部结构原理图。
②阅读器(reader或叫读卡器)。读取(除读卡外还可以写入)标签信息的设备,可设计为手持式或固定式。
③天线(antenna)。在标签(射频卡)和读卡器之间传递射频信号。
有些系统还通过读卡器的RS232或RS485接口与外部计算机(上位机主系统)连接,进行数据交换。
3.2 RFID系统的基本工作原理
读卡器通过发射天线发送一定频率(如13.56 MHz)的射频信号,当射频卡进入发射天线工作区域时产生感应电流,射频卡获得能量被激活。射频卡将自身编码等信息通过射频卡的内置发射天线发送出去。系统接收天线接收到从射频卡发送来的载波信号,经天线调节器传送到读卡器,读卡器对接收的信号进行解调和解码,然后送到后台主系统进行相关处理。主系统根据逻辑运算判断该卡的合法性,针对不同的设定做出相应的处理和控制,发出指令信号控制执行机构动作。
3.3 RFID系统读卡器的结构及工作原理
对读卡器而言,在耦合方式(如电感-电磁)、通信流程(如FDX、HDX、SEQ)、从射频卡到读卡器的数据传输方法(如负载调制、反向散射、高次谐波)以及频率范围等方面,不同的非接触传输方法有根本的区别。但所有的读卡器在功能原理上,以及由此决定的设计构造上都很相似,所有阅读器均可简化为高频接口和控制单元两个基本模块。高频接口包含发送器和接收器,其功能包括:产生高频发射功率以启动射频卡并提供能量;对发射信号进行调制,用于将数据传送给射频卡;接收并解调来自射频卡的高频信号。不同射频识别系统的高频接口设计具有一些差异,电感耦合系统的高频接口原理如图2所示。
读卡器控制单元的功能包括:与应用系统软件进行通信,并执行应用系统软件发来的命令;控制与射频卡的通信过程(主-从原则);信号的编解码。对一些特殊的系统还有执行反碰撞算法,对射频卡与阅读器问要传送的数据进行加密和解密,以及进行射频卡和读卡器间的身份验证等附加功能。
4 RFID卡AT88RF020的存储结构
Atmel的AT88Rt020射频卡芯片有2048位的存储容量,分成32页,每页8个字节,存储组织结构如表1所列。
表1中标有“—”的字节由用户定义,出厂时初始值为0。
①Pseudo Unique PICC Identifier。卡唯一序列号,卡序列号由卡厂家写入,不能被修改。
②Applicatlon Data。应用数据,这个数据被作为ATQB回复信息的一部分由卡传输到读写器中。
③counter。计数器,每执行一次COUNT指令,计数器的值就加1,初始值由厂家设为0。
④Signature。签名(用于加密),这个数据位于第2页的前6个字节,可以通过COUNT指令修改,counter和Signature 可以提供更进一步的安全保护。
⑤Password。密码,密码放在第3页中,不能读出。
⑥Lock Bits。锁定位,位于第0页,验证密码后,能用LocK命令修改。锁定位中的每一位与内存各页对应,如果某位被设为“1”,则对应的页就被锁死,不能再进行写操作,也没有机制解锁,所以某页一旦被锁,其内容再也不能修改,出厂初始值为0。
AT88RF020通电或重启的工作流程如图3所示。
5 RFlD卡AT88RF020的常用命令与函数
5.1 AT88RF020的常用命令
①REQB/WUPB:用于寻卡或者唤醒处于HALT状态的卡,这种卡只响应应用代码(API)为00或01的情况,如果接收到一个带有无效API代码的WUPB命令,那么卡仍然处于HALT状态。
②ATTRIB:用于从所有响应REQB/WUPB的卡中选择一张卡,此后,卡进入AC-TIVE状态。
③Slot MARKER:为读写器提供了一种用于查询随机数大于1的卡。
④HALTB:设置卡处于HALT状态,此后只能执行WUPB命令。
⑤READ:用于读取卡中的数据,读取页0~2可以不必验证密码,而第3页的数据不能读出,只能通过PASS—WORD命令修改,其他的页验证密码后可以读出。
⑥WRITE:用于对卡写入数据。
⑦LOCK:只有在验证密码之后才能执行,用于锁定某一地址区域,被锁定的地址区域在验证密码之后只可以进行读操作。
⑧CHECK PASSWORD:密码校验命令,在设备进入就绪状态之后执行。
⑨DESELECT:如果对处于ACTIVE状态的卡执行该命令,且通过,则卡发送一个正确的回答信息,并进入HALT状态。
⑩COUNT:用于写第2页。COUNT命令中所带的数据写入到第2页的前6个字节中,后2个字节被用做计数器使用,每执行一次COUNT命令,计数器的值就增1,如果计数器的值达到2的15次方,就不能再执行COUNT操作,且第2页被锁定,不能再修改。执行该命令之前要验证密码。
5.2 AT88RF020的函数
下面以rf_attrib()函数为例来说明AT88RF020的函数用法。
①函数rLattrib()的格式:
int rI_attrib(HANDLE icdev,unsigned long pupi,unsigned char param,unsigned char cid,unsigned charbrTx,unsigned char brRx);
②函数的功能。从已响应REQB/WUPB命令的卡中选取一张卡,同时给每一张卡分配一个ID号。
③函数的参数描述。
icdev:rf_init()返回的设备描述符。pupi:Pseudo—Unique PICC Identifier。param:设为0。cid:卡片ID号(0~15),这个值存储在卡片中供后面操作使用。
brTx:由CD(近耦合设备)到PICC(近耦合集成电路卡)的波特率,对于AT88RF020,0x00代表106 kb/s。
brRx:由PICC到PCD的波特率,对于AT88RF020,0x00代表106 kb/s。
④返回值。等于0表示成功;不等于0表示失败。
⑤例程。
int st;
unsigned char Mode=0;
unsigned char_Data[15];
unsigned long pupi=0;
st=rf_requestb(iedev,Mode,0~0 Data);
if(st==0){
memcpy(&pupi,&Data[1],4);
st=rf_attrih(icdev,pupi,0,0,0.0);
}
经过选卡后,如果有多张卡进入激活状态,则可以根据CID(射频卡ID号)在同一时间内对多张卡操作。以两张卡为例:
int st;
unsigned long pupi[2];
unsigned char receive[256],data[10];
pupi[o]=0x25510200;//卡1的pupi
pupill]=Ox344e0200;//卡2的pupi
unsigned char cid=0;
st=rf_requestb(icdev,0,0,0,receive);//选择一张卡
//in the case of the response card is card 1
cid一0;//slot 0
st=rf_attrib(icdev,pupiEO],o,cid,0,O);
//select card 2
st=rf_request(iedev,0,0,0,receive);
//in the case of the response card is card 2
cid=1;
st=rf_attrib(icdev.pupi[l].0,cid,0,0);
//operate the two cards in the same time
for(int i一0;i-(2;i++){
st=rt_read(icdev,i,0,data);
//deseleet card 1
st=at88rf020 deseleet(iedev,0);
//deseleet card 2
st=at88rf020 deseleet(icdev.1);
6 RFlD卡在学校就餐管理中的应用
6.1系统总体方案
采用美国Atmel公司生产的AT88RF020射频识别卡、IDIc(Identification IntegratecI circuit)、读写基站集成电路u2270B和Atmel公司的8位单片机研制开发学校食堂就餐管理系统,系统具有预付收费、目标识别、身份验证、数据采集、数据加密和数据库管理的功能。系统由AT88RF020卡、就餐管理终端、数据库管理系统、就餐管理终端与数据库管理微机的通信系统四部分组成。主机与就餐管理终端之间的通信采用RS一485通信标准,工作方式为半双工,每次通信都是主机首先呼叫从机。系统结构如图4所示。
6.2通信硬件接口设计
本系统中,就餐管理终端与上位机的通信选用了RS485总线标准,并采用了MAX465芯片来实现,它具有RS485通信接口需要的全部功能。数据通信的方向由RE和DE脚来控制,设计中二者连在一起,由单片机的Pl,5来控制。当它为高电平时,数据由就餐管理终端经MAX485到外部串行总线,即处于发送状态;为低电平时,数据由外部串行总线到就餐管理终端。一般微机的串行口采用RS232接口,故在上位机一端需要一个RS232/Rs485转换器。本设计中采用台湾Aten公司生产的IC-485SN转换器,它是一种双向RS232/R$485或RS422转换器,可提供点对点、点对多点(最多可达254个点)的全双工和半双工以及多点的单工串行通信。
6.3通信软件接口设计
上位机数据库管理系统采用Visual FoxPro(即VF)编写,这里介绍的串行通信程序主要是在VF中实现与就餐管理终端的通信程序设计。本系统采用标准的通信控
件commLmications进行通信程序的设计,实现挂失数据的发送、用户卡号的发送、发卡和就餐数据的接收。每次通信时,首先在上位机的lnlt事件中初始化通信控件olecon—troll,初始化设置为:
thisform,olecontroll,commPort=1 //选择串行口COM1
thisform,olecontroll,PortOpen=1 //打开串行口COM1
thisform,olecontroll,lnpLltMode=O //接收的数据按文本方式
thisform olecontroll,RTSEnable=1 //允许使用RTs线.用于
//RS232/485转换器的发送控制和供电
thisform,oleconatroll,InputLen=1 //每次读取接收缓冲
//区的一个字符
thisform,olecontroll,OutbifferCount=O//清除发送缓冲区
thisform,olecontroll,InbufferCotInt=O//清除接收缓冲区
结 语
本文介绍了RFID卡ATRF88020的特点、工作原理及在学校就餐管理中的应用。RFID技术的典型应用还有;物流和供应管理、生产制造和装配、航空行李处理、邮件/快运包裹处理、文档追踪/图书馆管理、动物身份标识、运动计时、门禁控制/电子门票、道路自动收费等。