Arduino
OKUDUĞUNUZ KONU
RFID-RC522 ile Kapı Kilidi Uygulaması
81

RFID-RC522 ile Kapı Kilidi Uygulaması

Yazar : Gürkan Türk7 Ekim 2015

Bu projemizde RFID-RC522 ile kapı kilidi uygulaması yapacağız.Arkadaşlar genel olarak video da kendimi ifade etmeye çalıştım ama burada da elimden geldiğince anlatayım. RFID-RC522 shield ile bina oda vb. yerlere kapı kilidi uygulaması için kullanılan bir sistem. Elimizde bir master kart ve onun çevresinde kartlar var. Master kart’ı çilingir gibi düşünebilirsiniz sizin götürdüğünüz anahtarınızı nasıl kopyalıyor onun gibi elinizde akbil, okul  kartı vb. kartlarınızı master karttan sonra sisteme okutuyorsunuz ve kartın içindeki kod sisteme kaydoluyor. Bu gayet normal ve elinizde ki kartlara zarar vermeyecek bir sistem çünkü bu kartlar zaten bunun için var. Konuyu biraz detaylandıracak olursak benim kurduğum devrede kırmızı beyaz mavi ve bir kırmızı led daha var (elimde yeşil yoktu beyaz ledi yeşil olarak farzedin) kırmızı ledlerden biri hata olduğunu biri de aslında röle görevi görüyor. Beyaz ve mavi ise sistemin ne demeye çalıştığını anlamak adına yapılmış durumdalar. Gerekli pinleri aşağıda yazıcam açıklama gereği duyarsak. 3.pin EEPROM sıfırlama butonu için (isterseniz hiç buton koymayın direk 3.pini GND’ye verin) 4.pin röle, 5 mavi led, 6 yeşil led, 7 kırmızı led olarak atandı.

Projeyi bağlantı şemasına uygun olarak kurunuz.

Rfid Şema

Projenin en sevdiğim yanlarından bir tanesi video da göstermeyi unutmuşum ama telefonunuzda NFC varsa telefonunuzu kart gibi kullanarak giriş yapmak için kullanabilmeniz 🙂

Gerekli malzemeler:

  • Arduino UNO veya Arduino Nano
  • 4 Led
  • Jumper
  • RFID-RC522
  • Elektromanyetik kartlar veya NFC’li bir adet akıllı telefon

Bağlantılar

  • Kırmızı led — > 7
  • Yeşil led — > 6
  • Mavi led — > 5
  • EEPROM sıfırlama — > 3
  • Röle — > 4
  • MOSI — > 11
  • MISO — > 12
  • SCK — > 13
  • SS (SDA) — > 10
  • RST — > 9

Bu projenin ilgili videosu linkte mevcut ==>>

**Bu projeyle ve üstteki video ile bağlantılı video linkte mevcut ==>>

(2 videoyu aynı anda açarsanız sizin için anlaması daha kolay olacaktır. İlk videonun 1.26 saniyesinden sonra ikinci video ile beraber izlenebilir.)

RFID-RC522 Kütüphanesi İndir

Projenin Arduino Kodunu İndir

/*
Copyright (C) 2015 Gürkan Türk
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Ayrıca bu kodun yapımında büyük emeği geçen Ömer Şiar BAYSAL Bey’e teşekkürlerimi sunarım.
 */
#include <EEPROM.h> //Okuma ve yazma işini UID ile EEPROM a kaydedicez.
#include <SPI.h> //RC522 modülü SPI protokolünü kullanır.
#include <MFRC522.h> //Mifare RC522 kütüphanesi

#define COMMON_ANODE //kullandığınız ledlere göre yanık veya sönük(H-L) kodlarını düzenleyiniz.
#ifdef COMMON_ANODE
#define LED_ON HIGH
#define LED_OFF LOW
#else
#define LED_ON LOW
#define LED_OFF HIGH
#endif

#define redLed 7 // Led pinlerini seçtik.
#define greenLed 6
#define blueLed 5

