帮助文档

RFID-RC522射频IC卡感应模块

目 录 (点击目录列表可以跳转到相应位置)

  1. 介绍
  2. 原理图
  3. 模块参数
  4. 电路板尺寸
  5. ArduinoIDE 和Python示例程序
  6. 米思齐 Mixly 示例程序(图形化语言)
  7. Arduino测试环境搭建
  8. 视频教程
  9. 测试结论

1、介绍 点这里回到目录

非接触式IC卡又称射频卡,由IC芯片、感应天线组成,封装在一个标准的PVC卡片内,芯片及天线无任何外露部分。是世界上最近几年发展起来的一项新技术,它成功的将射频识别技术和IC卡技术结合起来,结束了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。卡片在一定距离范围(通常为5—10cm)靠近读写器表面,通过无线电波的传递来完成数据的读写操作。工作原理:射频读写器向IC卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,这样在电磁波激励下,LC谐振电路产生共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2V时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。

发射原理:非接触性IC卡与读卡器之间通过无线电波来完成读写操作。二者之间的通讯频率为13.56MHZ。非接触性IC卡本身是无源卡,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:一部分是电源信号,该信号由卡接收后,与本身的L/C产生一个瞬间能量来供给芯片工作。另一部分则是指令和数据信号,指挥芯片完成数据的读取、修改、储存等,并返回信号给读写器,完成一次读写操作。读写器则一般由单片机,专用智能模块和天线组成,并配有与PC的通讯接口,打印口,I/O口等,以便应用于不同的领域。


2、原理图 点这里回到目录

RFID-RC522射频IC卡感应模块


3、模块参数 点这里回到目录

引脚名称 描述
SDA 串行数据线
SCK 连接MCU的SCK信号
MOSI MCU输出,RC522接收
IRQ 中断请求输出
GND 接地
PST 复位
3.3V 工作电压
  • 供电电压:3.3V

  • 连接方式:2.54mm排针

  • 安装方式:螺丝固定


4、电路板尺寸 点这里回到目录

RFID-RC522射频IC卡感应模块


5、示例程序代码 点这里回到目录

使用前先安装arduino库库下载不会使用库文件的参考这里

Arduino UNO 示例(适用于Mixly IDE、Arduino IDE):代码下载

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




String card[]={"83a08a34","83db1c13"};


String name[]={"YOU","I"};


MFRC522 rfid(10, 9);
String RFID_CardUID;
Servo servo_3;


String MFRC522_ReadCardUID(MFRC522 *_name){
  String _CardUID = "";
  for (byte _i = 0; _i < _name->uid.size; _i++){
    if(_name->uid.uidByte[_i] < 0x10)
      _CardUID += "0";
    _CardUID += String(_name->uid.uidByte[_i], HEX);
  }
  return _CardUID;
}


boolean MFRC522_IsNewCard(MFRC522 *_name){
  if(!_name->PICC_IsNewCardPresent())
    return false;
  if(!_name->PICC_ReadCardSerial())
    return false;
  return true;
}


void setup(){
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  RFID_CardUID = "";
  servo_3.attach(3);
  Serial.println("读取RFID卡号测试");
  servo_3.write(90);
  delay(10);
}


void loop(){
  if(MFRC522_IsNewCard(&rfid)){
    RFID_CardUID = MFRC522_ReadCardUID(&rfid);
    Serial.println(String("Card UID:") + String(RFID_CardUID));
    for (int i = (0); i <= (sizeof(card)/sizeof(card[0])); i = i + (1)) {
      if (RFID_CardUID == card[i]) {
        Serial.println(name[i]);
        servo_3.write(179);
        delay(2000);


      }
      servo_3.write(90);
      delay(10);
    }
    rfid.PICC_HaltA();
    rfid.PCD_StopCrypto1();
  }
  delay(10);


}


示例程序(ESP32开发板—基于Python语言,不能用Arduino IDE上传代码):

import machine
import rc522
import servo
import time


spi = machine.SoftSPI(baudrate=1000000, sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))
ysensor = rc522.RC522(spi,5)
while True:
    print(('卡片编号:' + str(ysensor.read_card(0, x="id"))))
    while ysensor.read_card(0, x="id"):
        servo.servo180_angle(2,0)
        time.sleep(3)
    servo.servo180_angle(2,180)
    time.sleep_ms(300)

6、米思齐 Mixly 示例程序(图形化语言) 点这里回到目录

示例程序(UNO开发板):点击下载

RFID-RC522射频IC卡感应模块

示例程序(ESP32开发板):点击下载

RFID-RC522射频IC卡感应模块


7、测试环境搭建 点这里回到目录

Arduino环境搭建

准备配件:

  • UNO-R3 开发板*1
  • UNO-R3 P 扩展板
  • USB type-c 数据线 *1
  • RFID-RC522射频IC卡感应模块*1
  • 空白卡*1
  • 异形卡*1
  • 9g舵机*1
  • 1P母对母杜邦线 *7条 或 7P母对母杜邦线 *1条

电路接线图:

RFID-RC522射频IC卡感应模块

Micropython环境搭建

准备配件:

电路接线图:


8、视频教程 点这里回到目录

视频教程:点击查看


9、测试结论 点这里回到目录

RFID-RC522射频IC卡感应模块

RFID-RC522射频IC卡感应模块

将器件连接好线之后,将上述程序烧录到 Arduino UNO 开发板之后,刷卡后舵机会旋转模拟开门和关门


点这里回到目录