arduino ile rfid okuma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster


Rfid yani radyo dalgaları ile kimlikleme yöntemi günlük hayatımızda belkide farkında olmadan sıkça kullandığımız bir yöntem.



Bir alışveriş merkezine gittiğinizde ürünün üzerindeki tag yani rfid etiket çıkarılmadan mağazadan çıkmaya çalıştığınızda ne olur :) Alarmlar ötmeye başlar bunun nedeni rfid etiketinin çıkışta okunarak ücretinin ödenmediği bilgisini göndermesidir.

Gelelim inceleyeceğimiz projeye.Projede 125khz rfid etiketler kullanılmış.Yine bunun yanında rfid okuyucu ve 1 adet arduino bulunmakta.

Rfid okuyucu rfid taglerden gelen verileri Rx ve Tx pinleri üzerinden arduino tarafına çekmemize olanak sağlayacak.







Gelelim devremizdeki mantığa.Sistem önceden arduino kodları içerisinde tanımlamış olduğumuz rfid kartlarına izin verecek ve tanımlanmamış olan rfid kartlarına ise red yanıtı verecek.Sistem tasarlanırken software serial yani sanal rx tx pinleri tanımlanmış.Bunun nedeni eğer ki siz arduinonun fiziksel Rx ve Tx pinlerini kullanırsanız, her program güncellemesi sırasında rfid okuyucunuzun rx ve tx bağlantılarını sökmek zorunda kalırsınız aksi halde arduino üzerinde bir güncelleme gerçekleştiremezsiniz.

Gelelim kodları açıklamaya

#include <SoftwareSerial.h> // sofware serial kutuphanesi
SoftwareSerial RFID(2, 3); // RX ve TX pinlerimiz

int data1 = 0;
int ok = -1;
int yes = 13;//kabul kodumuz
int no = 12;//red kodumuz

//kabul edilecek olan 2 adet rfid tag tanımlanmış
int tag1[14] = {2,52,48,48,48,56,54,66,49,52,70,51,56,3};
int tag2[14] = {2,52,48,48,48,56,54,67,54,54,66,54,66,3};
int newtag[14] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //okunacak yeni rfid tag

void setup()
{
  RFID.begin(9600);    //software serial başladı
  Serial.begin(9600);  // seri ekran başlatıldı
  pinMode(yes, OUTPUT); // bilgi ledleri ayarlandı
  pinMode(no, OUTPUT);
}

boolean comparetag(int aa[14], int bb[14])
{
// 14 haneli rakamlardan oluşan tagleri karşılaştırma fonksiyonu
//fonksiyon kayıtlı taglarle ile okunan tagi karşılaşırıyor
  boolean ff = false; // karşılaştırma sonucu önce false olarak belirleniyor
  int fg = 0;
  for (int cc = 0 ; cc < 14 ; cc++)
  {
//for içerisinde 2 kartında her bir hanesi karşılaştırılıyor
    if (aa[cc] == bb[cc])
    {
      fg++;
    }
  }
  if (fg == 14)
  {
    ff = true;
 //tüm haneler eşit ise karşılaştırma sonucu true olarak dönüyor
  }
  return ff;
// değilse zaten false olarak belirlemiştik onu döndürüyoruz
}

void checkmytags()
{
// okunan yeni tagleri kayıtlı 2 tagimiz ile karşılaştırıyoruz
// okuan tag bizimkilerdense ok değişkenini 1 artırıyoruz
  ok = 0;
  if (comparetag(newtag, tag1) == true)
  {
    ok++;
  }
  if (comparetag(newtag, tag2) == true)
  {
    ok++;
  }
}

void readTags()
{
// tag okuma fonksiyonumuz
  ok = -1;
// okuyamadığımız zaman karşılaştırma değişkenimiz -1
//-1 bizim hata kodumuz
  if (RFID.available() > 0) //rfid okuyucudan veri geliyorsa
  {
 
    delay(100); // seri  olarak haberleşmede 100ms gecikme uyguluyoruz

    for (int z = 0 ; z < 14 ; z++) // 14 haneli tag numarasını alıyoruz
    {
      data1 = RFID.read();
      newtag[z] = data1;
    }
    RFID.flush(); // birden fazla okumayı engellemek adına
//frid registerını bosaltıyoruz

 
    checkmytags();// kayıtlı taglerle karsılastırma fonsiyonuna gonderiyoruz
  }

  if (ok > 0) // kayıtlı taglerle eşitlik var ise
  {
    Serial.println("Accepted");
// seri ekrana kabul edildi yazdırdık
    digitalWrite(yes, HIGH);
//kabul ledini yaktık
    delay(1000);
//1 sn bekledik
    digitalWrite(yes, LOW);
//kabul ledini söndürdük

    ok = -1;
//eşleşmeyi sıfırladık
  }
  else if (ok == 0)
// veri okuduk ama bizim kayıltlılarla eşleşmiyorsa
  {
    Serial.println("Rejected");
//seri ekrana reddedildi yazdık
    digitalWrite(no, HIGH);
//reddedildi ledini yaktık
    delay(1000);
//1 sn bekledik
    digitalWrite(no, LOW);
//reddedildi ledini söndürdük

    ok = -1;
//karşılaştırma değişkeninin sıfırladık
  }
}

void loop()
{
// sonsuz döngümüz içerisinde sürekli olarak okuma fonsiyonunu çağırıyoruz
  readTags();
}

Özetlemek gerekirse Arduino ile güzel bir kapı geçiş sistemi olan bu projede,ledleri kullanabileceğiniz gibi bir röle kartı vasıtası ile elektronik kapı kilitlerini de kontrol edebilirsiniz.Daha büyük bir rfid okuma sistemi ile birlike ürünlerin kontrolünü yapabilir, bir veritabanı oluşturarak ürün takip sistemi oluşturabilirsiniz.
ELEKTRO BLOGGER A HOŞGELDINIZ

ARAMA YAP

EN COK OKUNANLAR

- Copyright © ELEKTRO-BLOGGER Blogger