#define relay 4 //Röle pinini seçtik.
#define wipeB 3 //Master Card'ı silmek için buton pinini sseçtik.(Dilerseniz buton koymayın direk 3.pini GND ye verin.)

boolean match=false;
boolean programMode=false; //Programlama modu başlatma.

int successRead; //Başarılı bir şekilde sayı okuyabilmek için integer atıyoruz.

byte storedCard[4]; //Kart EEPROM tarafından okundu.
byte readCard[4]; //RFID modül ile ID tarandı.
byte masterCard[4]; //Master kart ID'si EEPROM'a aktarıldı.

/*
MOSI: Pin 11 / ICSP-4
MISO: Pin 12 / ICSP-1
SCK : Pin 13 / ICSP-3
SS(SDA) : Pin 10 (Configurable)
RST : Pin 9 (Configurable)
*/

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN,RST_PIN); //MFRC522 örneği oluşturduk.
///////////////////////YÜKLEME/////////////////////

void setup()
{
//Arduino Pin Konfigrasyonu
pinMode(redLed,OUTPUT);
pinMode(greenLed,OUTPUT);
pinMode(blueLed,OUTPUT);
pinMode(wipeB,INPUT_PULLUP);
pinMode(relay,OUTPUT);

digitalWrite(relay,HIGH); //Kapının kilitli olduğundan enin olun.
digitalWrite(redLed,LED_OFF); //Ledin sönük olduğundan emin olun.
digitalWrite(greenLed,LED_OFF); //Ledin sönük olduğundan emin olun.
digitalWrite(blueLed,LED_OFF); //Ledin sönük olduğundan emin olun.

//Protokol konfigrasyonu
Serial.begin(9600); //PC ile seri iletim başlat.
SPI.begin(); //MFRC522 donanımı SPI protokolünü kullanır.
mfrc522.PCD_Init(); //MFRC522 donanımını başlat.

Serial.println(F("Giris Kontrol v1.0")); //Hata ayıklama amacıyla
ShowReaderDetails(); //PCD ve MFRC522 kart okuyucu ayrıntılarını göster.

//Silme kodu butona basıldığında EEPROM içindeki bilgileri siler.
if(digitalRead(wipeB)==LOW)
{
//Butona bastığınızda pini düşük almalısınız çünkü buton toprağa bağlı.
digitalWrite(redLed,LED_ON); //Kırmızı led sildiğimizi bilgilendirmek amacıyla yanık kalır.
Serial.println(F("Silme butonuna basildi."));
Serial.println(F("5 saniye icinde iptal edebilirsiniz.."));
Serial.println(F("Tum kayitlar silinecek ve bu islem geri alinamayacak."));
delay(5000); //Kullanıcıya iptal işlemi için yeterli zaman verin.
if (digitalRead(wipeB)==LOW) //Düğmeye basılmaya devam ediliyorsa EEPROM u sil.
{
Serial.println(F("EEPROM silinmeye baslaniyor."));
for (int x=0; x<EEPROM.length();x=x+1) //EEPROM adresinin döngü sonu
{
if(EEPROM.read(x)==0) //EEPROM adresi sıfır olursa
{

}
else
{
EEPROM.write(x,0);
}
}
Serial.println(F("EEPROM Basariyla Silindi.."));
digitalWrite(redLed,LED_OFF);
delay(200);
digitalWrite(redLed,LED_ON);
delay(200);
digitalWrite(redLed,LED_OFF);
delay(200);
digitalWrite(redLed,LED_ON);
delay(200);
digitalWrite(redLed,LED_OFF);
}

else
{
Serial.println(F("Silme islemi iptal edildi."));
digitalWrite(redLed,LED_OFF);
}
}

/*Master Kart tanımlı mı kontrol edilecek.Eğer kullanıcı Master Kart seçmediyse
yeni bir Master Kart EEPROM a kaydedilecek.EEPROM kayıtlarının haricinde 143 EEPROM adresi tutulabilir.
EEPROM adresi sihirli sayısı 143.
*/

if (EEPROM.read(1) != 143)
{
Serial.println(F("Master Kart Secilmedi."));
Serial.println(F("Master Karti secmek icin kartinizi okutunuz.."));
do
{
successRead=getID(); //successRead 1 olduğu zaman okuyucu düzenlenir aksi halde 0 olucaktır.
digitalWrite(blueLed,LED_ON); //Master Kartın kaydedilmesi için gösterildiğini ifade eder.
delay(200);
digitalWrite(blueLed,LED_OFF);
delay(200);
}
while(!successRead); //Başarılı bir şekilde okuyamadıysa Başarılı okuma işlemini yapmicaktır.
for (int j=0; j<4; j++) //4 kez döngü
{
EEPROM.write(2+j,readCard[j]); //UID EPPROM a yazıldı, 3. adres başla.
}
EEPROM.write(1,143); //EEPROM a Master Kartı kaydettik.
Serial.println(F("Master Kart kaydedildi.."));
}

Serial.println(F("*****************"));
Serial.println(F("Master Kart UID:"));
for(int i=0; i<4; i++) //EEPROM da Master Kartın UID'si okundu.
{ //Master Kart yazıldı.
masterCard[i]=EEPROM.read(2+i);
Serial.print(masterCard[i],HEX);
}

Serial.println("");
Serial.println(F("***************"));
Serial.println(F("Hersey Hazir!!"));
Serial.println(F("Kart okutulmasi icin bekleniyor..."));
cycleLeds(); //Herşeyin hazır olduğunu kullanıcıya haber vermek için geri bildirim.
}
void loop()
{
do
{
successRead=getID(); //SuccessRead 1 olursa kartı oku aksi halde 0
if(programMode)
{
cycleLeds(); //Program modu geri bildirimi yeni kart okutulmasını bekliyor.
}
else
{
normalModeOn(); //Normal mod, mavi led açık diğer tümü kapalı.
}
}
while(!successRead);
if(programMode)
{
if(isMaster(readCard)) //Master Kart tekrar okutulursa programdan çıkar.
{
Serial.println(F("Master Kart Okundu.."));
Serial.println(F("Programdan cikis yapiliyor.."));
Serial.println(F("*********************"));
programMode=false;
return;
}
else
{
if(findID(readCard)) //Okunan kart silinmek isteniyorsa
{
Serial.println(F("Okunan kart siliniyor.."));
deleteID(readCard);
Serial.println(F("****************"));
}
else //Okunan kart kaydedilmek isteniyorsa
{
Serial.println(F("Okunan kart hafizaya kaydediliyor.."));
writeID(readCard);
Serial.println(F("**************************"));
}
}
}
else
{
if(isMaster(readCard)) //Master Kart okunursa programa giriş yapılıyor.
{
programMode=true;
Serial.println(F("Merhaba Sayin TURK, Programa giris yapiyorum."));
int count=EEPROM.read(0);
Serial.print(F("Sahip oldugum kullanici "));
Serial.print(count);
Serial.print(F("sayisi kadardir."));
Serial.println("");
Serial.println(F("Eklemek veya cikarmak istediginiz karti okutunuz."));
Serial.println(F("*****************************"));
}
else
{
if(findID(readCard))
{
Serial.println(F("Hosgeldin, gecis izni verildi."));
granted(300); //300 milisaniyede kilitli kapıyı aç.
}
else
{
Serial.println(F("Gecis izni verilmedi."));
denied();
}
}
}
}

