RFID课程设计

更新时间:2023-12-17 21:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

武汉理工大学华夏学院

武汉理工大学华夏学院

课 程 设 计 报 告

课程名称:射频识别基础课程设计

题 目: 高频数据块写入

专 业 信息工程系 班 级 学 号 姓 名 成 绩 _________________ 指导教师

2015年1月5日至2015年1月9日

1

武汉理工大学华夏学院

设计实验目的

学习和掌握高频RFID电子标签的识别控制原理。

一、 设计实验内容

将电子标签放入高频RFID模块的识别范围内,高频RFID模块识别后在LCD上显示识别的卡号。

二、 使用仪器

电脑一台、WSN通用底板、RF2530模块、高频RFID模块、电子标签、zigbee多功能仿真器(带10pin的JTAG下载线)、A转Mini USB线。

三、 设计实验原理

射频识别技术(RFID)是一种新型自动识别技术,具有可靠性高、保密性强、方便快捷的特点,它利用无线射频方式,通过电磁感应、无线电波或微波能量,在读写基站和应答目标之间进行非接触双向通信,以达到目标识别和数据交换的目的,这项技术简称为“电子标签”。

射频识别系统通常由电子标签(射频标签)和阅读器组成。电子标签内,存有一定格式的电子数据,常以此作为待识别目标的标示性信息。应用中将电子标签附在待识别目标上,作为待识别目标的电子标记,阅读器与电子标签可按约定的通信协议互传信息,RFID标签主要分为无源标签和有源标签两类(或是称为主动和被动)。

最常见的是被动标签(无源标签),当阅读器遇见RFID标签时,发出电磁波,周围形成电磁场,标签从电磁场中获得能量激活标签中的微芯片电路,芯片转换电磁波,然后发送给解读器,解读器把它转换成相关数据。

这里我们主要使用的电子标签是Mifare S70射频薄卡,该卡采用的飞利浦(NXP)原装的 Mifare IC S70芯片,符合IEC/ISO 14443A 空气接口协议。其具有先进的数据加密及双向密码验证系统,与S50芯片相比,其具有更大的存储容量,是企业一卡通,水表预付费,公交储值卡,高速公路收费,停车场,小区管理,交运卡,公园,公路等首选的高频RFID产品。

卡片有4K的存储空间,有32个小扇区和8个大扇区。小扇区的结构为:每扇区有4块,每块16个字节,一共64字节,第3块为密钥和控制字节;大扇区的结构为:每扇区16块,每块16个字节,一共256字节,第15块为密钥和控制字节;详细介绍如下:

(1)4K字节, 共40个扇区。前32个扇区中,每个扇区4个数据块;后8个扇区中,每个扇区16个数据块。每个数据块16个字节;

(2)每个扇区有独立的一组密码及访问控制; (3)每张卡有唯一序列号,为32位; (4)具有防冲突机制,支持多卡操作;

(5)无电源,自带天线,内含加密控制逻辑和通讯逻辑电路; (6)数据保存期为10年,可改写10万次,读无限次; (7)工作频率:13.56MHZ; (8)通信速率:106 KBPS;

(9)读写距离:10 cm以内(与读写器有关)。

其存储结构——4K字节, 共40个扇区,前32个扇区中,每个扇区4个数据块;后8

2

武汉理工大学华夏学院

个扇区中,每个扇区16个数据块。每个数据块16个字节。如下图所示:

厂商数据存储块

每个扇区的控制位(包含密码)都在该扇区的最后一个块内;扇区1到扇区31有3个数据块,扇区32到扇区39有15个数据块供存储数据(扇区0只有2个数据块和一个厂商数据存储块)。数据块的读写操作由控制位控制。

每个扇区最后一个块的结构——包含密码A(不能读出)、密码B及相应扇区中的所有块的存储控制位(位于第6个字节到第9个字节),存储结构如下:

A0A1A2A3A4A5 FF 07 80 69 B0B1B2B3B4B5 密码A(6字节) 存储控制(4字节) 密码B(6字节)

使用的阅读器芯片采用的是MF RC522,RC522是应用于13.56MHz非接触式通信中高集成度读写卡系列芯片中的一员。是飞利浦(NXP)公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片。

