
Wird die korrekte Karte an das RFID-Modul gehalten, öffnet der Servomotor die Schranke, anderenfalls bleibt die Schranke geschlossen. Wenn die Karte erneut vor das Lesegerät gehalten wird, schließt die Schranke wieder.
So sieht es aus:
Ein RFID-Modul (radio-frequency identification) besteht aus sogenannten „Tags“, und einem Lesegerät.

Benötigte Bauteile:
- Servomotor
- RFID-Modul
- Leitungsdrähte
- kodierte Karten (“Tags”)
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliothek:

oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Zunächst musst du die individuelle Kennung der Karte herausfinden, sie wird im Seriellen Monitor angezeigt.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // RFID-Bibiothek hinzufügen #include “MFRC522.h” // Anschlüsse definieren #define SDA 7 #define RST 9 // RFID-Empfänger benennen 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(F(“Karte entdeckt!”)); // Dezimal-Werte in String schreiben for (byte i = 0; i < mfrc522.uid.size; i++) { WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + ” “; } // Kennung dezimal anzeigen Serial.println(“Wert in dezimal: ” + WertDEZ); delay(1000); } |
Binde die Bibliotheken ein und definiere die Variablen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // eingebaute Bibliothek einbinden #include “Servo.h” // RFID-Bibiothek hinzufügen #include “MFRC522.h” // Anschlüsse definieren #define SDA 10 #define RST 9 // Schranke nach Betreten wieder schließen bool Status = false; // RFID-Empfänger benennen MFRC522 mfrc522(SDA, RST); // Bezeichnung des Motors Servo Motor; |
Der setup-Teil. Beachte die Kommentare:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void setup() { // Pin des Motors zuordnen Motor.attach(7); Serial.begin(9600); SPI.begin(); // Initialisierung des RFID-Empfängers mfrc522.PCD_Init(); // Motor in “geschlossen”-Position fahren Motor.write(0); } |
Der loop-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 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(F(“Karte entdeckt!”)); // Dezimal-Wert in String schreiben for (byte i = 0; i < mfrc522.uid.size; i++) { WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + ” “; } Serial.println(); // Kennung dezimal anzeigen Serial.println(“Wert in dezimal: ” + WertDEZ); // Leerzeichen am Ende entfernen WertDEZ.trim(); // WertDEZ mit korrektem Wert vergleichen -> Schranke öffnen if (WertDEZ.compareTo(“80 236 29 59”) == 0) { Serial.println(“korrekte Karte -> Schranke \u00f6ffnen”); Motor.write(90); Status = !Status; } if (WertDEZ.compareTo(“80 236 29 59”) == 0 && !Status) { Serial.println(“ korrekte Karte/Zutritt erfolgt -> Schranke schlie\u00dfen”); Motor.write(5); } // wenn die Karte falsch ist else if (WertDEZ.compareTo(“80 236 29 59”) != 0) { Motor.write(5); Serial.println(“falsche Karte -> Schranke geschlossen lassen”); Status = false; } delay(1000); } |
Verwandte Anleitungen:
Letzte Aktualisierung:






