LED mit einem RFID-Chip steuern
Ziel: Eine LED mit einem autorisierten RFID-Chip anschalten.
Material:
- Arduino UNO
- Breadboard
- 1 LED
- RFID RC522 Modul
- 1 Widerstand (220 Ohm)
- mehrere Steckverbinder
Aufbau:
Pin 9 = RST
Pin 10 = SDA
Pin 11 = MOSI
Pin 12 = MISO
Pin 13 = SCK
GND = GND
3,3V = 3,3V
Pin 2 = Led
Code 1: Dieser Code liest nur die ID des Tags.
/*
Dieser Code liest die ID des Rfid-Tags auf einem Arduino UNO aus.
Aufbau (siehe Zeichnung oben):
Pin 9 = RST
Pin 10 = SDA
Pin 11 = MOSI
Pin 12 = MISO
Pin 13 = SCK
GND = GND
3,3V = 3,3V
*/
Dieser Code liest die ID des Rfid-Tags auf einem Arduino UNO aus.
Aufbau (siehe Zeichnung oben):
Pin 9 = RST
Pin 10 = SDA
Pin 11 = MOSI
Pin 12 = MISO
Pin 13 = SCK
GND = GND
3,3V = 3,3V
*/
#include //SPI der Bibliothek hinzufügen
#include //RFID der Bibliothek hinzufügen
#define SS_PIN 10 //SDA Pin definieren
#define RST_PIN 9 //RST Pin definieren
MFRC522 mfrc522(SS_PIN, RST_PIN); //RIFD Empfänger benennen
#include //RFID der Bibliothek hinzufügen
#define SS_PIN 10 //SDA Pin definieren
#define RST_PIN 9 //RST Pin definieren
MFRC522 mfrc522(SS_PIN, RST_PIN); //RIFD Empfänger benennen
void setup() //Begin des Setups
{
Serial.begin(9600); //Serielle Verbindung starten (Monitor)
SPI.begin(); //SPI-Verbindung aufbauen
mfrc522.PCD_Init(); //Initialisierung des RFID-Empfängers
}
{
Serial.begin(9600); //Serielle Verbindung starten (Monitor)
SPI.begin(); //SPI-Verbindung aufbauen
mfrc522.PCD_Init(); //Initialisierung des RFID-Empfängers
}
void loop() //Hier beginnt der Loop-Teil
{
{
if ( ! mfrc522.PICC_IsNewCardPresent()) //Wenn eine Karte in Reichweite ist...
{
return; //gehe weiter...
}
{
return; //gehe weiter...
}
if ( ! mfrc522.PICC_ReadCardSerial()) //Wenn ein RFID-Sender ausgewählt wurde
{
return; //gehe weiter...
}
{
return; //gehe weiter...
}
long code = 0; // Als Variable „code“ hinzufügen, unter welcher später die UID als zusammenhängende Zahl ausgegeben wird. Statt int benutze ich jetzt den Zahlenbereich „long“, weil sich dann eine größere Zahl speichern lässt.
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code = ((code + mfrc522.uid.uidByte[i]) * 10); // Nun werden vier Blöcke ausgelesen und in jedem Durchlauf wird der Code mit dem Faktor 10 „gestreckt“. (Eigentlich müsste man hier den Wert 1000 verwenden, jedoch würde die Zahl dann zu groß werden.)
}
{
code = ((code + mfrc522.uid.uidByte[i]) * 10); // Nun werden vier Blöcke ausgelesen und in jedem Durchlauf wird der Code mit dem Faktor 10 „gestreckt“. (Eigentlich müsste man hier den Wert 1000 verwenden, jedoch würde die Zahl dann zu groß werden.)
}
Serial.print("Die Kartennummer lautet:"); // Zum Schluss wird der Zahlencode (Man kann ihn nicht mehr als UID bezeichnen) ausgegeben.
Serial.println(code);
}
Serial.println(code);
}
Wichtig!!!!! Öffne: Arduino Werkzeuge-------> Serieller Monitor. Dort erscheint die ID des Tags. Diese ID muss man dann in Code 2 einfügen.
Code 2:
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (2, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
}
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (2, OUTPUT); // Der Pin 2 ist jetzt ein Ausgang (Hier wird eine LED angeschlossen)
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
{
return;
}
long code = 0;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code = ((code + mfrc522.uid.uidByte[i]) * 10);
}
{
code = ((code + mfrc522.uid.uidByte[i]) * 10);
}
Serial.print("Die Kartennummer lautet:");
Serial.println(code);
// Ab hier erfolgt die erweiterung des Programms.
if (code == 962030) // Wenn der Zahlencode 962030 lautet... hier muss man die ID einfügen
{ // Programmabschniss öffnen
digitalWrite (2, HIGH); // ...dann soll die LED an Pin 2 leuchten...
delay (5000); // für 5 Sekunden
digitalWrite (2, LOW); // … und danach wieder aus gehen.
} // Programmabschnitt schließen
} // Sketch abschließen
Erstellt: Jannis Engemann (08.11.2016)
Letzte Änderung: Jacob Busshart (28.06.2017)