"Hành trình vạn dặm bắt đầu từ những bước đi đầu tiên"

せんりのみちもいっぽから

Sep 22, 2023

GIAO TIẾP ARDUINO NANO + RFID


Thứ tự nối chân Arduino nano- RFID


1. Arduino Nano + RFID-RC522 - Arduino Tutorial

2. Thư viện RFID MFR522

3.THẺ MIFARE LÀ GÌ?

4. Code mẫu:

#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;
int code[] = {32,154,149,117}; //This is the stored UID (Unlock Card)
int codeRead = 0;
String uidString;
void setup() {
  Serial.begin(9600);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522
  Serial.println(F("MỜI QUẸT THẺ"));
}
void loop() {
  if(  rfid.PICC_IsNewCardPresent())
  {
      readRFID();
  }
  delay(100);
}
void readRFID()
{
  rfid.PICC_ReadCardSerial();
  Serial.print(F("\nPICC 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("THẺ KHÔNG HỢP LỆ "));
    return;
  }
    Serial.println("SỐ THẺ LÀ :");

    printDec(rfid.uid.uidByte, rfid.uid.size);
    uidString = String(rfid.uid.uidByte[0])+" "+String(rfid.uid.uidByte[1])+" "+String(rfid.uid.uidByte[2])+ " "+String(rfid.uid.uidByte[3]);
    int i = 0;
    boolean match = true;
    while(i<rfid.uid.size)
    {
      if(!(int(rfid.uid.uidByte[i]) == int(code[i])))
      {
           match = false;
      }
      i++;
    }
    if(match)
    {
      Serial.println("\n*** Unlock ***");
    }else
    {
      Serial.println("\nUnknown Card");
    }
   Serial.println("============================");
    // Halt PICC
  rfid.PICC_HaltA();
  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}
void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}


II. BẬT LED VỚI RFID
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9  // Chân kết nối RST của đầu đọc RFID
#define SS_PIN 10  // Chân kết nối SS của đầu đọc RFID
#define LED_PIN 7  // Chân kết nối LED

MFRC522 mfrc522(SS_PIN, RST_PIN); // Tạo đối tượng MFRC522

// Mảng chứa các mã số thẻ RFID cho phép
String allowedRFIDCards[] = {"863f2c9e", "9876543210"};

void setup() {
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  SPI.begin(); // Khởi động giao tiếp SPI
  mfrc522.PCD_Init(); // Khởi động đầu đọc RFID
  Serial.println("Vui lòng đặt thẻ RFID lên đầu đọc...");
}

void loop() {
  if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
    Serial.println("Thẻ RFID được phát hiện!");
    String rfidCode = getRFIDCode(); // Lấy mã số thẻ RFID
    if (isAuthorized(rfidCode)) {
      Serial.println("Thẻ được chấp nhận. Bật LED.");
      digitalWrite(LED_PIN, 1); // Bật LED
      delay(1000); // Chờ 1 giây
      digitalWrite(LED_PIN, 0); // Tắt LED
    } else {
      Serial.println("Thẻ không được chấp nhận.");
      Serial.println(rfidCode);
    }
    delay(2000); // Chờ 2 giây trước khi tiếp tục quét thẻ tiếp theo
  }
}

String getRFIDCode() {
  String rfidCode = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    rfidCode += String(mfrc522.uid.uidByte[i], HEX);
  }
  return rfidCode;
}

bool isAuthorized(String rfidCode) {
  for (int i = 0; i < sizeof(allowedRFIDCards) / sizeof(allowedRFIDCards[0]); i++) {
    if (rfidCode == allowedRFIDCards[i]) {
      return true;
    }
  }
  return false;
}

0 Post a Comment:

Post a Comment

Cảm ơn bạn đã chia sẻ ý kiến!
Chúc bạn có một ngày thật vui vẻ.

Kết nối bạn bè

Wikipedia

Search results

Video Nổi bật

Video tổng hợp

Cảm ơn các bạn đã ghé thăm

 
Please Enable Javascript!Enable JavaScript