"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

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

 
Please Enable Javascript!Enable JavaScript