15 Ocak 2022 Cumartesi

RC522 RFID NFC Modülü Kullanımı

★★★


 RFID, Radyo frekansı tanımlama anlamına gelir ve bir tanımlama mekanizması gerektiren birçok uygulama için kullanılabilir. Bu eğitimde, RFID-RC522 modülünün Arduino Uno ile nasıl kullanılacağı gösterilmektedir. RFID-RC522 modülü, yakın mesafeden RFID etiketlerini okuyabilen bir RFID okuyucudur. Bir RFID etiketinin okunabilmesi için okuyucu ve etiketin aynı frekansa sahip olması gerekir. RFID-RC522 modülü yalnızca 13.56 MHz'de Yüksek frekanslı etiketleri okur.
RFID-RC522 modülünü göstermek için, kullanıcıyı bir RFID etiketine göre tanımlayan basit bir uygulama programlanmıştır.



RFID-RC522 Arduino'ya nasıl bağlanır?
RFID-RC522 modülü sekiz pimle birlikte gelir (bu eğitimde yedi pim kullanılır). Aşağıda, pin düzeni, MFRC522 kitaplığının (programlama bölümünde daha sonra kullanılır) belgelerinde önerildiği şekilde gösterilmektedir. RFID-RC522 modülü 3.3V ile çalışır. Bu nedenle modülün 3.3V pini Arduino'nun 3.3V pinine bağlanmalıdır. Modül yanlışlıkla Arduino'nun 5V pinine bağlanırsa hasar görebilir. Tam pin düzeni aşağıdaki tabloda gösterilmektedir ( sadece Arduino Uno! Mega, Nano vb. için çalışır, farklı önerilen pin düzenlerine sahiptir! )


RFID-RC522 PimiArduino Uno Pimi
SDA10
SCK13
MOSI11
MİSO12
IRQKULLANILMAMIŞ
GNDGND
RST9
3.3V3.3V


RFID okuyucu nasıl programlanır?
Kod, şurada bulunabilen mevcut bir RFID kitaplığını kullanır:  https://github.com/miguelbalboa/rfidArduino IDE kullanıyorsanız, “Sketch->Include Library->Manage Libraries”e tıklayarak kütüphane kolayca kurulabilir. Ardından, “RFID” aratın ve “MFRC522 by GithubCommunity” başlıklı bir giriş bulacaksınız. Böyle bir giriş bulamazsanız, daha fazla yardım için kütüphanenin resmi web sitesini ziyaret etmenizi tavsiye ederim. RFID okuyucuyu çalıştırmak için, okuyucunun yanı sıra kitaplığın kendisini, bir SPI bağlantısını da kurmanız gerekir. Neyse ki, kitaplık, etiketleri okumak için çok kullanışlı iki kullanışlı işlev sunar: İlk işlev, bir RFID etiketinin/kartının mevcut olup olmadığını algılamayı sağlar. İkinci işlev, RFID etiket kimliğini okur. Aşağıdaki kodda, etiket boyunca yineleme yapmak için bir for döngüsü kullanılır. Her yinelemede, tek bir bayt okunur ve onaltılık değer (00..FF) olarak yazdırılır.

// (c) Michael Schoeffler 2014, http://www.mschoeffler.de

#include "SPI.h" // SPI library
#include "MFRC522.h" // RFID library (https://github.com/miguelbalboa/rfid)

const int pinRST = 9;
const int pinSDA = 10;

MFRC522 mfrc522(pinSDA, pinRST); // Set up mfrc522 on the Arduino

void setup() {
  SPI.begin(); // open SPI connection
  mfrc522.PCD_Init(); // Initialize Proximity Coupling Device (PCD)
  Serial.begin(9600); // open serial connection
}

