Duyuru

Çöküş
Henüz duyuru yok

RC522 RFID Modülü Kullanımında Sorun

Çöküş
X
 
  • Filtrele
  • Zaman
  • Göster
Hepsini Sil
yeni mesajlar

  • RC522 RFID Modülü Kullanımında Sorun

    Merhabalar,

    Deneyap Mini kartımla RC522 RFID modülünü kullanarak 13.56MHz RFID kartımı okuyup seri monitörde yazdırmaya çalışıyorum. MacOS üzerinde Arduino IDE 2.0.1 kullanmaktayım. Modülü kullanarak okuma işlemi yapmada problem yaşıyorum. Deneyap kartın sitesinde paylaşılan örnek "RFID Uygulaması"ndan faydalandım ancak sorunum çözülmedi.

    - Kullandığım kod:
    Kod:
    #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ı:
    RC522 Deneyap Mini
    SDA D2
    SCK SC (D7)
    MOSI MO (D4)
    MISO MI (D5)
    GND GND
    RST D3
    3.3V 3.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.
    Resmi gerçek boyutunda görmek için tıklayın.  Resmin ismi:  Ekran Resmi 2022-10-29 18.08.43.png Görüntüleme: 0 Büyüklüğü:  10.7 KB


    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.
    En son düzenleyen enesdag; 10-29-2022, 06:13 PM.

  • #2
    https://www.robolinkmarket.com/Data/...ndiyagrami.pdf
    Buradaki pin diyagramına göre bağlantıları yeniden yapmayı deneyin

    Yorum Yap


    • #3
      Aşağıdaki kod ve ekli fritzing çiziminden yararlanarak Deneyap Mini ile bir deneme yapabilirsiniz.




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

      MFRC522 mfrc522(D4,D0);


      String fnc_user_ID(){
      mfrc522.PICC_ReadCardSerial();
      String user_ID="";
      for (byte i=0; i<mfrc522.uid.size; i++){
      user_ID += (mfrc522.uid.uidByte[i] < 0x10 ? "0": " ") + String(mfrc522.uid.uidByte[i], HEX);
      }
      return user_ID;
      }


      void setup() {
      SPI.begin();
      mfrc522.PCD_Init();
      Serial.begin(115200);
      pinMode(D12, OUTPUT);
      }

      void loop() {
      if (mfrc522.PICC_IsNewCardPresent()) {
      Serial.print("Kart ID:");
      Serial.println(fnc_user_ID());
      digitalWrite(D12, HIGH);
      delay(2000);
      } else {
      digitalWrite(D12, LOW);
      }
      }
      Eklenen Dosyalar

      Yorum Yap


      • #4
        Aslı sametatabasch tarafından gönderilmiş Mesajı göster
        https://www.robolinkmarket.com/Data/...ndiyagrami.pdf
        Buradaki pin diyagramına göre bağlantıları yeniden yapmayı deneyin
        Attığınız bağlantıdaki pin diyagramı Deneyap Mini Kart değil Deneyap Kart için oluşturulduğu için deneme yapmam mümkün değil.
        Konuyu inceleyenlerin ihtiyacı olursa Deneyap Mini Kart için hazırlanan pin diyagramı: https://cdn.deneyapkart.org/media/up...mvhwU0rTy5.png


        Aslı do4us tarafından gönderilmiş Mesajı göster
        Aşağıdaki kod ve ekli fritzing çiziminden yararlanarak Deneyap Mini ile bir deneme yapabilirsiniz.
        Kod:
        #include <SPI.h>
        #include <MFRC522.h>
        
        MFRC522 mfrc522(D4,D0);
        
        
        String fnc_user_ID(){
        mfrc522.PICC_ReadCardSerial();
        String user_ID="";
        for (byte i=0; i<mfrc522.uid.size; i++){
        user_ID += (mfrc522.uid.uidByte[i] < 0x10 ? "0": " ") + String(mfrc522.uid.uidByte[i], HEX);
        }
        return user_ID;
        }
        
        
        void setup() {
        SPI.begin();
        mfrc522.PCD_Init();
        Serial.begin(115200);
        pinMode(D12, OUTPUT);
        }
        
        void loop() {
        if (mfrc522.PICC_IsNewCardPresent()) {
        Serial.print("Kart ID:");
        Serial.println(fnc_user_ID());
        digitalWrite(D12, HIGH);
        delay(2000);
        } else {
        digitalWrite(D12, LOW);
        }
        }
        Paylaşmış olduğunuz Fritzing çizimi ve hazır kod, Deneyap Mini Kart değil Deneyap Kart için hazırlandığından dolayı birebir deneme yapamam. Deneyap Mini kartında D4 pini SPI haberleşmede MOSI pini olarak kullanıldığı ve RC522 modülü de SPI ile haberleştirildiği için deneyemiyorum. RST ve SDA pinleri olarak Deneyap Mini Kartta D2 ve D3 pinlerini denemiştim. Sorun hala devam etmekte.

        Yorum Yap


        • #5
          Sizin için pinleri Deneyap Mini'ye göre güncelledik. Koda ve hazırladığımız video içeriğine bağlantı adresinden erişebilirsiniz.

          Yorum Yap


          • #6
            Aslı do4us tarafından gönderilmiş Mesajı göster
            Sizin için pinleri Deneyap Mini'ye göre güncelledik. Koda ve hazırladığımız video içeriğine bağlantı adresinden erişebilirsiniz.
            Sıkıntının sebebi, SCK'nın Deneyap Mini'de MC'ye değil SC'ye bağlanmasıymış. Desteğiniz için teşekkür ederim.
            Konuyu sonradan okuyup çözüm arayan olursa pin bağlantınızı üstteki mesajda yer alan örnek projenin yorum kısmına göre yapabilir.

            Yorum Yap

            Hazırlanıyor...
            X