前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RFID-RC522的使用[通俗易懂]

RFID-RC522的使用[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-07-29 08:18:29
发布于 2022-07-29 08:18:29
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

射频识别技术RFID(Radio Frequency Identification),又称为电子标签、无线射频识别,是一种非接触式的自动识别技术,通过无线电讯号识别特定目标并读写相关数据而无需识别系统与特定目标之间建立机械或光学接触。可用于识别高速运动物体并可同时识别多个标签,过程中无需人工干预,操作快捷方便。可工作于各种环境,实现对各类物体或设备(人员、物品)在不同状态(移动、静止或恶劣环境)下的自动识别和管理。

RFID系统主要由应答器、阅读器和高层应用组成,其中的应答器包括集成电路芯片。阅读器用于产生射频载波与应答器进行信息交互。高层应用包括信息的管理和决策。

接线

Arduino Uno <——> RFID-RC522

10 <——> SDA

13 <——> SCK

11 <——> MOSI

12 <——> MISO

–null– <——> IRQ (IRQ是中断才用到的此处没有用到可以不接)

GND <——> GND

9 <——> RST

3.3V <——> 3.3V

需要下载有关的第三方库

实现读取卡片信息的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
 * --------------------------------------------------------------------------------------------------------------------
 * Example sketch/program showing how to read new NUID from a PICC to serial.
 * --------------------------------------------------------------------------------------------------------------------
 * This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
 * 
 * Example sketch/program showing how to the read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID
 * Reader on the Arduino SPI interface.
 * 
 * When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE
 * then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When
 * you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output
 * will show the type, and the NUID if a new card has been detected. Note: you may see "Timeout in communication" messages
 * when removing the PICC from reading distance too early.
 * 
 * @license Released into the public domain.
 * 
 * Typical pin layout used:
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 */
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
 
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key; 
// Init array that will store new NUID 
byte nuidPICC[4];
void setup() { 
  Serial.begin(9600);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
  Serial.println(F("This code scan the MIFARE Classsic NUID."));
  Serial.print(F("Using the following key:"));
  printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}
 
void loop() {
  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! rfid.PICC_IsNewCardPresent())
    return;
  // Verify if the NUID has been readed
  if ( ! rfid.PICC_ReadCardSerial())
    return;
  Serial.print(F("PICC type: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));
  // Check is the PICC of Classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println(F("Your tag is not of type MIFARE Classic."));
    return;
  }
  if (rfid.uid.uidByte[0] != nuidPICC[0] || 
    rfid.uid.uidByte[1] != nuidPICC[1] || 
    rfid.uid.uidByte[2] != nuidPICC[2] || 
    rfid.uid.uidByte[3] != nuidPICC[3] ) {
    Serial.println(F("A new card has been detected."));
    // Store NUID into nuidPICC array
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
    }
   
    Serial.println(F("The NUID tag is:"));
    Serial.print(F("In hex: "));
    printHex(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
    Serial.print(F("In dec: "));
    printDec(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
  }
  else Serial.println(F("Card read previously."));
  // Halt PICC
  rfid.PICC_HaltA();
  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}

/**
 * Helper routine to dump a byte array as hex values to Serial. 
 */
void printHex(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}
/**
 * Helper routine to dump a byte array as dec values to Serial.
 */
void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}

两种不同形状的卡片所对应的识别结果

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129411.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
对于RFID-RC522 模块的读写操作【Arduino】[通俗易懂]
目前百度基本上搜不到RC522板子的具体操作代码,基本上贴出来的只有接线,所以这次直接放出读写操作的代码算是做贡献吧。
全栈程序员站长
2022/11/04
2.1K0
对于RFID-RC522 模块的读写操作【Arduino】[通俗易懂]
MFRC522问题[通俗易懂]
以前调试一直正常,最近重新使用新模块发现居然不能选卡,寻卡防冲撞都正常。一直折腾了两三天,最后更改复位延时直接解决问题。
全栈程序员站长
2022/08/01
4430
ESP32开发之旅——RC522模块的使用
​ 射频识别RFID(Radio Frequency Identification)是一种无线数据传输系统,用于在标签和读取器设备之间传输数据,而RC522模块则是用于读取和写入RFID卡和标签,该模块的工作频率为13.56MHz。
全栈程序员站长
2022/09/14
1.9K0
RFID-MFRC522射频识别模块,S50卡M1
1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:
全栈程序员站长
2022/09/14
1.4K0
RFID-MFRC522射频识别模块,S50卡M1
RC522(RFID模块)实践总结
此次使用RC522模块和S50卡实现近场通讯功能(开发板与RC522通讯方式为硬件SPI),就实践过程中的一些知识点进行总结:
全栈程序员站长
2022/07/22
3K0
RC522(RFID模块)实践总结
RFID RC522门禁系统「建议收藏」
RFID RC522门禁系统说明: 基于51单片机的RFID RC522门禁系统的主要功能是,在本系统中主要是演示了RFID RC522门禁系统,在单片机内部的RAM中IDBUFFER中存了学号:1505106001对应 16进制就是5b b6 18 51 ;然后在RFID RC522开卡系统中,为第一张卡在块地址0x08处,写入了学号,当卡中的内容和单片机上的内容相配时,门打开。 具体程序如下所示: MAIN.C
全栈程序员站长
2022/10/02
8420
基于STM32的RC522模块读写数据块以及电子钱包充值扣款系统的设计
本人也是正在学习单片机知识的萌新一枚,在这里记录下自己完成这个小设计的过程跟大家分享一下,也请大家指出我哪里还有不足可以改进的地方。秉着和大家一起学习进步发布了这篇文章
全栈程序员站长
2022/10/02
2.5K2
基于STM32的RC522模块读写数据块以及电子钱包充值扣款系统的设计
STM32+MFRC522完成IC卡号读取、密码修改、数据读写
完整工程源码下载: https://download.csdn.net/download/xiaolong1126626497/18905806
DS小龙哥
2022/01/17
4K0
STM32+MFRC522完成IC卡号读取、密码修改、数据读写
STM32–RFID无线射频技术(RC522刷卡模块)
 射频识别,即RFID是Radio Frequency Ident ificat ion的缩写,又称无线射频识别,是一.种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。一套完整RFID硬件统由Reader 与Transponder 两部份组成,其动作原理为由Reader 发射一特定频率之无限电波能量给Transponder,用以驱动Transponder电路将內部之ID Code送出,此时Reader便接收此ID Code Transponder的特殊在于免用电池、免接触、免刷卡故不怕脏污,且晶片密码为世界唯一无法复制, 安全性高、长寿命。
全栈程序员站长
2022/09/17
3.3K0
STM32–RFID无线射频技术(RC522刷卡模块)
基于esp8266开发板实现宿舍门禁
菜菜有点菜
2023/12/11
2030
RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID[通俗易懂]
在这篇文章【 https://blog.csdn.net/qq_28877125/article/details/80437095 】的基础上修改完成!
全栈程序员站长
2022/09/29
1.5K0
RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID[通俗易懂]
rc522 nfc_基于单片机的门禁系统
(2021/11/1编辑) 在项目需要做一个NFC门禁功能的时候,突然发现有个RC522丢在我的桌面,甚至不知道它上面的引脚什么意思(还不会SPI通讯),搜索关键词“RC522”去看博客搜索资料,发现了很多都在说扇区,块,S50(M1)卡,然后就给代码,一开始我还以为S50是内嵌在这个模块里面的一个存储器,然后越看越怪,后面去淘宝搜索S50,才发现S50其实是我们的门禁卡,RC522是用来感应和判断的。
全栈程序员站长
2022/09/29
1K0
rc522 nfc_基于单片机的门禁系统
基于stm32门禁系统_老式门禁
RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率、准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用STM32硬件SPI驱动RC522门禁模块。
全栈程序员站长
2022/09/30
9150
基于stm32门禁系统_老式门禁
rfid-rc522使用教程_RFID读写方式是什么
我们常见的RC522大概如下所示,PCB部分是主机,然后白色的和绿色的都是IC卡,IC卡可以存储信息,通过靠近PCB主机部分就可以被感应到从而触发主机做出相应的动作,比如读取IC卡信息,写入数据等操作。
全栈程序员站长
2022/10/02
2.1K0
rfid-rc522使用教程_RFID读写方式是什么
基于HL-1开发板开发RFID(RC522模块)射频电路基础
图片中重点写出引脚的相应接口名称。 —————————————————————手动分割线———————————————————–
全栈程序员站长
2022/09/14
1K0
基于HL-1开发板开发RFID(RC522模块)射频电路基础
rfid-rc522模块中文资料_驱动模块
1.每张卡有唯一的序列号,32位 2.卡的容量是8Kbit的EEPROM 3.分为16个扇区,每个扇区分为4块,每块16个字节,以块为存取单位 4.每个扇区都有独立的一组密码和访问控制
全栈程序员站长
2022/11/04
3.3K1
rfid-rc522模块中文资料_驱动模块
STM32F103+RFID-RC522模块 实现简单读卡写卡demo「建议收藏」
本文不含任何广告性质,仅供学习参考。写卡需谨慎!!!,不然可能会玩崩了。血的教训!!!
全栈程序员站长
2022/07/23
3.4K0
STM32F103+RFID-RC522模块 实现简单读卡写卡demo「建议收藏」
STM32F103ZET–RFID-RC522使用例程(战舰版)
每每有陌生人加我就是问我要这个的工程,心累,文末有工程下载链接。希望再有人加我QQ是跟我聊技术,而不是:“大神,能发个工程给我吗?”
全栈程序员站长
2022/07/22
5810
RC522 射频读卡器模块(MINI型)
二、[主芯片介绍] MF RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。 MF RC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号。数字部分处理ISO14443A帧和错误检测。此外,还支持快速CRYPTO1加密算法,用语验证MIFARE系列产品。MFRC522支持MIFARE系列更高速的非接触式通信,双向数据传输速率高达424kbit/s。 作为13.56MHz高集成度读写卡系列芯片家族的新成员,MF RC522与MF RC500和MF RC530有不少相似之处,同时也具备许多特点和差异。它与主机间通信采用连线较少的串行通信,且可根据不同的用户需求,选取SPI、IIC或串行UART模式之一,有利于减少连线,缩小PCB板体积,降低成本。
全栈程序员站长
2022/09/06
1.2K0
RC522 射频读卡器模块(MINI型)
Arduino文档阅读笔记-RFID工作原理及RC522模块介绍
RFID(Radio Frequency Identification):无线射频识别
全栈程序员站长
2022/07/23
1.2K0
Arduino文档阅读笔记-RFID工作原理及RC522模块介绍
推荐阅读
相关推荐
对于RFID-RC522 模块的读写操作【Arduino】[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档