找回密码
 立即注册

QQ登录

只需一步,快速开始

基础模块资料库

基于Arduino使用RFID射频 IC感应卡模块


RFID简介

射频识别即RFID(Radio Frequency IDentification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。常用的有低频(125k~134.2K)、高频(13.56Mhz)、超高频,微波等技术。RFID读写器也分移动式的和固定式的,目前RFID技术应用很广,如:图书馆,门禁系统,食品安全溯源等。
RFID技术的基本工作原理并不复杂:标签进入磁场后,接收解读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(Passive Tag,无源标签或被动标签),或者由标签主动发送某一频率的信号(ActiveTag,有源标签或主动标签),解读器读取信息并解码后,送至中央信息系统进行有关数据处理。
一套完整的RFID系统, 是由阅读器(Reader)与电子标签(TAG)也就是所谓的应答器(Transponder)及应用软件系统三个部份所组成,其工作原理是Reader发射一特定频率的无线电波能量给Transponder,用以驱动Transponder电路将内部的数据送出,此时Reader便依序接收解读数据,送给应用程序做相应的处理。


787878787878.jpg
(MFRC-522 RC522 RFID射频模块+S50复旦卡钥匙扣)

接线方式

212121.jpg
(MFRC-522 正面)

Arduino Uno     <------>   RFID-RC522
            10           <------>       SDA
            13           <------>       SCK
            11           <------>      MOSI
            12           <------>       MISO
        --null--       <------>       IRQ
           GND        <------>       GND
             9            <------>     RST
            3.3V        <------>      3.3V

程序库

我们需要用到RFID-RC522的库
下载解压到Arduino IDE的安装路径里的库文件夹libraries   

程序测试——读取ID值

Mixly图形化编程程序

8787.png
(图形化程序)

打开串口监视器,将ID卡放置RFID射频IC感应卡上,串口监视器会显示ID卡数值。

78978967.png
(串口ID显示)

程序实现代码

读取ID

  1. #include <SPI.h>
  2. #include <RFID.h>
  3. RFID rfid(10,5);
  4. unsigned char i,tmp;
  5. unsigned char status;
  6. unsigned char str[MAX_LEN];
  7. unsigned char RC_size;
  8. unsigned char blockAddr;        //选择操作的块地址0~63
  9. //4字节卡序列号,第5字节为校验字节
  10. unsigned char serNum[5];
  11. //写卡数据
  12. //原扇区A密码,16个扇区,每个扇区密码6Byte
  13. unsigned char sectorKeyA[16][16] = {
  14. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  15. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  16. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},};
  17. //新扇区A密码,16个扇区,每个扇区密码6Byte
  18. unsigned char sectorNewKeyA[16][16] = {
  19. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  20. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  21. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},};
  22. String RFID_readcardnum() {

  23. rfid.readCardSerial();
  24.   String stringserNum=String(rfid.serNum[0], HEX)+String(rfid.serNum[1], HEX)+String(rfid.serNum[2], HEX)+String(rfid.serNum[3], HEX)+String(rfid.serNum[4], HEX);
  25.       //选卡,返回卡容量(锁定卡片,防止多次读写)
  26.       rfid.selectTag(rfid.serNum);
  27.   return stringserNum;
  28. }
  29. void setup(){
  30.   Serial.begin(9600);
  31.   SPI.begin();
  32.   rfid.init();
  33.   Serial.begin(9600);
  34. }
  35. void loop(){
  36.   if ( rfid.isCard()  ) {
  37.     Serial.println(RFID_readcardnum());
  38.   }
  39. }
复制代码
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册