Deneyap Mini Kart ile RC522 Modülünün kullanımı

enesdaggg

Kilopat
Katılım
1 Haziran 2015
Mesajlar
42
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Merhabalar,

Deneyap Mini kartımla RC522 RFID modülünü kullanarak 13.56MHz RFID kart(lar)ımı okuyup seri monitörde yazdırmaya çalışıyorum. MacOS üzerinde Arduino IDE 2.0.1 kullanmaktayım. RFID kartı modüle yaklaştırdığım okunmuyor maalesef. Deneyap kartın sitesinde paylaşılan örnek "RFID Uygulaması"ndan faydalandım ancak sorunum çözülmedi.

Not 1: Boş bir projede yalnızca seri monitör üzerinde yazdırma yapma işleminde problem yaşamadığımı teyit ettim.
Not 2: Kullanmakta olduğum RC522 modülü Arduino Uno'ya bağlayarak aynı programı başarıyla çalıştırabilmekteyim. Dolayısıyla modülde sorun yok.
Not 3: Kullanmakta olduğum jumper kabloları test ettim, sorun yok. Ayrıca kart üzerindeki farklı 3.3V ve GND pinlerini de denedim, hala sorun devam etmekte.

- Kullandığım kod:
C:
#include <SPI.h>
#include <MFRC522.h>

#define RED LEDR
#define BLUE LEDB
#define GREEN LEDG
#define RST_PIN D3      // RC522: RST -> D3
#define SDA_PIN D2      // RC522: SDA -> D2

MFRC522 rfid(SDA_PIN, RST_PIN);
byte ID[4] = {121,127,254,179};

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(RED,OUTPUT);
  pinMode(BLUE,OUTPUT);
  pinMode(GREEN,OUTPUT);
}
void loop() {

  if (!rfid.PICC_IsNewCardPresent())     // Yeni kartın okunması beklenir
    {
      BEKLE(); // Kart okutulmazsa mavi LED yanar
      Serial.println("okunamadi");
      delay(1000);
      return;
    }
 
  if (!rfid.PICC_ReadCardSerial())         //Kart okunmadığı zaman beklenilir
  {
      BEKLE(); // Kart okutulmazsa mavi LED yanar
      delay(1000);
      return;
  }
  if (rfid.uid.uidByte[0] == ID[0] &&     //Okunan kart ID'si ile ID değişkeni karşılaştırılır
    rfid.uid.uidByte[1] == ID[1] &&
    rfid.uid.uidByte[2] == ID[2] &&
    rfid.uid.uidByte[3] == ID[3]) {
    DOGRU();         // Okutulan kart doğruysa yeşil LED yanar
    delay(1000);
  } else {         // Okutulan kart yanlışsa bu blok çalışır
    YANLIS();         // Okutulan kart yanlışsa kırmızı LED yanar
    ID_OGREN();        // seri port ekranında kartın ID'si yazılır.
    delay(1000);
  }
  rfid.PICC_HaltA();
}
void BEKLE() {
      digitalWrite(BLUE,HIGH);
      digitalWrite(RED,LOW);
      digitalWrite(GREEN,LOW);
}
void DOGRU() {
      digitalWrite(BLUE,LOW);
      digitalWrite(RED,LOW);
      digitalWrite(GREEN,HIGH);
}
void YANLIS() {
      digitalWrite(BLUE,LOW);
      digitalWrite(RED,HIGH);
      digitalWrite(GREEN,LOW);
}
void ID_OGREN() {
  Serial.print("ID Numarasi: ");
  for (int sayac = 0; sayac < 4; sayac++) {
    Serial.print(rfid.uid.uidByte[sayac]);
    Serial.print(" ");
  }
  Serial.println("");
}

- Yapmış olduğum pin bağlantısı:

RC522Deneyap Mini
SDAD2
SCKSC (D7)
MOSIMO (D4)
MISOMI (D5)
GNDGND
RSTD3
3.3V3.3V

- Sonuç:
Kart üzerindeki RGB led sürekli olarak mavi renkte yanmakta.
RC522'ye çalıştığını teyit ettiğim farklı RFID kartlar yaklaştırmama rağmen seri monitörde "okunamadi" mesajı yazdırılmakta.
Seri monitörde bastırılan yazı (zaman damgası özelliği açık)

Çözümü buldum. Benim gibi aynı problemi yaşayıp çözüm arayan olursa pin bağlantısını aşağıdaki gibi yapabilir (SCK'yi SC'ye değil MC'ye bağlayın)

RC522Deneyap Mini
SDAD2
SCKSM (D7)
MOSIMO (D4)
MISOMI (D5)
GNDGND
RSTD3
3.3V3.3V
 
Son düzenleme:

Geri
Yukarı