RFID-RC522射頻IC卡感應模塊

RFID-RC522射頻IC卡感應模塊

1、介紹

發射原理:非接觸性IC卡與讀卡器之間通過無線電波來完成讀寫操作。二者之間的通訊頻率為13.56MHZ。非接觸性IC卡本體是無源卡,當讀寫器對卡進行讀寫操作時,讀寫器發出的信號由兩部分叠加組成:一部分是電源信號,該信號由卡接收後,與本身的L/C產生一個瞬間能量來供給晶片工作。另一部分則是指令和數據信號,指揮芯片完成數據的讀取、修改、儲存等,並返回信號給讀寫器,完成一次讀寫操作。讀寫器則一般由單片機,專用智能模塊和天線組成,並配有與PC的通訊接口,印表口,I/O口等,以便應用於不同的領域。

2、原理圖

3、模組參數

引腳名稱

描述

SDA

串行數據線

SCK

連接MCU的SCK信號

MOSI

MCU輸出,RC522接收

IRQ

中斷請求輸出

GND

接地

PST

復位

3.3V

工作電壓

  • 供電電壓:3.3V

  • 連接方式:2.54mm排釘

  • 安裝方式:螺絲固定

4、電路板尺寸

5、Arduino IDE示範程序

注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
Arduino IDE 庁件文件下載及導入教範:
點擊查看

示範程序(UNO開發板):

#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);


}

6、ESP32 Python 示例(適用於Mixly IDE /米思齊)

開發板選擇 Python ESP32 【ESP32 Generic(4MB)】切換為代碼模式上傳

注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
米思齊(Mixly)IDE ESP32庫檔案下載及匯入教學:
點擊查看

示例程式(ESP32-Python):

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)

7、米思齊 Mixly 示例程式(圖形化語言)

示範程序(UNO開發板):點擊下載
注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
米思齊(Mixly)IDE Arduino 圖庫檔案下載及匯入教學:點擊查看

示範程序(ESP32開發板):點擊下載
注意:程式上傳時如果提示庫文件報錯,請先導入庫文件!
米思齊(Mixly)IDE ESP32庫檔案下載及匯入教學:
點擊查看

8、測試環境搭建

Arduino UNO 測試環境搭建

準備配件:

  • UNO-R3 開發板*1

  • UNO-R3 P 扩展板

  • USB type-c 資料線 *1

  • RFID-RC522射頻IC卡感應模塊*1

  • 空白卡*1

  • 異形卡*1

  • 9g舵機*1

  • 1P母對母杜邦線 *7條 或 7P母對母杜邦線 *1條

電路接線圖:

ESP32 測試環境搭建

準備配件:等更新...

電路接線圖:等更新...

9、視頻教學

視頻教學:點擊查看

10、測試結果

Arduino UNO 混试结果:

將設備連接好線之後,將上述程序燒錄到 Arduino UNO 開發板之後,刷卡後舵機會旋轉模擬開門和關門。

ESP32 測試結果:

等更新...