[转贴&翻译]使用RFID读卡器的安全访问-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10587|回复: 8

[转贴&翻译]使用RFID读卡器的安全访问

[复制链接]
发表于 2016-9-16 11:22 | 显示全部楼层 |阅读模式
转自Arduino.cc(PS:原帖链接https://create.arduino.cc/projec ... -rfid-reader-f7c746)
1.所需的材料
  1块 UNOr3兼容板
A000066_iso_both.jpg
  1块RFID读卡器(PS:原帖上有Sparkfun的也有常见的RC522)
13030-01.jpg sku_403052_1.jpg
  1块空白的复旦卡(PS:复旦卡就是IC卡)
T1PK4WFh4aXXXXXXXX_!!0-item_pic.jpg_400x400.jpg
2.所需的软件
  Arduino IDE
IDE_web.jpg
 楼主| 发表于 2016-9-16 12:05 | 显示全部楼层
本帖最后由 jianwei569 于 2016-9-16 13:31 编辑

5.从一个RFID标签中读取数据  电路连接好后,点击文件->示例> MFRC522 > Dumpinfo 然后编译和上传代码。此代码将在安装RFID库文件后可用
然后,打开串口监视器。你应该看到下面的数字:
serial-monitor1.png
将RFID卡或RFID钥匙型卡靠近RFID读卡器,使读卡器和标签靠近直至所有的信息都显示出来
serial-monitor2.png
这就是是你可以从卡中读取到的信息,包括卡UID,用黄色高亮显示。该信息存储在内存中,分为段和块,就像你可以在上面的图片看到一样。
您有1024个字节的数据存储分为16个部分,每个部分是由两个不同的密码保护,A和B的。
写下你的UID密码,因为以后你会需要它的。
在这里上传已经已添加UID后缀的Arduino代码。

示范视频
油管链接:https://www.youtube.com/watch?v=_qH_VMIVVYs (PS:国内的朋友如果看不了可以等我上传到B站)B站链接http://www.bilibili.com/video/av6299933/
上传&运行程序后,将你选择给予权限的卡靠近读卡器你将会看到(端口可能会有所不同)
serial-monitor1.png
如果你将另一张有不同UID的卡靠近读卡器,你将会看到拒绝的信息
serial-monitor4.png
如果有任何疑问,请在下面发表评论。

连线参考图:
Mifare_bb.png



 楼主| 发表于 2016-9-16 12:06 | 显示全部楼层
6.程序[mw_shl_code=c,true]/*
*
* All the resources for this project: https://www.hackster.io/Aritro
* Modified by Aritro Mukherjee
*
*
*/

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup()
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Approximate your card to the reader...");
  Serial.println();

}
void loop()
{
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
     Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte, HEX);
     content.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte, HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "BD 31 15 2B") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
    Serial.println();
    delay(3000);
  }

else   {
    Serial.println(" Access denied");
    delay(3000);
  }
} [/mw_shl_code]
 楼主| 发表于 2016-9-16 11:30 | 显示全部楼层
3. RFID读卡器的介绍射频识别标签是一种身份识别系统,使用小型射频识别装置进行识别和跟踪。一个射频识别标签系统,包括标签本身、读/写设备和用于数据收集、处理和传输的主机系统应用。
简单的说,一个射频识别技术使用电磁场在短距离内传输数据。射频识别是对确定人的身份,交易等是很有用的。
你可以使用一个射频识别系统来打开一扇门。例如,只有那个卡上面有正确信息的人才允许进入。一个射频识别系统的使用:
标签附着在待识别的对象,在这个例子中我们有一个钥匙扣和一个电磁卡。每个标签都有自己的标识(UID)。

RFID-Cardpic.jpg
(钥匙形状的和普通的卡都是识别的)
双向无线电发射机接收机,就是读卡器,发送一个信号到标签,并读取其返回的数据
sku_403052_1.jpg
(左边为发送器,右边为接收器)
 楼主| 发表于 2016-9-16 11:42 | 显示全部楼层
4.基本规格
输入电压:3.3V
频率:13.53Mhz
现在,在键入所需的代码之前,您需要从这个存储库(https://github.com/AritroMukherjee/RFID)中下载该传感器的必要库。
先解压“RFID-master.zip”然后在Arduino IDE中添加库文件
这样做之后,重新启动你的Arduino IDE。
现在,我们的Arduino已经准备好接收和执行代码了。
Arduino的代码已经在这篇教程的最后。你所需要的只是编译代码,消除“错误”的错误(如果有)。
现在,是时候连接我们的Arduino与RFID读写器。参照下面的引脚接线,以及连接示意图,供简单参考。
RFID与Arduino Uno的连线
SDA------------------------Digital 10
SCK------------------------Digital 13
MOSI----------------------Digital 11
MISO----------------------Digital 12
IRQ------------------------不用连接
GND-----------------------GND
RST------------------------Digital 9
3.3V------------------------3.3V (千万不要连接到5V接口!!!)



发表于 2016-10-27 17:26 | 显示全部楼层
是用SPI通信的吗?
发表于 2017-10-18 22:18 | 显示全部楼层
请问楼主那个MFRC522怎么加载呢?
发表于 2017-12-22 20:59 | 显示全部楼层
Firmware Version: 0x0 = (unknown)
WARNING: Communication failure, is the MFRC522 properly connected?
Scan PICC to see UID, SAK, type, and data blocks...
请问楼主,这个怎么解决呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 08:29 , Processed in 0.092959 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表