Arduino RFID Kart İle Lamba Yakma ve Söndürme
Arduino RFID Kart İle Lamba Yakma ve Söndürme
Merhaba arkadaşlar bu yazımda sizlere Arduino ile birlikte RFID kartı sistemde okunduğu süre boyunca yanan LED lamba uygulaması yapacağız, kart okunduğu süreye ek olarak doğru kart okunduğu zaman da yanmasını sağlayacağız yani lambayı yakmak için başka kartları kullanmak pek mümkün olmayacak hadi gelin projemize başlayalım.
Proje İçin Gerekenler
- Arduino
- RFID Seti
- Jumper Kablo
- Röle
- Led
Bir projeyi yapabilmek için en önemli noktanın nasıl çalıştığını anlamak olduğunu düşünüyorum, bu yüzden ilk olarak nasıl çalıştığını özetleyeyim.
Elimde bulunan 12v ile çalışan LED lambaları Arduino ya bağladığım röle ile elektriğini kesip açarak yakıp kapatıyoruz, kart sensöre yakında ise ve doğru kart ise röle açılıyor ve ışık yanmaya başlıyor, kart uzakta veya yanlış kart ise röle hiç devreye girmiyor.
Projemizin Devre Şeması
Projemizin Kodları
Kütüphanelerimizi dahil edelim
#include <SPI.h> #include <MFRC522.h>
Not : Kütüphaneyi indirmeyi ve kurmayı unutmayın! Kütüphaneyi indirmek için buraya tıklayın.
Değişkenlerimizi tanımlayalım
int rf_reset = 9, rf_ss = 10; int led_control = 8; MFRC522 RFID(rf_ss, rf_reset); byte card_id[4] = {185, 144, 187, 176}; bool card_statue = LOW;
Değişkenlerimizi açıklayalım
rf_reset ve rf_ss rfid kart sensörünün pinleri, led_control ise rölenin in pinini bağladığımız pin.
card_id ise sadece doğru kart yanaştırıldığı zaman çalışması için olan kartın kimlik bilgisi diyebiliriz.
card_statute ise kartın yakında olduğunda True uzakta olduğunda False alan değişkenimiz.
MFRC522 RFID olarak tanımladığımız yer ise kütüphane ile RFID sensörüne erişmemizi sağlayan sınıf.
Fonksiyonlarımızı tanımlayalım
void RFIDStatue() { if (!card_statue) { if (!RFID.PICC_IsNewCardPresent()) { return false; } else { card_statue = true; if (RFID.uid.uidByte[0] == card_id[0] && RFID.uid.uidByte[1] == card_id[1] && RFID.uid.uidByte[2] == card_id[2] && RFID.uid.uidByte[3] == card_id[3]) ledOpen(); } } if (!RFID.PICC_ReadCardSerial()) { card_statue = false; ledClose(); return false; } } void ledOpen() { digitalWrite(led_control, LOW); } void ledClose() { digitalWrite(led_control, HIGH); }
Fonksiyonlarımızı açıklayalım
ledOpen() ve ledClose() ledleri açıp kapatmak için sürekli olarak digitalWrite yazmak yerine oluşturduğumuz fonksiyonlar.
RFIDStatue ise RFID kartının yakında olup olmadığını ve doğru RFID kartının temas edip etmediğini anlamamızı sağlayan fonksiyondur.
"if(!RFID.PICC_ReadCardSerial())" kısmında kart hakkında herhangi bir bilgi alınmaz ise ledi söndürüyor,
"if (!RFID.PICC_IsNewCardPresent()){...}else{...}" kısmında kart hakkında bilgi alınıyor ve doğru kart ise ledi yakıyor.
Ana Fonksiyonları tanımlayalım
void setup() { Serial.begin(9600); SPI.begin(); RFID.PCD_Init(); pinMode(led_control, OUTPUT); ledClose(); } void loop() { RFIDStatue(); }
Tüm kodlar
#include <SPI.h> #include <MFRC522.h> int rf_reset = 9, rf_ss = 10; int led_control = 8; MFRC522 RFID(rf_ss, rf_reset); byte card_id[4] = {185, 144, 187, 176}; bool card_statue = LOW; void setup() { Serial.begin(9600); SPI.begin(); RFID.PCD_Init(); pinMode(led_control, OUTPUT); ledClose(); } void RFIDStatue() { if (!card_statue) { if (!RFID.PICC_IsNewCardPresent()) { return false; } else { card_statue = true; if (RFID.uid.uidByte[0] == card_id[0] && RFID.uid.uidByte[1] == card_id[1] && RFID.uid.uidByte[2] == card_id[2] && RFID.uid.uidByte[3] == card_id[3]) ledOpen(); } } if (!RFID.PICC_ReadCardSerial()) { card_statue = false; ledClose(); return false; } } void ledOpen() { digitalWrite(led_control, LOW); } void ledClose() { digitalWrite(led_control, HIGH); } void loop() { RFIDStatue(); }
2 yorum