////////////////////ERİŞİM İZNİ//////////////////////

void granted(int setDelay)
{
digitalWrite(blueLed,LED_OFF); //mavi led sönük
digitalWrite(redLed,LED_OFF); //kırmızı led sönük
digitalWrite(greenLed,LED_ON); //yeşil led yanık
digitalWrite(relay,LOW); //kapı kilidi açıldı
delay(setDelay); //kapının açılması için zaman kazanıyoruz.
digitalWrite(relay,HIGH); //kapı kilitlendi
delay(1000); //1 saniye sonra yeşil led de sönücek
}

////////////////ERİŞİM İZNİ VERİLMEDİ/////////////////////

void denied()
{
digitalWrite(greenLed,LED_OFF); //yeşil ledin sönük olduğundan emin olun
digitalWrite(blueLed,LED_OFF); //mavi ledin sönük olduğuna emin olun
digitalWrite(redLed,LED_ON); //kırmızı led yanık
delay(1000);
}

/////////////////////KART OKUYUCU UID AYARLAMA////////////////////////////

int getID()
{
//Kart okuyucuyu hazır ediyoruz
if(!mfrc522.PICC_IsNewCardPresent()) //yeni bir kart okutun vve devam edin.
{
return 0;
}
if(!mfrc522.PICC_ReadCardSerial()) //kartın serial numarasını alın ve devam edin.
{
return 0;
}
//4 ve 7 byte UID'ler mevcut biz 4 byte olanı kullanıcaz
Serial.println(F("Kartin UID'sini taratin..."));
for (int i=0; i<4; i++)
{
readCard[i]=mfrc522.uid.uidByte[i];
Serial.print(readCard[i],HEX);
}
Serial.println("");
mfrc522.PICC_HaltA(); //Okuma durduruluyor.
return 1;
}