MF RC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持 ISO14443A的多层应用。其内部发送器部分可驱动读写器天线与ISO 14443A/MIFARE卡和应答机的通信,无需其它的电路。接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO14443A 兼容的应答器信号。数字部分处理ISO14443A 帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTO1加密算法,用于验证MIFARE 系列产品。MFRC522支持MIFARE?更高速的非接触式通信,双向数据传输速率高达424kbit/s。

阅读器和标签之间的工作结构框图如下所示:

3

武汉理工大学华夏学院

该设计实验主要是将电子标签的卡号进行读取出来,该卡号数据就在扇区0的数据块0中,即为厂商数据块。

四、 注意事项

1、设计实验前,请正确安装RF2530模块和高频RFID模块,注意其丝印方向应与底板丝印方向一致,严禁反接;

2、设计实验过程中,严禁带电插拨器件,防止损坏电路;

3、设计实验过程中,严禁用手触摸裸露的器件,特别是芯片!防止造成短路或损坏芯片;

4、所有模块出厂前均已调试完毕,除非有特别说明,否则不建议自行对电路中可调部分进行调节。

五、 设计实验步骤

1、将一个RF2530模块和高频RFID模块插入到WSN通用底板的相应位置。

2、将zigbee多功能仿真器的一端通过10 pin下载线接到WSN通用底板的JTAG接口上,另一端通过USB线接到PC机上,并通过SmartRF Flash Programmer软件正确下载相应的设计实验例程(…\\设计实验例程\\hex格式设计实验代码\\感知层设计实验\\RFID卡号识别设计实验\\RFID识别.HEX)。

3、通过USB外接电源(或锂电池BT)给WSN通用底板供电并将电源开关拨至USB供电(或锂电池BT供电)的位置,程序自动运行,LCD显示“RFID Identify”,当有卡进入阅读器的识别距离范围之内,在“RFID Identify”的下方会显示出4个字节的16进制的数据,即为卡号。

4、设计实验完毕,关闭电源,各模块放回原位。

六、 设计实验程序流程图

4

武汉理工大学华夏学院

欢迎按下SW3 按下SW2 按下SW1、SW4进入功能选进行读ID进去修改ID操读出ID并显示 证实出厂ID无法修按下SW1返回欢迎界面 七、 总结

虽然这次课程是那么短暂的1周时间,我感觉到这些天我的所学胜过我这一学期所学,这次任务原则上是对RFID的运用,其实就是一次大的作业,是让我对课本知识的巩固和对基本程序的熟悉和应用,运用内部函数过程中的那些繁复的程序,使我做事的耐心和仔细程度得以提高。课程设计是培训学生运用本专业所学的理论知识和专业知识来分析解决实际问题的重要教学环节,是对本学期所学知识的复习和巩固。同样,也促使了同学们的相互探讨,相互学习。因此,我们必须认真、谨慎、踏实、一步一步的完成设计。如果时间可以重来,我可能会认真的去学习和研究,也可能会自己独立的完成一个项目,我相信无论是谁看到自己做出的成果时心里一定会很兴奋。此次设计让我明白了一个很深刻的道理:团队精神固然很重要,担人往往还是要靠自己的努力,自己亲身去经历,这样自己的心里才会踏实,学到的东西才会更多。

一开始没有仔细看老师发的资料以为ID卡的卡号可以修改,修改了很久的卡号没有成功,一开始以为是程序的问题,后来发现是根本没有办法写入到卡中,导致浪费了很多的时间,走了弯路,今后一定要在动手之前做好准备工作。

八、 参考文献

[1] 赵军辉.射频识别技术与应用[M].北京:机械工业出版社,2008.

[2]程雪,周修理,李艳军. 射频识别(RFID)技术在动物食品溯源中的应用[J]. 东北农业大学学报, 2008,(10) .

[3]石蕾,陈敏雅. RFID系统中阅读器的设计与实现[J]. 电脑开发与应用, 2008,(07) . [4]钱莹,凌云. RFID中间件设计研究[J]. 电脑与信息技术, 2008,(05) .

5

武汉理工大学华夏学院

[5]陈冲,徐志,何明华. 一种新的RFID防碰撞算法的研究[J]. 福州大学学报(自然科学版), 2009,(03) .

[6]周永明. 一种改进的查询树射频识别防冲突新算法[J]. 广东轻工职业技术学院学报, 2006,(02) .

