我买的Arduino是入门套件+RFID学习套件,某宝包邮130+,买来也将近1个月了。
四位共阳极数码管,位控制端(1-4)给高电平使能相应的位,笔段控制端(A-G、DP)给低电平可点亮。
记得要加限流电阻哦!
数码管的原理图我还是看的懂的。我所异者,是做一天和尚敲一天钟,不思进取,敷衍了事,不愿追求把工作做到极致的态度。
2015年12月04日(周五)上午博士的智能卡实验——RFID识别实验,基于51单片机;
我们的实验用的读写器是RFID-RC522模块,刚好和我买的ArduinoRFID套件里的是同一款;
中午开始我就开始阅读Arduino套件配套的RFID实验资料,打算把这个实验做完,只是我把上位机换成Arduino而已。
1.了解RFID的基本概念和射频卡的工作原理;
2.熟悉Arduino和RC522RFID模块的使用;
3.测试RC522模块对卡的识别。
1.计算机一台;
2.Arduino一块;
3.USB-串口线一根;
4.RFID-RC522模块一个;
5.标准S50空白卡一张;
6.S50异形卡一个(钥匙扣形状);
7.直排、弯排插针各一条;
8.杜邦线一排。
买来的射频IC卡感应模块就像下面这样,包邮也就14块左右:
买来的时候排插并没有焊上,所以必须自己焊,虽然我没有焊接的工具,不过借着这次实验我还是焊上了。下面是我第二次焊接的成果:
(一)RFID系统组成
RFID技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。最基本的RFID系统由三部分组成:
1.标签(Tag,即射频卡):由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。
2.阅读器:读取(在读写卡中还可以写入)标签信息的设备。
3.天线:在标签和读取器间传递射频信号。
(二)工作原理
MCU通过对读卡器芯片内寄存器的读写来控制读卡器芯片,读卡器芯片收到MCU发来的命令后,按照非接触式射频卡协议格式,通过天线及其匹配电路向附近发出一组固定频率的调制信号(13.56MHz)进行寻卡,若此范围内有卡片存在,卡片内部的LC谐振电路(谐振频率与读卡器发送的电磁波频率相同)在电磁波的激励下,产生共振,在卡片内部电压泵的作用下不断为其另一端的电容充电,获得能量,当该电容电压达到2V时,即可作为电源为卡片的其他电路提供工作电压。当有卡片处在读卡器的有效工作范围内时,MCU向卡片发出寻卡命令,卡片将回复卡片类型,建立卡片与读卡器的第一步联系,若同时有多张卡片在天线的工作范围内,读卡器通过启动防冲撞机制,根据卡片序列号来选定一张卡片,被选中的卡片再与读卡器进行密码校验,确保读卡器对卡片有操作权限以及卡片的合法性,而未被选中的则仍然处在闲置状态,等待下一次寻卡命令。密码验证通过之后,就可以对卡片进行读写等应用操作。
(三)RC522模块
数据的传输路径为:Arduino通过MOSI线将数据发到MFRC522,MFRC522通过MISO线发回至Arduino。
RC522模块各引脚功能
SDA--串行数据线(IIC接口时的I/O线);在SPI接口中为NSS(从机标志管脚);
SCK--连接MCU的SCK信号;
MOSI--MCU输出,RC522接收(即主设备输出,从设备输入);
MISO--RC522输出,MCU接收(即从设备输出,主设备输入);
IRQ--中断请求输出;
GND--接地;
RST--复位;
3.3V--VSS,工作电压,若使用的事5V的MCU,注意分压。
管脚对应关系:
1、实现利用IC卡控制LED灯闪烁。
2、实现利用七段数码管显示IC卡的类型,并记录。
3、实现在七段数码管上以十六进制显示IC卡的序列号,并记录。
4、从串口打印IC卡的类型和序列号。
5、测试最大的识别距离。
1、完成对IC卡的数据读写,需要哪几个步骤?
答:四个步骤:寻卡—>防冲突—>选卡—>三次互相确认—>读写
2、请分别写出实验材料中标准S50卡、S50钥匙卡的类型和序列号。
答:S50标准卡:Type0400和SNFDC2E3D5
S50异形卡:Type0400和SND8163100
3、当多张卡在一起时,能否正确识别其卡号?并请说明其原因。
答:在这个实验中不行。在这个实验系统中,阅读器会先执行寻卡操作并返回卡的类型,之后才执行防冲突操作。因为有多张卡处在阅读器的可读范围,防冲突函数返回值为MI_ERR,也就不能继续执行选卡和读写的操作,也就获取不到卡的序列号。
实验中的观察:
当我将两张卡同时慢慢靠近阅读器的过程中,阅读器首先识别出了卡的类型和其中的某一种卡,并在串口上打印了卡的类型和序列号。接着串口只会一直打印卡的类型而不会打印的卡的序列号。有时也会只打印卡类型而没有序列号。
分析:
在慢慢靠近的过程中,阅读器得到的是不确定的信号,偶尔碰巧识别出了其中一张卡。但是之后,两张卡相互干扰,以至都不能工作。
那么在多张卡的情况下,RFID阅读器能否同时处理多个标签呢?
如果有多张Mifare1卡片处在读写器的天线的工作范围之内时,防冲突模块的防冲突功能将被启动工作:根据卡片的序列号来选定一张卡片。被选中的卡片将直接与读写器进行数据交换,未被选择的卡片处于等待状态,准备与读写器进行通信。
既然有防冲突模块,那么为什么我们用的同样是MF1S50的卡,还是无法识别呢?
防冲撞机制使得同时处于读写区内的多张卡的正确操作成为可能,只用算法编程,读头即可自动选取其中一张卡进行读写操作。这样既方便了操作,也提高了操作的速度。
4、请测试RC522模块是否能够识别羊城通、校园一卡通等非接触式IC卡?若能识别,请写出其类型及序列号?
答:RC522模块还能识别羊城通、校园一卡通和银行卡,发现类型都是0400,属于MFOne-S50卡。
某校园一卡通Cardtype:MFOne-S50Thecard'snumberis:F68F8EAB
某羊城通Cardtype:MFOne-S50Thecard'snumberis:95AF4B27
某银行卡Cardtype:MFOne-S50Thecard'snumberis:EF660184
第二代身份证的载波频率是13.56MHz,副载波频率为847KHz,记录的信息有身份证号/姓名/性别/居住地址/照片等。
但是RC522并不能识别它,实验的白卡是IS014443TYPEA,而第二代身份证是B型卡,协议是ISO15693B
led闪烁
下次附图。。。
数码管显示
串口打印
识别距离
我粗略测量,发现白卡的识别需要在4cm内,在7cm的位置还是读不到卡片的。至于加大工作电流,还是不能增加通信距离。用我的校园卡和白卡一起测试,几乎都是只能识别校园卡。所以我以为校园卡的线圈比较好,但是单独识别,距离依然是4cm。钥匙扣的识别距离为2.5cm左右。
注意识别的时候要先释放手上的静电,阅读器的周围不要有其他电流干扰。
广州大学城的校园一卡通,能当交通卡、单车租用卡、图书馆借书卡、饭堂饭卡、学生卡等。IC卡的识别,是对于卡片读写和一卡多用的的前提。