void ShowReaderDetails() {
// Get the MFRC522 software version
byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
Serial.print(F("MFRC522 Software Version: 0x"));
Serial.print(v, HEX);
if (v == 0x91)
Serial.print(F(" = v1.0"));
else if (v == 0x92)
Serial.print(F(" = v2.0"));
else
Serial.print(F(" (bilinmeyen)"));
Serial.println("");

if ((v == 0x00) || (v == 0xFF)) {
Serial.println(F("DİKKAT! Haberlesme yetmezligi, MFRC522'yi dogru bagladiginizdan emin olun."));
while(true);
}
}
//////////////////Cycle Leds(Program Modu)///////////////////////

void cycleLeds() {
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun
digitalWrite(greenLed, LED_ON); // yeşil ledin yanık olduğundan emin olun
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun
delay(200);
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun
digitalWrite(blueLed, LED_ON); // mavi ledin yanık olduğundan emin olun
delay(200);
digitalWrite(redLed, LED_ON); // kırmızı ledin yanık olduğundan emin olun
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun
delay(200);
}
/////////////////Normal Led Modu//////////////////////////////

void normalModeOn () {
digitalWrite(blueLed, LED_ON); // mavi led yanık ve program kart okumaya hazır
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun
digitalWrite(relay, HIGH); // kapının kilitli olduğundan emin olun
}

///////////////////////EEPROM için ID Okuma////////////////////////

void readID( int number )
{
int start=(number*4)+2; //başlama pozisyonu
for (int i=0; i<4; i++) //4 byte alamabilmek için 4 kez döngü kurucaz
{
storedCard[i]=EEPROM.read(start+i); // EEPROM dan diziye okunabilen değerler atayın.
}
}

////////////////////EEPROM a ID Ekleme///////////////////////////////////

void writeID(byte a[])
{
if (!findID(a)) //biz eeprom a yazmadan önce önceden yazılıp yazılmadığını kontrol edin.
{
int num=EEPROM.read(0);
int start= (num*4)+6;
num++;
EEPROM.write(0,num);
for(int j=0;j<4;j++)
{
EEPROM.write(start+j,a[j]);
}
successWrite();
Serial.println(F("Basarili bir sekilde ID kaydi EEPROM'a eklendi.."));
}
else
{
failedWrite();
Serial.println(F("Basarisiz! Yanlıs ID veya kotu EEPROM. :-("));
}
}
/////////////////////////EEPROM'dan ID Silme////////////////////////

void deleteID(byte a[])
{
if (!findID(a)) //Önceden EEPROM'dan silinen karta sahipmiyiz kontrol et.
{
failedWrite(); //değilse
Serial.println(F("Basarisiz! Yanlıs ID veya kotu EEPROM. :-("));
}
else
{
int num=EEPROM.read(0);
int slot;
int start;
int looping;
int j;
int count=EEPROM.read(0); //Kart numarasını saklayan ilk EEPROM'un ilk byte'ını oku
slot=findIDSLOT(a);
start=(slot*4)+2;
looping=((num-slot)*4);
num--; //tek sayacı azaltma
EEPROM.write(0,num);
for(j=0;j<looping;j++)
{
EEPROM.write(start+j,EEPROM.read(start+4+j));
}
for(int k=0;k<4;k++)
{
EEPROM.write(start+j+k,0);
}
successDelete();
Serial.println(F("Basarili bir sekilde ID kaydi EEPROM'dan silinmistir.."));
}
}
///////////////Byte'ların Kontrolü///////////////////

