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 kodları açıklamaya
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.