Arduino Lektion 20 – Teil 1: RFID RC522 – Kartenleser

In diesem Tutorial möchte ich das Modul RFID RC522 erklären und an einem kleinen Beispiel zeigen wie man diesen betreibt.

rfid-chip
Lieferumfang des RFID RC522

RFID bedeutet übersetzt radio frequency identification(laut Wikipedia).

Das Modul habe ich über ebay ersteigert und je nachdem wie lange man auf seine Ware warten möchte Zahlt man zwischen 3€ und 8€.

Lieferumfang

Zum Lieferumfang gehört:

  • 1 Transponder mit Schlüsselring
  • 1 Transponder im Kartenformat
  • 1 RFID-RC522 Modul
  • 2 Stiftleisten
    • 1 gerade
    • 1 abgewinkelt

Technische Daten

  • Betriebsspannung 3,3 V
  • Maße ca. 60mm x 39mm x 6mm (höchste Stelle am Quarz)

Aufbau

Anschluss

PIN am RFID Modul PIN am Arduino UNO
 3,3 V 3,3 V
GND GND
RST PIN 9
SDA PIN 10
MOSI PIN 11
MISO PIN 12
SCK PIN 13
rfid
RFID-RC522 Modul am Arduino Uno

Quellcode

Eine Bibliothek für den Arduino ist unter https://www.electrodragon.com/w/File:Rfid-master.zip zu finden.

#include <SPI.h>
#include <RFID.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);

String ids[2] = {"453B56D16", "8C3B3924AA"}; //Zugelassene ID's

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
}

void loop() {
  if (rfid.isCard() && rfid.readCardSerial()) {
    String serial = parseId(rfid);
    Serial.print("RFID Nummer: ");
    Serial.println(serial);

    boolean serialOK = false;
    int counter = 0;
    for (counter = 0; counter < sizeof(ids)-1; counter++) {
      if (serial == ids[counter]) {
        serialOK = true;
        break;
      }
    }

    if (serialOK) {
      Serial.println("ID wurde gefunden!");
    } else {
      Serial.println("ID wurde nicht gefunden!");
    }
    delay(2000);
  }

  rfid.halt();
}

String parseId(RFID rfid) {
  String result = "";
  int position = 0;
  for (position = 0; position <= 4; position++) {
    String pos = getNumPosAsHEX(rfid, position);
    result = result + pos;
  }
  result.toUpperCase();
  return result;
}

String getNumPosAsHEX(RFID rfid, int position) {
  return String(rfid.serNum[position], HEX);
}
serialmonitor
Ausgabe auf dem SeriellenMonitor der IDE

Neue ID’s registrieren

Der Quellcode des Arduino Sketches wird in einen festen Speicher geschrieben und die Variablen in einen flüchtigen. Durch dieses Verhalten kann man den Arduino nicht ohne weiteres dauerhaft auf die RFID’s „anlernen“.

Meine Lösung ist das Array welches um die registrierten ID’s erweitert werden.
Somit ist bei jedem neuen RFID Chip ein minimaler Programmieraufwand nötig.

Download

 

4 Gedanken zu „Arduino Lektion 20 – Teil 1: RFID RC522 – Kartenleser

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.