boolean checkTwo (byte a[],byte b[])
{
if (a[0] != NULL)
match=true;
for (int k=0; k<4; k++)
{
if(a[k] != b[k])
{
match=false;
}
if(match)
{
return true;
}
else
{
return false;
}
}
}

//////////////////////Boşluk Bulma////////////////////////////

int findIDSLOT (byte find[] )
{
int count = EEPROM.read(0); //EEPROM ile ilk byte ı okuyacağız.
for(int i=1; i<=count; i++) //Döngüdeki her EEPROM girişi için
{
readID(i); //EEPROM daki ID yi okuyacak ve Storedcard[4] de saklayacağız.
if (checkTwo(find, storedCard)) // Saklı Kartlar da olup olmadığının kontrolü.
{ //aynı ID'e sahip kart bulursa geçişe izin vericek.
return i; //kartın slot numarası
break; //aramayı durdurucak.
}
}
}

///////////////////////EEPROM'da ID Bulma//////////////////////

boolean findID (byte find[] )
{
int count = EEPROM.read(0); //EEPROM'daki ilk byte'ı oku
for(int i=1; i <= count; i++) //Önceden giriş yapılmış mı kontrolü.
{
readID(i);
if(checkTwo(find,storedCard) )
{
return true;
break;
}
else
{
//değilse return false
}
}
return false;
}
///////////////////Başarılı Şekilde EEPROM'a Yazma//////////////////

void successWrite()
{
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun.
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun.
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(greenLed, LED_ON); // yeşil ledin yanık olduğundan emin olun.
delay(200);
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(greenLed, LED_ON); // yeşil ledin yanık olduğundan emin olun.
delay(200);
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(greenLed, LED_ON); // yeşil ledin yanık olduğundan emin olun.
delay(200);
}

/////////////////////EEPROM'a Yazma İşlemi Başarısız/////////////////

void failedWrite()
{
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun.
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun.
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(redLed, LED_ON); // kırmızı ledin yanık olduğundan emin olun.
delay(200);
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(redLed, LED_ON); // kırmızı ledin yanık olduğundan emin olun.
delay(200);
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(redLed, LED_ON); // kırmızı ledin yanık olduğundan emin olun.
delay(200);
}

////////////////////Silme İşlemi Başarılı///////////////////////////

void successDelete()
{
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun.
digitalWrite(redLed, LED_OFF); // kırmızı ledin sönük olduğundan emin olun.
digitalWrite(greenLed, LED_OFF); // yeşil ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(blueLed, LED_ON); // mavi ledin yanık olduğundan emin olun.
delay(200);
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(blueLed, LED_ON); // mavi ledin yanık olduğundan emin olun.
delay(200);
digitalWrite(blueLed, LED_OFF); // mavi ledin sönük olduğundan emin olun.
delay(200);
digitalWrite(blueLed, LED_ON); // mavi ledin yanık olduğundan emin olun.
delay(200);
}

////////////////Master Kartın Doğruluğunun Tespiti///////////////////

boolean isMaster (byte test[])
{
if(checkTwo(test,masterCard))
return true;
else
return false;

}

 

 