void loop() {
  if (mfrc522.PICC_IsNewCardPresent()) { // (true, if RFID tag/card is present ) PICC = Proximity Integrated Circuit Card
    if(mfrc522.PICC_ReadCardSerial()) { // true, if RFID tag/card was read
      Serial.print("RFID TAG ID:");
      for (byte i = 0; i < mfrc522.uid.size; ++i) { // read id (in parts)
        Serial.print(mfrc522.uid.uidByte[i], HEX); // print id as hex values
        Serial.print(" "); // add space between hex blocks to increase readability
      }
      Serial.println(); // Print out of id is complete.
    }
  }
}

Kod Arduino'ya başarıyla yüklendiyse ve bir RFID kartı veya etiketi RFID okuyucuya yakınsa, Seri Monitördeki (Araçlar->Seri Monitör, Ctrl+Shift+M) çıktı şöyle görünmelidir ( resim, RFID kartının konumunu ve ilgili seri monitör çıkışını gösterir):


★★★ https://randomnerdtutorials.com/security-access-using-mfrc522-rfid-reader-with-arduino/

RFID, radyo frekansı tanımlaması anlamına gelir. RFID, kısa mesafelerde veri aktarmak için elektromanyetik alanlar kullanır. RFID, insanları tanımlamak, işlem yapmak vb. için kullanışlıdır.

Bir kapıyı açmak için bir RFID sistemi kullanabilirsiniz. Örneğin, sadece kartında doğru bilgiler bulunan kişinin giriş yapmasına izin verilir. Bir RFID sistemi şunları kullanır:

  • Tanımlanacak nesneye yapıştırılan etiketler , bu örnekte bir anahtarlık ve bir elektromanyetik kartımız var. Her etiketin kendi kimliği (UID) vardır.

etiketler

  • Etikete bir sinyal gönderen ve yanıtını okuyan iki yönlü telsiz verici-alıcı, okuyucu .

 Az kod ile birden fazla kart ekleme

/*Az kod ile birden fazla kart ekleme */

 

#include <SPI.h>

#include <MFRC522.h>

 

//  ne kadar kaç tane kart varsa o kadar kart sayısını yazıyoruz

#define kartSayisi 6

 

MFRC522 rfid(10, 9);

 

// aynı şekilde eklediğimiz kartların uid sini yazıyoruzburada hex veya dec yazmamız hiç farketmiyor.

byte Kartlar[kartSayisi][4] = {

  {0x02, 0x58, 0xAE, 0x34},// hhh kart

  {0xA7, 0xCE, 0xDB, 0x60},// hhh anahtarlık

  {228, 112, 48, 251}, // Erdem ogrenci kartı

  {84, 236, 247, 21}, // Mert ogrenci kartı

  {0xD3, 0x71, 0xEB, 0x14}, //ugurkan kart

  {0xC3, 0x26, 0x37, 0x16} //ugurkan anahtarlık

};

 

void ekranaYazdir() {

  Serial.print("Kimlik Numarasi: ");

  for (int sayac = 0; sayac < 4; sayac++) {

    Serial.print(rfid.uid.uidByte[sayac]);

    Serial.print(" ");

  }

  Serial.println("\n");

}

 

bool kartKontrol(byte* kart)

{

  for (auto i = 0; i < kartSayisi; ++i) {

    if (Kartlar[i][0] == kart[0] &&

        Kartlar[i][1] == kart[1] &&

        Kartlar[i][2] == kart[2] &&

        Kartlar[i][3] == kart[3])

    {

      return true;

    }

  } return false;

}

 

void setup() {

  Serial.begin(9600);

  SPI.begin();

  rfid.PCD_Init();

}

 

void loop() {

  if ( ! rfid.PICC_IsNewCardPresent()) return;

  if ( ! rfid.PICC_ReadCardSerial()) return;

 

  if (kartKontrol(rfid.uid.uidByte)) {

    Serial.println("Yetkili Kart");

    ekranaYazdir();

    delay(1000);

  }

  else {

    Serial.println("Yetkisiz Kart");

    ekranaYazdir();

    delay(1000);

  }

  rfid.PICC_HaltA();

}


Etiketler:

0 Yorum:

Yorum Gönder

Kaydol: Kayıt Yorumları [Atom]

<< Ana Sayfa