RFID mit dem RC522 am Arduino auslesen
FunduinoZuletzt aktualisiert am
Karten und Schlüsselanhänger erkennen und damit LEDs schalten
Den RFID-Empfänger verkabeln
1 / 2
Die Library MFRC522 installieren
Die UID eines RFID-Tags auslesen
Programmcode – UID eines RFID-Tags auslesen
// RFID-Bibliothek hinzufügen
#include "MFRC522.h"
// Anschlüsse definieren
#define SDA 10
#define RST 9
// RFID-Empfänger benennen, Pins zuordnen
MFRC522 mfrc522(SDA, RST);
void setup()
{
Serial.begin(9600);
SPI.begin();
// Initialisierung des RFID-Empfängers
mfrc522.PCD_Init();
}
void loop()
{
String WertDEZ;
// Wenn keine Karte in Reichweite ist ..
if (!mfrc522.PICC_IsNewCardPresent())
{
// .. wird die Abfrage wiederholt.
return;
}
// Wenn kein RFID-Sender ausgewählt wurde ..
if (!mfrc522.PICC_ReadCardSerial())
{
// .. wird die Abfrage wiederholt.
return;
}
Serial.println("Karte entdeckt!");
// Dezimal-Wert in Strings schreiben
for (byte i = 0; i < mfrc522.uid.size; i++)
{
// String zusammenbauen
WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + " ";
}
// Kennung dezimal anzeigen
Serial.println("Dezimalwert: " + WertDEZ);
// kurze Pause, damit nur ein Wert gelesen wird
delay(1000);
}Erweiterung: Zwei LEDs mit zwei Karten schalten
Programmcode – Zwei LEDs mit zwei Karten schalten
// RFID-Bibliothek hinzufügen
#include "MFRC522.h"
// Anschlüsse definieren
#define SDA 10
#define RST 9
// LEDs
#define grueneLED 6
#define gelbeLED 7
// Zustand der LEDs false = beim Start ausgeschaltet
bool StatusgelbeLED = false;
bool StatusgrueneLED = false;
// RFID-Empfänger benennen, Pins zuordnen
MFRC522 mfrc522(SDA, RST);
void setup()
{
Serial.begin(9600);
SPI.begin();
// Initialisierung des RFID-Empfängers
mfrc522.PCD_Init();
pinMode(gelbeLED, OUTPUT);
pinMode(grueneLED, OUTPUT);
}
void loop()
{
String WertDEZ;
// Wenn keine Karte in Reichweite ist ..
if (!mfrc522.PICC_IsNewCardPresent())
{
// .. wird die Abfrage wiederholt.
return;
}
// Wenn kein RFID-Sender ausgewählt wurde ..
if (!mfrc522.PICC_ReadCardSerial())
{
// .. wird die Abfrage wiederholt.
return;
}
Serial.println("Karte entdeckt!");
// Dezimal-Wert in Strings schreiben
for (byte i = 0; i < mfrc522.uid.size; i++)
{
WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + " ";
}
// trim() -> Leerzeichen am Ende des Strings entfernen
WertDEZ.trim();
// Kennung dezimal anzeigen
Serial.println("Dezimalwert: " + WertDEZ);
// gelbe LED schalten
if (WertDEZ == "67 217 130 21")
{
// Status ändern an/aus
StatusgelbeLED = !StatusgelbeLED;
digitalWrite(gelbeLED, StatusgelbeLED);
}
// grüne LED schalten
if (WertDEZ == "3 208 23 23")
{
// Status ändern
StatusgrueneLED = !StatusgrueneLED;
digitalWrite(grueneLED, StatusgrueneLED);
}
// Die Wartezeit verhindert, dass dieselbe Karte mehrfach hintereinander erkannt wird
delay(1000);
}Anleitung bewerten