王颖 李翀
【摘 要】RFID技术作为一项先进的自动识别和数据采集技术,通过无线射频方式进行非接触双向数据通信,对目标加以识别并获取相关数据。被公认为21世纪十大重要技术之一。本文以实验为基础,研究了RFID的识读过程。
【关键词】北京大学生;智慧校园;卡通系统
2008年IBM 公司在全球提出“智慧地球”概念后,美国、欧盟、日本和韩国等相继推出本国的物联、云计算相关发展战略。2009年,温家宝总理在中科院无锡传感网工程技术研发中心,指示建设“感知中国”中心,拉开了中国智慧城市建设的序幕“智慧校园”作为“智慧城市”的重要组成部分,是继数字校园后关于院校信息化建设的又一全新概念,是由浙江大学于信息化“十二五”规划中首次提出的,并由此引发了“智慧校园”的建设潮。近年来,国内不少高校对智慧校园进入了探索或建设阶段。
基于物联网的校园一卡通系统是以学校校园网为架构,以射频标签作为信息载体,利用RFID、标签传感器、无线通信网络等实时采集物品的各种信息,并将这些采集到的信息通过高速互联网或无线网络传输到数据处理中心,这些信息在数据处理中心经过计算技术提供的海量信息处理功能对其进行智能化处理之后就可以实现人与人、物与物、人与物之间的有效沟通。
一卡通系统平台构成包括软件系统和硬件系统,二者共同完成校园一卡通系统平台整个系统的管理、数据处理、传输与交换和调度控制、应用支撑操作等功能。整个系统的识别过程需要完成4个步骤:寻卡→防冲突→选卡→读/写卡。
1 RFID系统组成
RFID 技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。最基本的 RFID 系统由三部分组成:
1.标签(Tag,即射频卡):由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信;
2.阅读器:读取(在读写卡中还可以写入)标签信息的设备;
3.天线:在标签和读取器间传递射频信号。
2 工作原理
MCU通过对读卡器芯片内寄存器的读写来控制读卡器芯片,读卡器芯片收到MCU发来的命令后,按照非接触式射频卡协议格式,通过天线及其匹配电路向附近发出一组固定频率的调制信号(13.56 MHz)进行寻卡,若此范围内有卡片存在,卡片内部的LC谐振电路(谐振频率与读卡器发送的电磁波频率相同)在电磁波的激励下,产生共振,在卡片内部电压泵的作用下不断为其另一端的电容充电,获得能量,当该电容电压达到2 V时,即可作为电源为卡片的其他电路提供工作电压。当有卡片处在读卡器的有效工作范围内时,MCU向卡片发出寻卡命令,卡片将回复卡片类型,建立卡片与读卡器的第一步联系,若同时有多张卡片在天线的工作范围内,读卡器通过启动防冲撞机制,根据卡片序列号来选定一张卡片,被选中的卡片再与读卡器进行密码校验,确保读卡器对卡片有操作权限以及卡片的合法性,而未被选中的则仍然处在闲置状态,等待下一次寻卡命令。密码验证通过之后,就可以对卡片进行读写等应用操作。
3 实现步骤
1.从串口打印IC卡的类型和序列号。
2.实现显示IC卡的类型,并记录。
3.实现以十六进制显示IC卡的序列号,并记录。
4.测试最大的识别距离。
RC522模块采用了高达10 Mb/s的SPI、I2C总线模式——四线制SPI,通信中的时钟信号由 Arduino 产生,MF RC522芯片设置为从机模式,接收来自 Arduino 的数据以设置寄存器,并负责射频接口通信中相关数据的收发。
数据的传输路径为:Arduino 通过 MOSI 线将数据发到 MF RC522,MF RC522 通过 MISO 线发回至 Arduino。连接电路如图1所示。
图1 Arduino与MF RC522的连接电路
4 部分功能代码
1.寻卡
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // 新建MFRC522端口
void setup() {
Serial.begin(9600); // 初始化和计算机的连续交流
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
//Serial.println("Scan a MIFARE Classic PICC to demonstrate Value Blocks.");
}
2.防冲突
void loop() {
//读卡
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Now a card is selected. The UID and SAK is in mfrc522.uid.
// Dump UID 打印卡号
……
3.读/写卡
Serial.println("Read block A(4) : the first of the sector TWO");
byte buffer[18];
byte size = sizeof(buffer);
// change this: valueBlockA , for read anather block
status = mfrc522.MIFARE_Read(valueBlockA, buffer, &size);
Serial.print("Sector : 0 Value :");
Serial.println(buffer[0]);
Serial.print("Sector : 1 Value :");
Serial.println(buffer[1]);
Serial.print("Sector : 2 Value :");
Serial.println(buffer[2]);
Serial.print("Sector : 3 Value :");
Serial.println(buffer[3]);
Serial.print("Sector : 4 Value :");
Serial.println(buffer[4]);
……
4.扩展部分
对已经读写出来的复旦卡的卡号进行反馈,于是继续扩充电路,在D2端口和D3端口分别连接发光二极管,防止电压会烧毁LED灯,在每个LED灯串联一个220Ω的电阻,D4端口上连接开源蜂鸣器。
5.结论
定义一个二维数组,可以保存十张学生的一卡通卡号,对已经保存起来的卡号运行通过,对不记录在案的卡号运行失败,蜂鸣器报警。实验结果如图2、图3所示。
图2 登记过的卡片,成功识别,绿色LED等闪烁一秒后熄灭
图3 未登记的卡片,认定为非法,红色LED灯闪烁一秒后熄灭,
同时,蜂鸣器产生频率一定的声响。
【参考文献】
[1]谭民,刘禹.RFID技术系统工程及应用指南[M].北京:机械工业出版社,2007,4.
[2]陈大才.射频识别(RFID)技术[M].2版.北京:电子工业出版社,2006.
[3]刘腾红,屈振新,任伟,刘勘.Windows程序设计技术[M].北京:清华大学出版社,2004,10.
[责任编辑:杨玉洁]