Rfid Sesli Kart Okuyucu Projesi

22 650

Bu projemizde arduino ile rfid sesli kart okuyucu projesini yapacağız. Rfid ile yapılmış birçok proje bulunmakta. Fakat bu projemizin diğerlerinde farkı kimlik tanımla yaparken sesli olarak kartın kayıtlı olup olmadığını söyleyerek kayıtlı ise kayıtlı olan kişin de ismini söyleyerek farklı bir uygulama yapmış olacağız. Ama öncelikle rfid nedir ve çalışma sisteminden bahsedelim.

Radyo frekansı ile tanımlama sistemi Rfid, radyo frekansı kullanarak nesneleri tekil ve otomatik tanıma yöntemidir. RFID etiketi, radyo frekansı ile yapılan sorguları almaya ve cevaplamaya olanak tanıyan bir silikon yonga, anten ve kaplamadan meydana gelir. Yonga, etiketin üzerinde bulunduğu nesne ile ilgili bilgileri saklar. Anten, radyo frekansı kullanarak nesne bilgilerini okuyucuya iletir. Kaplama ise etiketin bir nesne üzerine yerleştirilebilmesi için yonga ve anteni çevreler.

Malzemeler:

  1. Arduino
  2. Wtv020 mp3 modül
  3. RC522 RFID kartı
  4. Hoparlör
  5. 2 gb Sd Kart

Projemizde mp3 modül kullanarak sesli bilgi vermesini sağlayacağız. Bunun için öncelikle wtv020 mp3 modülüne ses dosyası eklemeniz gerekir.

wtv020 mp3 modül  ses dosyası eklenmesine buradan bakabilirsiniz.

Elektronik Kısım:

Yukarıdaki devre şemasına bakarak gerekli bağlantıları yapalım. Rfid SPI haberleşmesi ile iletişim sağladığından uno modelinden farklı bir kart kullanıyorsanız SPI pinleri farklı pinler olacaktır.

Yazılımda kullanılan kütüphaneleri indirelim.

Kart okuyucu kütüphaneler

Yazılım Kısmı:

// Rfid Sesli Kart Okuyucu
// Coder: Sezgin GÜL
// www.robimek.com
#include <SPI.h>
#include <RFID.h>
#include <Wtv020sd16p.h>
int resetPin = 2;
int clockPin = 3;
int dataPin = 4;
int busyPin = 5;
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
RFID rfid(10,9); // rfid sda ve reset pinleri
 
byte emaomos[5] = {19,168,166,2,31}; // kartın kimlik numarası
byte serNum[5];
byte data[5];
int LED_access = 6; // yeşil led
int LED_intruder = 7; // kırmızı led
 
void setup(){
wtv020sd16p.reset();
Serial.begin(9600);
rfid.init();
 
pinMode(LED_access,OUTPUT);
pinMode(LED_intruder,OUTPUT);
 
}
 
void loop(){
 
boolean emaomos_card = true;
 
if (rfid.isCard()){ // karttan verilerin okunması
if (rfid.readCardSerial()){
delay(1000);
data[0] = rfid.serNum[0];
data[1] = rfid.serNum[1];
data[2] = rfid.serNum[2];
data[3] = rfid.serNum[3];
data[4] = rfid.serNum[4];
}
 
for(int i=0; i<5; i++){
if(data[i]!= emaomos[i]) emaomos_card = false;
}
if (emaomos_card){ // kartın verileri eşleşiyor ise
 
wtv020sd16p.playVoice(2);
delay(4000);
 
digitalWrite(LED_access,HIGH);
delay(2000);
digitalWrite(LED_access,LOW);
}
else{ // kimlik bilgileri eşleşmiyor ise
wtv020sd16p.playVoice(1);
delay(4000);
digitalWrite(LED_intruder, HIGH);
 
delay(2000);
digitalWrite(LED_intruder, LOW);
}
 
delay(500);
rfid.halt();
 
}
}

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

