Bu yazıda RC522 kodlu RFID okuyucu modülün Arduino ile nasıl kullanılacağını öğreneceğiz.
Radio Frequency IDentification (Telsiz Frekansı Tanımlama) teriminin kısaltması olan RFID, kısa mesafelerde elektromanyetik alanları kullanarak veri iletişimi kurabilmemizi sağlar.
RFID sistemi insanları tanımlamak için çok uygundur. Örneğin işyerimizde çalışan herkese birer RFID kart veya tag (yuvarlak anahtarlık gibi olan) veririz ve kapıdan girdikleri zaman kartı cihaza okutmalarını isteriz. Böylece çalışanların işe ne zaman geldiğini otomatik olarak kaydedebiliriz.
Veya bir kapının kilidini RFID sistemine bağlarız ve kapıdan kimin geçip kimin geçemeyeceğini belirleyebiliriz.
RFID sistemi bir kart veya anahtarlık tipinde bir tag ile kullanılabilir ve bu dijital anahtarlar iki yönlü veri aktarımı yapabilen bir modül ile okunabilir. Her kartın kendine has bir seri numarası (UID) bulunur ve bu numara okunarak hangi kartın yaklaştırıldığı anlaşılabilir.
Piyasada RC522 kodlu bir okuyucu modül, bir kart ve bir tag’den oluşan hazır RFID kitlerini çok ucuza edinebilir, ayrıca uygun fiyatlara istediğimiz sayıda kart veya tag satın alabiliriz.
Lafı fazla uzatmadan devre kurulumunu inceleyelim;
Bu modül Arduino ile SPI veri aktarma protokolü üzerinden iletişim kuruyor ve Arduino üzerindeki bağlantı pinleri isteğimize göre değiştirilemez.
Devreyi kurduysak sketch koduna gelelim. Aşağıdaki sketch yaklaştırılan RFID kartı algılar, kart seri numarasını okur ve kartın listede olup olmadığını karşılaştırarak sonucu Seri Port Ekranı’nda görüntüler.
Bu sketch’te MFRC522 adlı yaygın kullanılan Arduino kütüphanesini kullanacağız. Kütüphaneyi Arduino IDE’nin ana menüsünden Araçlar > Kütüphaneleri Yönet… bölümüne girip MFRC522 kelimesini aratarak GithubCommunity tarafından hazırlanmış versiyonu kurarak ekleyebiliriz.
Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!
Sketch kodunu kopyalamak için pencerenin sağ üst köşesindeki butona tıklayabilir veya buraya tıklayarak ZIP dosyası olarak indirebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
/* RC522 RFID Modülü Arduino ile Nasıl Kullanılır? RC522 RFID modülünün detaylı açıklaması ve örnek projelerini web sitemizde bulabilirsiniz. Mete Hoca https://www.metehoca.com/ */ #include "MFRC522.h" // Kütüphane ekleniyor // Modül üzerindeki 3.3 pini Arduino'nun 3.3V pinine, GND ise GND pinine bağlanır. // RST = 9, SDA = 10, MOSI = 11, MISO = 12 ve SCK = 13 pinlerine bağlanmalıdır MFRC522 rfid(10, 9); // Kütüphane tanımlanıyor String kart = "AB:CD:EF:12"; // Bildiğimiz RFID kartın UID'sini buraya yazalım void setup() { Serial.begin(9600); // Seri Port Ekranı başlatılıyor SPI.begin(); // SPI bağlantısı başlatılıyor rfid.PCD_Init(); // Kütüphane başlatılıyor } void loop() { if(rfid.PICC_IsNewCardPresent()) {RFID();} // Kart yaklaştırılana kadar bekle delay(100); } void RFID() { rfid.PICC_ReadCardSerial(); // Bağlantı kuruluyor Serial.print("Kart Tipi: "); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.print(rfid.PICC_GetTypeName(piccType)); // Yaklaştırılan kart tipi Serial.print(" | "); Serial.print("Kart ID: "); Serial.print(kartID()); // Yaklaştırılan kartın seri numarası (UID) Serial.print(" | "); if (kart == kartID()) { Serial.println("Bu kartı biliyorum!"); // Kart listemizde var } else { Serial.println("Bilinmeyen kart!"); // Kartı tanımıyoruz } rfid.PICC_HaltA(); // Kart ile iletişimi sonlandıralım rfid.PCD_StopCrypto1(); } String kartID() { // Bu bölümde kartın seri numarası onaltılı değere dönüştürülüyor String metin = ""; for (int x = 0; x < rfid.uid.size; x++) { if(rfid.uid.uidByte[x] < 10) metin += "0"; metin += String(rfid.uid.uidByte[x], HEX); if(x < rfid.uid.size-1) metin += ":"; metin.toUpperCase(); } return metin; } |