[7]李辉,刘国栋,胡小云,高丽芳,沈烨,郑映钦. 电子标签技术在出口鳗鱼产品监管中的应用研究[J]. 中国国境卫生检疫杂志, 2007,(06) .

[8]蔡志刚. 集装箱无线射频识别技术应用研究[J]. 港口装卸, 2005,(05) .

九、 程序附录

void InitRc522(void) {

PcdReset();

PcdAntennaOff(); PcdAntennaOn();

M500PcdConfigISOType( 'A' ); }

void InitAll(void) {

SET_MAIN_CLOCK_SOURCE(CRYSTAL); initUART(); InitRc522();

INT_GLOBAL_ENABLE(INT_OFF); //开启总中断 //init_time1();

INT_GLOBAL_ENABLE(INT_ON); //开启总中断 bWarn=0; bPass=0; SysTime=0; KeyTime=0; WaitTimes=0; KeyNum=0; KuaiN=0;

oprationcard=0; uart_count=0; uart_comp=0; bSendID=0; Pass(); }

void ctrlprocess(void) {

unsigned char ii; char status; uart_count=0;//

6

//设置主时钟为32M晶振 武汉理工大学华夏学院

PcdReset(); halWait(200); halWait(200);

status=PcdRequest(PICC_REQIDL,&RevBuffer[0]);//寻天线区内未进入休眠状态的卡,返回卡片类型 2字节

if(status!=MI_OK) {

return; }

status=PcdAnticoll(&RevBuffer[2]);//防冲撞,返回卡的序列号 4字节 if(status!=MI_OK) {

return; }

memcpy(MLastSelectedSnr,&RevBuffer[2],4); status=PcdSelect(MLastSelectedSnr);//选卡 if(status!=MI_OK) {

return; }

if(oprationcard==READCARD)//读卡 {

oprationcard=0;

status=PcdAuthState(PICC_AUTHENT1A,KuaiN,PassWd,MLastSelectedSnr);// if(status!=MI_OK) {

bWarn=1; return; }

status=PcdRead(KuaiN,Read_Data); if(status!=MI_OK) {

bWarn=1; return; }

for(ii=0;ii<16;ii++) {

sendchar1(MLastSelectedSnr[ii]); }

bPass=1;

sprintf(s,(char

*)\tedSnr[3]);

7

武汉理工大学华夏学院

GUI_ClearScreen(); //LCD清屏

GUI_PutString5_7(25, 2, \ // 显示字符串 GUI_PutString5_7(8, 18, \ // 显示字符串

GUI_PutString5_7(8,40,(char *)s); //显示结果 LCM_Refresh(); PcdHalt(); }

else if(oprationcard==WRITECARD)//写卡 //if(oprationcard==WRITECARD)//写卡 {

oprationcard=0;

status=PcdAuthState(PICC_AUTHENT1A,KuaiN,PassWd,MLastSelectedSnr);// if(status!=MI_OK) {

bWarn=1; return; }

status=PcdWrite(KuaiN,&WriteData[0]); if(status!=MI_OK) {

bWarn=1; return; } bPass=1; PcdHalt(); } }

void ctrl_uart(void) {

uchar ii;

for(ii=0;ii<6;ii++) {

RevBuffer[ii+2]=0xff; }

// RevBuffer[8]=0x03; switch(RevBuffer[1]) {

case 0xa1://读数据

oprationcard=READCARD; for(ii=0;ii<6;ii++) {

PassWd[ii]=RevBuffer[ii+2]; }

8

武汉理工大学华夏学院

KuaiN=RevBuffer[8]; break;

case 0xa2://写数据

oprationcard=WRITECARD; for(ii=0;ii<6;ii++) {

PassWd[ii]=RevBuffer[ii+2]; }

KuaiN=RevBuffer[8]; for(ii=0;ii<4;ii++) {

WriteData[ii]=MLastSelectedSnr[ii]; }

setdatamode=0; break;

default: break; }

uart_comp=0; uart_count=0; }

