Herkese merhabalar

Sizleri anahtar kırıldı, anahtar kayboldu, anahtarım çalındı derdinden kurtarıyoruz. Çok basit bir devre ile sizlerde evinize, marketinize, iş yerinize ve değerli eşyalarınızı sakladığınız ofisinize kartla ve çok güvenli bir şekilde girebileceksiniz. Kim istemez ki sadece kartımızı gösterip kendimize ait olan mekanlara girmeyi, kim istemez ki anahtarın çalındığında acaba hırsız girer mi gece korkusundan kurtulmayı. İşte bu devre ile tamamen kontrol ve güç sizde olacak. Şimdi de hep beraber bu devremizi beraber gerçekleştirelim.

Malzeme Listesi

Çalışma Şekli

Bu sistemimizin çalışma şekli seri port aracılığıyla kart ID’sini  tanıttığımız kartın RFID sensörüne yaklaştırdığımızda ID eşleşmesi doğrulandığında yazdığımız kod aracılığıyla buzzer öter ve  röle pinine sinyal gönderir. Giden sinyal sayesinde röle açılır ve kapı motoruna tetikleme enerjisi gönderilir ve kapı açılır. Sonrasında kapının kapanıp kapanmadığı bilgisi için kullandığımız hall sensörü ve karşı tarafa koyduğumuz mıknatıs sayesinde hall sensörü pasif kalır ve kapının kapandığı bilgisini almış olur. 

RFID-RC522 Nedir? 

Mifare RC522, temassız 13.56 mhz iletişim üzerinde çalışan, düşük güç tüketimi, düşük maliyetli ve kompakt boyutlu okuma ve yazma çipi olarak NXP tarafından tasarlanmış, akıllı sayaçların geliştirilmesinde en iyi seçim olan yüksek entegre RFID kart okuyucudur ve taşınabilir elde tutulan cihazlardır.

MF RC522, her türlü pasif temassız iletişim protokolüyle 13,56 MHz’de tam entegre olan gelişmiş modülasyon sistemini kullanır. 14443A uyumlu cevap sinyalini destekleyen. DSP, ISO14443A çerçeveleri ve hata düzeltme ile ilgilenir. Ayrıca, Mifare serisi ürünleri doğrulamak için hızlı CRYPTO1 şifrelemesini de destekler. MFRC522, Mifare serisi yüksek hızlı temassız iletişimi 424 kb/sn’ye kadar çift yönlü iletişim hızını destekler. 13.56MHz RFID ailesinin yeni bir aile üyesi olan MF RC522, MF RC5200 ve MF RC530 ile birçok benzerliğe sahiptir ve ayrıca daha fazla yeni özelliğe sahiptir.

Bu modül, seri üretim için doğrudan elde tutulan cihazlara sığabilir. Modül, 3.3V güç kaynağı kullanır ve güvenilir çalışma, yüksek okuma mesafesi sağlayan SPI protokolü aracılığıyla bağlanarak herhangi bir CPU kartıyla doğrudan iletişim kurabilir.

Devre Şeması

Arduino ve RFID arasındaki bağlantılar aşağıdaki tabloda verilmiştir. Buzzer’ın (+) pini Arduino’nun dijital pini 4’e ve GND pini Arduino’nun (-) pimine bağlanır.Hall effect sensör VCC ve OUT pini arasında 10K direnç kullanılır.  röle modülü motora bağlanır ve tetiklenmeye hazır hale gelir.

RFID PimiArduino Uno Pimi 
SDADijital 10
SCKDijital 13
MOSIDijital 11
MİSODijital 12
IRQBağlantısız
GNDGND
RSTDijital 9
3.3V3.3V  
Hall Etkisi Sensör PimiArduino Uno Pimi  
5V5V
GNDGND
DIŞARI3

Arduino Kodu

#include <SPI.h>
#include <MFRC522.h>

int hall_sensor = 3;
int state, lockread;
int Buzzer = 4;
const int LockPin = 2;

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

void setup() {
  Serial.begin(9600); // seri iletişim
  pinMode(LockPin, OUTPUT);
  pinMode(Buzzer, OUTPUT);
  pinMode(hall_sensor, INPUT);
  SPI.begin(); // SPI veri yolunu başlat
  mfrc522.PCD_Init(); // MFRC522'yi başlatın
  Serial.println("Approximate your card to the reader...");
  Serial.println();
  digitalWrite(LockPin, LOW);
}

void readsensor() {
  lockread = digitalRead(LockPin);
  state = digitalRead(hall_sensor);
  Serial.print(lockread);
  Serial.print(state);
  delay(2000);
}

void loop() {
  readsensor();
  sensor();

  if ( ! mfrc522.PICC_IsNewCardPresent()) { // Yeni kartları ara
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) { //Kartlardan birini seçin
    return;
  } //Seri monitörde UID'yi göster
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  //Serial.println();
  //Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "60 4E 07 1E" ) // buradan erişim vermek istediğiniz kartın/kartların UID'sini değiştirin
  {
    digitalWrite(LockPin, HIGH);
    Serial.print("Door Unlocked");
    digitalWrite(Buzzer, HIGH);
    delay(2000);
    digitalWrite(Buzzer, LOW);
    sensor();
  }
  else
  {
    Serial.println("You are not Authorised");
    digitalWrite(Buzzer, HIGH);
    delay(2000);
    digitalWrite(Buzzer, LOW);
  }
}

void sensor() {
  readsensor();
  if (lockread == HIGH) {
    readsensor();
    if (state == LOW) {
      digitalWrite(LockPin, LOW);
      Serial.print("Door Closed");
      digitalWrite(Buzzer, HIGH);
      delay(2000);
      digitalWrite(Buzzer, LOW);
    }
  }
}