22 Yorum

  1. Hamza

    Birden fazla RFID kart kontrolü nasıl yapabiliriz bu programda. Özelliklede if (rfid.readCardSerial()){
    delay(1000);
    data[0] = rfid.serNum[0];
    data[1] = rfid.serNum[1];
    data[2] = rfid.serNum[2];
    data[3] = rfid.serNum[3];
    data[4] = rfid.serNum[4];
    }
    kısmı ile bir kart okundu. İkinci kart okunması ve o kartlada basşka bir işlem yapılması isteniyorsa ne yapılmalı?

  2. Uğur FİLİK

    hocam ıyı gunler elınızde bu proje hazır varmı satın almak ısıtıyorum

  3. ahmet

    nerede hata yaptım bilmiyorum ses dosyalarını cevirip 1.ad4 2.ad4 diye adlandırıp karta yükledim
    baglantılarda tamam ama ses seda yok zaten konu hakkında ilk tecrübem olduğundan acayip zor anlıyorum nerede hata yapıyor olabilirim wtv020mo1 kullanıyorum uno r3 clone ile yaptım

      1. MEhemt

        nasıl adlandırılmalı sezgin hocam bende uğraşıyorum ama yapamdım bir yardım ederseniz sevinirim

        1. Sezgin GÜL

          ad4 formatına çevirdiğinde dosya ismi 0001, 0002, 0003 şeklinde olmalı.

  4. ahmet

    serial port ekranında kartı rfıd ye okuttuğumda hiç birsey görmuyorum normalmi

  5. Eren

    MERHABA HOCAM BİR SORUM OLACAKTI
    “byte emaomos[5] = {19,168,166,2,31}; // kartın kimlik numarası ” BURADA BENDEKİ KARTIN KİMLİK NUMARASINI MI YAZMAM GEREKİYOR BİRDE BENDEKİ KARTIN KİMLİK NUMARASINI NASIL BULURUM KARTIN KİMLİK NUMARASINI NEYE GÖRE YAZIYORUZ

    1. Sezgin GÜL

      evet oraya yazacaksın. kimlik numarasını öğrenmek için kütüphanedeki örnek kodu yükleyip serial monitörden görebilirsin.

      1. Eren

        tmm hocam yaptım çok saolun teşekkür ederim

  6. ahmet

    yanlış yazmışım her kullanıcının kullandığı farklı kartlar var ve kullanıcılar okuttuğunda kullanıcının ismini soylesin istiyorum hosgeldin ahmet gibi

    1. Sezgin GÜL

      her kartın numarasını koda ekle ve her ismin de ses dosyasını oluşturup sd karta yükle. Koşul fonksiyonu ile de eşleştirmeleri yap.

  7. ahmet

    her hart için ayrı ses tanımlaması yapılabilir mi her kart sahibinin adını soylesin istiyorum olabilirmi

    1. Sezgin GÜL

      harfin ses dosyası kayıt edilemez örneği “b” harfini söylerken “be” diye söyleriz. Yani sessiz harflerde iki olarak ve her koşulu kayıt yaptırman gerekir. “b” harfi için “ba”, “be”, “bu”, “bi” gibi. Diğer türlü tek harf kayıt olur fakat onun için ek programlar kullanman gerekir. Ya da google translate deki yazılan yazıları sesli söyleme uygulamasını kullanarak, visual studio ile pc den konuşturabilirsin.

  8. Muhammet

    Merhaba hocam kafamdaki projeyi tasarlıyorum bu konu çok fazla işime yaradı çok teşekkür ederim ama bazı ekstraları var ben bunu yaptığımda uno daki tüm pinler dolu oluyo ama bana daha fazla haberleşme lazım kısaca pin sayısını arttırmam gerek nasıl bi parça önerirsiniz ?

  9. ahmet

    Wtv020 mp3 modül nereden bulabilirim yada tüm parçaları nasıl temin edebilirim yardımcı olursanız sevinirim

      1. hafız

        arduino uno ile yapılabilir mi bu proje