SİZCE NASIL OLMUŞ?
Beğendim
67%
İlginç
10%
Eh İşte
6%
Anlamadım
3%
Kötü
7%
Berbat
7%
YAZAR HAKKINDA
Gürkan Türk
Gürkan Türk
Sakarya Üniversitesi Elektrik Elektronik Mühendisi Sakarya Üniversitesi Robot Topluluğu
81 YORUMLAR
1 2
  • Berk Bolat
    27 Ocak 2017 at 19:43

    merhabalar hocam projenizi yaptım fakat bir sorum olcaktı. ben röle baglıcam fakat yapan arkadaslarımız hangi marka röle vs. bide ben buna servo motor eklemeye calıssam kod olarak nereyi degiştirmem gerekcek teşekkürler.

  • Gürkan Türk
    Gürkan Türk
    29 Ocak 2017 at 23:16

    Merhaba Berk, röle seçimini kullanacağın devreye bağlı olarak seçebilirsin evdeki bir lambayı kontrol edeceksen mesela 220V a dayanabilen yok bir kapı kilidi kontrol edeceksen 12V dayanımlı bir röle iş görecektir. Marka konusunda bir bilgim yok olsa da burdan söylemek pek doğru olmaz. Diğer soruna gelecek olursak kod olarak bir şey değişmen değilde eklemen gerekecek servo kütüphanesi servoyu bağladığın pin gibi tanıtımları yaptıktan sonra istediğin olay örgüsünden sonra örnek veriyorum rölenin çektiği anda servo da 90 derece dönsün istiyorsan ona uygun kod satırlarını eklemen gerekecek.

    • onur bozo
      23 Aralık 2017 at 23:38

      merhaba
      apartman kapısına koymak istiyorum . malum apartmanda kapı otomatiği var. kapıya bağlı olan röle uçlarına direk baglantı yapsan dogru calısırmı acaba

  • Malik Melih Horan
    25 Şubat 2017 at 02:13

    Peki biz bu sisteme mesela 1 kart sadece 3 saatde bir giriş yapabilir gibi bir özellik ekleyebilir miyiz ?

  • mustafa yıldz
    17 Mart 2017 at 19:29

    hocam merhabalar benim bir sorum olcaktı bütün malzemerli topladım fakat arduinodan cıkan 4. pini röle giriş yapıyorum röle tetiklemiyor röleye -12 v verdigimde tetikliyor acaba arduinoda 4. pini 1- yerine -0 verebilirmiyz kodları arasında nereleri degiştirmem gerekecek teşekkürler

  • Çetin çoruk
    28 Mart 2017 at 21:02

    merahaba hocam rfıd kart ile proje varda yardımcı olursanız sevinirim projem rfıd ile dolap kilidi 20 tane ayrı sınıf dolabı olucak ve tek bir arduino uno ile projemiz gerçekleşirmi ve kaç adet kart hafızaya kaydeder hocam

  • Süleyman KILIÇ
    5 Mayıs 2017 at 19:14

    Hocam merhaba, çok güzel bir çalışma olmuş emeğinize sağlık. Projeyi mega ile tasarladım ve sizin projenin aynısını yaptım. İlk seferde çalıştırdım ve masterCard olarak öğrenci kimliğimi tanımladım. sonraki çalışmalarımda bir hata yaptım sanırım. Master Kart UID: 0000 olarak değiştirmişim. şimdi ise masterCard okuma – silme işlemlerini gerçekleştiremiyorum. bir öneride bulunursanız sevinirim. İlgi ve alakanızdan dolayı teşekkürler

    • Muharrem KURALAY
      12 Aralık 2017 at 11:46

      Projeyi yaptık ama bir türlü doğru şekilde çalıştıramıyoruz.kartları okuyor.kartlar kayıt edildi diyoe ancak ondan sonrarı sürekli geçiş izni verilmedi diyor lütfen acil yardım okulda öğrencilerle çalışmada kullanıyoruz.

  • Süleyman KILIÇ
    5 Mayıs 2017 at 19:45

    EEPROM Clear Ederek sorunu çözdüm 🙂

  • Hakan h
    11 Mayıs 2017 at 02:46

    Elinize saglık on numara çalışma olmuş ve PROJEME çok iyi bir destek olcak

  • EFE
    12 Haziran 2017 at 16:30

    3. PİNİ gnd ye veriyorum fakat EPPROM silinmiyor ?

  • Engin KILIÇ
    14 Kasım 2017 at 15:31

    Merhaba projenizi gerçekleştirdim, gerçekten çok iyi olmuş, fakat bir sorunum var zaamn geçtiğinde sistem kendini kilitliyor, seri ekranda rfid bağlantı hatası diyor, kontrol ediyorum bir sorun görünmüyor acaba daha önce böyle bir hata ile karşılaştınız mı? Yardım edebilirseniz sevinirim. İyi çalışmalar

    • Gürkan Türk
      Gürkan Türk
      9 Mart 2018 at 00:05

      Engin Bey kusura bakmayın geç cevap veriyorum fakat uzun süreli kullanmadım o yüzden bişey diyemem ama kilitleyen kısım röle tarafı mı yoksa kontrol kısmı mı ?

  • ÖMER FARUK ÖZBEK
    2 Aralık 2017 at 18:45

    herşeyi göstermişin bir tane şeyi göstermemişin ulan devre şeması yok ben ordaki siyah beyaz yazılı fotodan neyi nereye bağlıcağımı nerden bulcam

  • ŞUAYP TANRIVERDİ
    25 Ocak 2018 at 14:37

    Nfc özelliği olan telefonlarla kullanılabilir demişsiniz fakat ben daha önce buna benzer bir proje de ben yaptım. Fakat telefonlarda elinizdeki kartlarda olduğu gibi sabit bir nfc kodu yok sürekli değişkenlik gösteriyor. Telefonu her okuttugunuzda farklı bir nfc kodunun olduğunu göreceksiniz.

    • Gürkan Türk
      Gürkan Türk
      9 Mart 2018 at 00:06

      biz projeyi yaptığımızda aynı telefonla bir çok kez gir çık yaptık. id değişmedi. 🙂

  • serhat
    3 Şubat 2018 at 16:20

    Merhabalar,

    kod ve kütüphane sizinki ile aynı olamayabilir, fakat bir sorum olacak. Rfıd kapıyı bir kez açtıktan sonra tekrar kart okumuyor. Bunumu Ufak oyuncak araba motoruna da bağladım ve yine aynı sorunla karşılaştım. Role boş iken defalarca okutabiliyorum. Fakat role çıkışı bağlantılarını yapınca geri akım mı çekiyor voltajdan mı ne olduğunu anlamadım. Bir fikriniz var mı?

    • Gürkan Türk
      Gürkan Türk
      9 Mart 2018 at 00:07

      Kapı sistemlerinde kullanılmak üzere yazıldığı için rölenin boşta olmasını isteyecektir. kodlar üzerinde ufak düzeltmeler ile sorununuzu halledebilrisiniz 🙂

  • serhat
    7 Şubat 2018 at 08:25

    Merhabalar,

    Bu devreyi yapan da dahil kimse gerçekte kullanmaya başladımı? Ben bunu yaptım ve kapıya bağlayamıyorum. Çünkü zil trafosu ac ve bu yüzden 1 kere okuyor. Kullanmaya başlayan varsa nasıl bağladığını paylaşabilirse sevinirim.

    • Gürkan Türk
      Gürkan Türk
      9 Mart 2018 at 00:08

      Tüm devreyi 12V ile besle kapı kilidi röle gibi kontrol kısmını 5v ile halledebilirsin 🙂

  • ibrahim
    27 Mart 2018 at 11:16

    “DİKKAT! Haberlesme yetmezligi, MFRC522’yi dogru bagladiginizdan emin olun.”)) hatası alıyorum bağlantıları defalarca kontrol ettim fakat aynı:(

  • Muhammet Ali KÜÇÜKER
    2 Nisan 2018 at 11:28

    Merhaba. Bu kart taramada sadece ilk iki numarayı tarıyor master kart ıcın. Aynı ilk iki numaraya sahip bir kart okutursak oda master kart olarak algılıyor bunu nasıl değiştirebilirim ? Butun numaraları taratıp ona göre master secsin istiyorum.
    {
    if(checkTwo(test,masterCard))
    return true;

  • mehmet
    16 Nisan 2018 at 20:23

    aynı projeyi raspberry pi de nasıl yapıcaz yardımcı olur musunuz

YORUM YAP