Moin Moin und Hallo,
nachdem ich mich in den letzten Tagen ein wenig mit NFC-Tags beschäftigt habe möchte ich heute einmal zeigen, wie man mit einem Arduino NFC-Tags bzw. NFC-Chips über ein RC522-Modul auslesen kann.
Das RC522-Modul gehört wohl zu einer der günstigeren Varianten, funktioniert aber im Einsatz tadellos – wenn man es erstmal zum laufen gebracht hat.
Der Aufbau bzw. die Schaltung sieht bei mir so aus:

Arduino | NFC Reader |
---|---|
3.3 V | 3.3 V |
GND | GND |
Pin 9 | RST |
Pin 10 | SDA (SS) |
Pin 11 | MOSI |
Pin 12 | MISO |
Pin 13 | SCK |
Wenn nun alles richtig verkabelt ist (sorry für meine Kabel-Farben), geht es an die Programmierung.
Nach längerer Sucherei, habe ich eine funktionierende Bibliothek gefunden: Link.
In dem Ordner „rfid-master/examples/cardRead“ findet ihr ein Beispiel, an das man sich gut orientieren kann. Es kann sein, dass man den Klassenbibliotheken beim inkludieren den richtigen Pfad zuordnen muss. Ich habe den Sketch ein wenig angepasst, sodass man direkt Aktionen für unterschiedliche NFC-Tags definieren kann.
Hier ist mein Sketch:
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
// input serial frames
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop()
{
if (rfid.isCard())
{
if (rfid.readCardSerial())
{
// einlesen der serial-frames
serNum0 = rfid.serNum[0];
serNum1 = rfid.serNum[1];
serNum2 = rfid.serNum[2];
serNum3 = rfid.serNum[3];
serNum4 = rfid.serNum[4];
String serial = String(serNum0, HEX) + String(serNum1, HEX) + String(serNum2, HEX) + String(serNum3, HEX) + String(serNum4, HEX);
serial.toUpperCase();
Serial.print("NFC-Serial: ");
Serial.print(serial);
Serial.println();
if(serial == "E32290F4A5")
{
Serial.println("Licht an");
}else if(serial == "C32B80CDA5")
{
Serial.println("Licht aus");
}
Serial.println();
delay(2000);
}
}
rfid.halt();
}
Der Output sieht dann so aus:
Fragen beantworte ich gern in der Kommentarfunktion.
Das Projekt nutzt leider nur die via RFID auslesbare ID des NFC-Tags – also genau genommen kein NFC! Die aufklebbaren NFC-Tags haben übrigens meist die selbe ID -> Können also nicht per ID unterschieden werden…
Danke für die super Zusammenfassung – RFID lesen klappt 1A damit.
Hallo Armin,
vielen Dank für dein Feedback. Du hast vollkommen recht. Ich werde den Artikel demnächst nochmal entsprechend anpassen.
Hallo,
ist es möglich mit derselben Karte das Licht an und aus zu schalten?
Ja. Du kannst ja innerhalb der Programmierung dir merken, ob die Lampe aktuell an oder aus ist.
NFC Tags haben nicht die gleiche ID (zumindest meine nicht), aber der Reader kann sie, wenn sie direkt nacheinander gelesen werden nicht unterscheiden. Liest man dazwischen aber eine RFID-Karte, haben beide Tags verschiedene IDs
Hallo, ich hoffe meine Frage ist hier nicht fehl am Platz. Ich suche eine Möglichkeit, einen elektrischen Stromkreis über NFC anzusteuern. Allerdings finde ich nur Lesegeräte, die nur über USB-Anschlüsse verfügen. Dies ist das einzige System, welches ich für nutzbar erachte.
Wäre es dafür geeignet?
Außerdem ist meine Programmierfähigkeit auf einem sehr niedrigen Level. Ich hoffe, dieser Artikel reicht nachher für mich aus. :)
Hej,
ich habe mit den rc522-Chips erhebliche Verbindungsprobleme. Hast Du die Stecker angelötet? Weißt Du, wie hitzeempfindlich der rc522 dabei ist?
Ich nutze den Chip zwar an einem Raspberry, aber das sollte hier keinen Unterschied machen , denk ich
Liebe Grüße
Steffen
.
Hallo Steffen,
ja ich habe die Stecker angelötet. Bei mir lief alles ohne Probleme.Über die hitzeempfindlich kann ich dir leider nichts sagen :-/
Hallo,
kann ich auch mehrere Reader an einen Arduino anschließen ?
Bei mir kommt in der 2. Zeile(#include <RFID.h>) immer die Fehlermeldung exit status 1
#include expects „FILENAME“ or . Was kann ich machen?
MFG Maxe
Hi,
ich würde ganz gern für ein Schulprojekt mit einem RFID Reader NFC Tags mit verschiedenen IDs auslesen, um den einzelnen Tags unterschiedliche Funktionen zu geben.
Würdest Du sagen mit Deinem Setup wäre etwas in der Art denkbar?
Es scheint ja schon einige Probleme gegeben zu haben,
unterschiedliche IDs oder auch gleiche werden angezeigt, oder direkt nacheinander genutzt nicht unterschieden .
Viele Grüße