Arduino RFID Uygulamaları – Kart Okuma ve Yazma
Kredi kartlarını, mağazalarda satın aldığımız kıyafetlerin ve binaya giriş kartlarının ortak noktası ne biliyor musunuz? İşte bu noktada karşımıza RFID kavramı çıkmaktadır. Bu sebepten ötürü başlıktan da anlaşılacağı üzere, bugün sizlerle birlikte RFID uygulamalarına küçük bir giriş yapacağız. Arduino Uno kartını kullanarak RFID etiketlerini okumanın ve tekilendirmenin nasıl yapılacağını birlikte öğreneceğiz.
RFID, Radyo Frekansı Tanımlama(Radio Frequency Identification) anlamına gelir. Genellikle Yakın Alan İletişimi anlamına gelen NFC ile karıştırılır. Ancak aralarındaki farkı iyice bilmemiz gerekmektedir.
RFID ve NFC Farkları Nelerdir?
Bu konuda bilmemiz gereken ilk önemli şey, NFC’nin aslında RFID teknolojisinin altında bulunan bir teknoloji olduğudur.
Her ikisi de aslında 13.56 Mhz frekansında çalışmaktadır. NFC diyince aklımıza veri alışverişini güvenli bir şekilde gerçekleştirmek üzere geliştirilmiş olan teknoloji gelmelidir. Günümüzde karşımıza çıkan NFC cihazları hem NFC okuyucu hem de NFC etiketi olarak çalışabilmektedirler.
RFID teknolojisinin amacı ise radyo dalgaları kullanarak öğeleri belirlemektir. RFID sistemlerin içini incelediğimizde anlıyoruzki, bir RFID sisteminde en azından, bir etiket, bir okuyucu ve bir anten içermektedir. RFID sisteminde bulunan okuyucu, anten aracılığıyla etikete bir sorgulama sinyali gönderir ve etiket eşsiz bilgiler ile yanıt verir. RFID etiketleri günümüzde aktif ve pasif olmak üzere ikiye ayrılmaktadır.
Aktif RFID
Aktif bir RFID etiketi, genellikle bir pil olmak üzere kendi güç kaynağına sahiptir.
Pasif RFID
Pasif bir RFID etiketi , gücünü elektromanyetik dalgası RFID etiketinin anteninde bir akım oluşturan okuma anteninden alır.
Bu iki sistemin genel farklarını anladığımız göre gelin RFID sisteminin biraz daha içine girelim.
RFID Teknolojisi Nerede Kullanılabilir?
- Evcil hayvan takibi
- Envanter yönetimi
- Varlık ve ekipman takibi
- Stok kontrolü
- Kargo ve tedarik zinciri lojistiği
- Araç takibi
- Kayıp ürün kontrolü
- Bina giriş ve çıkış kontrolü
Vb. bir sürü alanda karşımıza çıkmaktadır.
Aslında RFID sistemlerinin kullanımı 1940’lara kadar uzanmaktadır. Ancak, kullanın sıklığı 1970’lerde daha da artmaya başladı. Uzun bir süre boyunca etiketlerin ve okuyucuların yüksek maliyeti, yaygın ticari kullanımını engelledi. Gün geçtikçe donanım maliyetleri azaldığından dolayı RFID kullanımı da bunla orantılı olarak arttı.
RFID Uygulaması
O zaman gelin hep birlikte ilk RFID uygulamamıza başlayalım. Bu noktada ilk uygulamamızdaki amacımız, RFID kartlarının genel kullanımı yönünde olacaktır. Yani kısacası kart okuma ve yazma üzerine uygulama yapacağız.
Bu proje için gerekli olan elemanları kısaca öğrenelim:
Malzeme Listesi
- 1 adet Arduino Uno kartı
- 1 adet RFID okuyucu
- 1 adet breadboard
- 2 adet LED (tercihen bir kırmızı ve bir yeşil)
- 2 adet 200Ω direnç
- Birkaç adet jumper kablo
Devre Şeması
Şemada görüldüğü gibi RFID okuyucunun bir pini bağlı değil. Bu sadece şu anda yaptığımız projede gerekli olmadığından dolayıdır.
LED’ler pin 7 ve 8’e bağlıdır ama dilerseniz başka pin de kullanabilirsiniz, farklı pinler kullanıyorsanız kodunuzdaki doğru pinleri belirtmeyi unutmayın.
LED’leri dirençlerle Arduino’ya bağlamak için bir breadboard kullanmanızı öneririz. Ve ihtiyacımız olan son şey aşağıdaki programı Arduino kartına yüklemek.
#include <SPI.h> #include <MFRC522.h> MFRC522 mfrc522(10, 9); const int redLED = 7; const int greenLED = 8; void setup() { pinMode(redLED, OUTPUT); pinMode(greenLED, OUTPUT); Serial.begin(9600); // Seri haberleşme başlatıldı SPI.begin(); // SPI haberleşmesi başlatıldı mfrc522.PCD_Init(); // MFRC522 tanımlandı Serial.println("Kartinizin okunmasi için yaklastiriniz..."); Serial.println(); } void loop() { // Yeni kartlar aranıyor if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //UID numarası yazdırılıyor Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } content.toUpperCase(); if (content.substring(1) == "BD 31 15 2B") // Bu bölümü sizin kartınoz UID değerine göre değiştiriniz { digitalWrite(greenLED, HIGH); // 8 numaralı pin yüksek durumda delay(3000); digitalWrite(greenLED, LOW); } else { digitalWrite(redLED, HIGH); // 7 numaralı pin yüksek durumda delay(3000); digitalWrite(redLED, LOW); } }
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.