void main(void) {

InitAll();

GUI_Init(); // GUI初始化 GUI_SetColor(1,0); // 显示色为亮点,背景色为暗点 GUI_PutString5_7(16, 2, \ // 显示字符串 GUI_PutString5_7(6, 20, \ // 显示字符串 LCM_Refresh(); //RevBuffer[8]=0x00; //RevBuffer[0]=0x02; //RevBuffer[1]=0xa0; while(1) {

uart_comp=1; if(uart_comp) {

ctrl_uart(); }

halWait(20); ctrlprocess(); switch(Key_Flag) {

case 1:

9

武汉理工大学华夏学院

Key_Flag=0;

RFIDDataSetting =0;

zgConfigPANIDSetting = 4; setmode= 1;

GUI_ClearScreen(); // 清屏 GUI_PutString5_7(25, 2, \ // 显示字符串 GUI_PutString5_7(5, 20, \显示字符串 GUI_PutString5_7(5,40,\ LCM_Refresh();

// 将显示缓冲区中的数据刷新到SO12864FPD-14ASBE(3S)上显示 break; case 2:

Key_Flag=0;

if((writemode==1)&&(setmode==0)){

RFIDDataSetting=MLastSelectedSnr[writebuffer]; RFIDDataSetting += 1;

if(RFIDDataSetting>128)RFIDDataSetting=0; MLastSelectedSnr[writebuffer]=RFIDDataSetting; if((writebuffer/4)==0){ sprintf(s,(char

*)\tedSnr[3]);

GUI_PutString5_7(8,16,(char *)s); //显示结果 LCM_Refresh();} }

if(setmode){ }

if(modeselect) {

modeselect=0; setdatamode=1; writemode=0; setmode=0;

RevBuffer[0]=0x09; RevBuffer[1]=0xa1;

GUI_ClearScreen(); //LCD清屏 GUI_PutString5_7(4, 20, \ // 显示字符串 LCM_Refresh(); }

break; case 3:

Key_Flag=0; if(setmode){}

10

武汉理工大学华夏学院

if((writemode==1)&&(setmode==0)){

RFIDDataSetting=MLastSelectedSnr[writebuffer]; RFIDDataSetting += 10;

if(RFIDDataSetting>128)RFIDDataSetting=0; MLastSelectedSnr[writebuffer]=RFIDDataSetting; if((writebuffer/4)==0){ sprintf(s,(char

*)\tedSnr[3]);

GUI_PutString5_7(8,16,(char *)s); //显示结果 LCM_Refresh();} }

if(modeselect){ modeselect=0; writemode=1;

GUI_ClearScreen(); //LCD清屏

GUI_PutString5_7(8, 2, \ // 显示字符串 LCM_Refresh(); sprintf(s,(char

*)\tedSnr[3]);

GUI_PutString5_7(8,16,(char *)s); //显示结果 LCM_Refresh(); }

break; case 4:

Key_Flag=0; if(setmode){

if(zgConfigPANIDSetting) {

RevBuffer[8]=zgConfigPANIDSetting;

GUI_ClearScreen(); //LCD清屏 GUI_PutString5_7(25, 2, \ // 显示字符串 GUI_PutString5_7(5, 20, \显示字符串 GUI_PutString5_7(5, 40, \显示字符串 LCM_Refresh(); modeselect=1; setmode=0; } }

if((writemode==1)&&(setmode==0)){ writebuffer +=1;

11

武汉理工大学华夏学院

if(writebuffer>3)writebuffer=0; RFIDDataSetting =0; }

break; case 5:

Key_Flag=0; if(writemode){

// if(zgConfigPANIDSetting) // {

RevBuffer[1]=0xa2;

RevBuffer[0]=0x19;

GUI_ClearScreen(); //LCD清屏

GUI_PutString5_7(8, 2, \ // 显示字符串 LCM_Refresh(); sprintf(s,(char

*)\tedSnr[3]);

GUI_PutString5_7(8,16,(char *)s); //显示结果

LCM_Refresh();

setdatamode=1; } break;

default: break; } } }

12

武汉理工大学华夏学院

评 分 项 目 评分成绩 1.实验操作(40分) 2.原理叙述(15分) 3.工程代码(15分) 4.设计报告规范化、参考文献(不少于3篇)(10分) 5.答辩(20分) 总 分(100分) 答辩记录: 指导教师(签名) 日 期: 年 月 日

13

本文来源:https://www.bwwdw.com/article/dg25.html

Top