ARDUINO DERS-30 (RFID KULLANIMI)


DEVRE SEMASI


RFID Nedir?
Radio Frequency Identification (RFID) ya da “Radyo Frekanslı Tanımla” şeklinde Türkçeleştirilirse; canlıları ya da nesneleri radyo dalgaları ile tanımlamak için kullanılan teknolojilere verilen genel isimdir. Birçok tanımlama biçimi vardır ama en yaygın olanı bir canlıyı ya da nesneyi tanımlayan bir antene bağlanmış mikroçip (ki buna RFID etiketi denir) içine kayıt edilebilecek diğer bilgiler de eklenerek tanımlama daha belirgin hale getirilebilir. Anten, çipin tanım bilgisini bir okuyucuya iletilebilmesini sağlar. Okuyucu RFID etiketinden aldığı radyo dalgalarını dijital bilgiye dönüştürerek bilgisayar sistemine geçmesini sağlar ve bu da işe yarar bir hale gelir.




MALZEMELER

  • ARDUINO UNO 
  • RFID MODÜLÜ


ID NUMBERS ÖRNEĞİ
#include <SPI.h>                          //SPI kütüphanemizi tanımlıyoruz.
#include <MFRC522.h>                      //MFRC522 kütüphanemizi tanımlıyoruz.

int RST_PIN = 9;                          //RC522 modülü reset pinini tanımlıyoruz.
int SS_PIN = 10;                          //RC522 modülü chip select pinini tanımlıyoruz.


MFRC522 rfid(SS_PIN, RST_PIN);            //RC522 modülü ayarlarını yapıyoruz.
byte ID[4] = {226,230,220,27};          //Yetkili kart ID'sini tanımlıyoruz.

void setup() {
  Serial.begin(9600);                     //Seri haberleşmeyi başlatıyoruz.
  SPI.begin();                            //SPI iletişimini başlatıyoruz.
  rfid.PCD_Init();                        //RC522 modülünü başlatıyoruz.

}

void loop() {

  if ( ! rfid.PICC_IsNewCardPresent())    //Yeni kartın okunmasını bekliyoruz.
    return;

  if ( ! rfid.PICC_ReadCardSerial())      //Kart okunmadığı zaman bekliyoruz.
    return;

  if  (
 
    rfid.uid.uidByte[0] == ID[0] &&     //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz.
    rfid.uid.uidByte[1] == ID[1] &&
    rfid.uid.uidByte[2] == ID[2] &&
    rfid.uid.uidByte[3] == ID[3]
 ) {

        Serial.println("Kapi acildi");
        ekranaYazdir();

    }

    else{                                 //Yetkisiz girişte içerideki komutlar çalıştırılır.
      Serial.println("Yetkisiz Kart");
      ekranaYazdir();
    }
  rfid.PICC_HaltA();

}
void ekranaYazdir(){
  Serial.print("ID Numarasi: ");
for(int sayac = 0; sayac < 4; sayac++){
Serial.print(rfid.uid.uidByte[sayac]);
    Serial.print(" ");
  }
  Serial.println("");
}



UID NUMBERS ÖRNEĞİ
#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>




#define RST_PIN 9
#define SS_PIN 10

byte readCard[4];
int successRead;

MFRC522 mfrc522(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  Serial.println("RFID KART KAYIT UYGULAMASI");
  Serial.println("--------------------------");
  Serial.println("Lutfen  karti okutun");
  Serial.println();

}

void loop()
{
  //yeni kart okununmadıkça devam etme
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  getID();  //kart ID oku
  delay(100);
  SektorOku(); //Sektör oku
  delay(100);
  SektorYaz();

  //**********************************************************************************
  delay(200);
}

///Rfid kartı id sini oku.
int getID() {

  Serial.print("Kart UID'si: ");
  //kartın UID'sini byte byte oku ve seri monitöre yaz
  for (int i = 0; i < mfrc522.uid.size; i++) {  //
    readCard[i] = mfrc522.uid.uidByte[i];
    Serial.print(readCard[i], HEX);
  }
  Serial.println("");
  //kart okumayı durdur ve 1 döndür (okuma başarılı)
  mfrc522.PICC_HaltA();
  return 1;
}

void SektorOku()
{
    // In this sample we use the second sector,
    // that is: sector #1, covering block #4 up to and including block #7
    byte sector         = 1;
    byte blockAddr      = 4;
    byte trailerBlock   = 7;
    byte status;
    byte buffer[18];
    byte size = sizeof(buffer);

    // Read data from the block
    Serial.print(F("Reading data into block ")); Serial.print(blockAddr);
    Serial.println(F(" ..."));
    status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);  //sektörü oku buffer ata
    if (status != MFRC522::STATUS_OK) {
        Serial.print(F("Hata: "));
        Serial.println(mfrc522.GetStatusCodeName(status));
    }
    Serial.print(F("Okunan Data- (Blok)")); Serial.print(blockAddr); Serial.println(F(":"));
    dump_byte_array(buffer, 16); //gelen datayı diziye ata göster
    Serial.println();

}

void SektorYaz()
{
  byte blockAddr      = 4;
  byte dataBlock[]    = {
        0x01, 0x02, 0x03, 0x04, //  1,  2,   3,  4,
        0x05, 0x06, 0x07, 0x08, //  5,  6,   7,  8,
        0x08, 0x09, 0xff, 0x0b, //  9, 10, 255, 12,
        0x0c, 0x0d, 0x0e, 0x0f  // 13, 14,  15, 16
    };
    byte status;
    byte buffer[18];
    byte size = sizeof(buffer);

// Write data to the block
    Serial.print(F("Writing data into block ")); Serial.print(blockAddr);
    Serial.println(F(" ..."));
    status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16);  //dataBlock dizisindeki yeni değerleri karta yaz
    if (status != MFRC522::STATUS_OK) {
        Serial.print(F("Hata: "));
        Serial.println(mfrc522.GetStatusCodeName(status));
    }
    Serial.println();
}


/**
 * Helper routine to dump a byte array as hex values to Serial.
 */
void dump_byte_array(byte *buffer, byte bufferSize) {
    for (byte i = 0; i < bufferSize; i++) {
        Serial.print(buffer[i] < 0x10 ? " 0" : " ");
        Serial.print(buffer[i], HEX);
    }
}

Yorumlar

Bu blogdaki popüler yayınlar

ARDUINO DERS-22 (PİYANO YAPIMI)

ARDUINO DERS-28 (5110 LCD İLE YILAN OYUNU)

ARDUINO DERS-10 (HC-SR04 ultrasonik mesafe sensörü )