Arduino Nano - RFID - Relais

Dieses Tutorial zeigt Ihnen, wie Sie ein Arduino Nano und ein RFID/NFC RC522-Modul verwenden, um ein Relais zu steuern. Sie können dieses Tutorial weiter ausbauen, indem Sie das Relais verwenden, um Motoren, Aktuatoren, ein Türschloss, eine Glühbirne und mehr zu steuern.

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Relais
10×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das RFID/NFC RC522-Modul und das Relais

Wenn Sie mit dem RFID/NFC RC522-Modul und dem Relais (Pinbelegung, Funktionsweise, Programmierung ...) nicht vertraut sind, finden Sie weitere Informationen in den folgenden Tutorials:

Arduino Nano Arduino RFID-Relaiskomponente

Wie es funktioniert

  • Der RFID/NFC-Leser liest die UID des Tags, wenn der Benutzer es tippt.
  • Der Arduino Nano erhält dann die UID vom Lesegerät.
  • Er vergleicht diese UID mit den UIDs, die im Arduino Nano-Code vordefiniert wurden.
  • Wenn die UID mit einer der vordefinierten UIDs übereinstimmt, aktiviert der Arduino Nano das Relais.

Verdrahtungsdiagramm

Arduino Nano RFID RC522 Relais-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Um die Verbindung zu vereinfachen, sind die Pins des RC522-Moduls direkt mit den Pins des Arduino verbunden. Allerdings kann dies in bestimmten Fällen dazu führen, dass der Arduino fehlerhaft funktioniert, da seine Ausgangspins 5V erzeugen, während die Pins des RC522-Moduls normal bei 3,3V arbeiten. Daher ist es ratsam, die Spannung zwischen den Pins des Arduino und dem RC522-Modul zu regeln. Für weitere Details verweisen Sie bitte auf das Arduino Nano - RFID RC522 Tutorial. Die untenstehende Grafik zeigt, wie man 5 V mithilfe von Widerständen auf 3,3 V reguliert:

Arduino Nano RFID RC522 mit spannungsregulierter Verdrahtung

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.

※ Notiz:

Die Anordnung der Pins kann je nach Hersteller variieren. Beziehen Sie sich IMMER auf die auf dem Modul aufgedruckten Beschriftungen. Das oben gezeigte Bild zeigt die Pinbelegung der Module des Herstellers DIYables.

Arduino Nano Code - einzelner RFID/NFC-Tag

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano/arduino-nano-rfid-relay */ #include <SPI.h> #include <MFRC522.h> #define RC522_SS_PIN 10 // The Arduino Nano pin connected to RC522's SS pin #define RC522_RST_PIN 5 // The Arduino Nano pin connected to RC522's RST pin #define RELAY_PIN A5 // The Arduino Nano pin connected to relay MFRC522 rfid(RC522_SS_PIN, RC522_RST_PIN); byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay Serial.println("Tap RFID/NFC Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); if (rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] ) { Serial.println("Authorized Tag"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Schnelle Schritte

Um die UID eines RFID-/NFC-Tags zu ermitteln, besteht der erste Schritt darin, Code auf den Arduino Nano hochzuladen und den Seriellen Monitor zu öffnen. Danach legen Sie das Tag auf das RFID-RC522-Modul und zeigen Sie die UID im Seriellen Monitor an.

COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Nach dem Erhalt der UID:

  • Ändere Zeile 18 des Codes, um die UID widerzuspiegeln; zum Beispiel ändere byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; zu byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Lade den aktualisierten Code auf den Arduino Nano hoch
  • Platziere einen RFID/NFC-Tag auf dem RFID-RC522-Modul
  • Überprüfe die Ausgabe im Serial Monitor
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Legen Sie einen RFID-/NFC-Tag auf das RFID-RC522-Modul und beobachten Sie die Ausgabe im seriellen Monitor.
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

  • Um das Testen einfach zu gestalten, ist die Aktivzeit auf zwei Sekunden festgelegt; sie sollte jedoch für den praktischen Einsatz bzw. die Demonstration erhöht werden.
  • Die Installation der MFRC522-Bibliothek ist notwendig. Weitere Informationen finden Sie unter dem Arduino Nano - RFID/NFC RC522 Tutorial.

Arduino Nano-Code - Mehrere RFID/NFC-Tags

Es ist möglich, das Relais durch mehrere RFID-/NFC-Tags zu aktivieren. Hier dienen zwei Tags als Veranschaulichung.

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano/arduino-nano-rfid-relay */ #include <SPI.h> #include <MFRC522.h> #define RC522_SS_PIN 10 // The Arduino Nano pin connected to RC522's SS pin #define RC522_RST_PIN 5 // The Arduino Nano pin connected to RC522's RST pin #define RELAY_PIN A5 // The Arduino Nano pin connected to relay MFRC522 rfid(RC522_SS_PIN, RC522_RST_PIN); byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay Serial.println("Tap RFID/NFC Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); if (rfid.uid.uidByte[0] == authorizedUID1[0] && rfid.uid.uidByte[1] == authorizedUID1[1] && rfid.uid.uidByte[2] == authorizedUID1[2] && rfid.uid.uidByte[3] == authorizedUID1[3] ) { Serial.println("Authorized Tag 1"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else if (rfid.uid.uidByte[0] == authorizedUID2[0] && rfid.uid.uidByte[1] == authorizedUID2[1] && rfid.uid.uidByte[2] == authorizedUID2[2] && rfid.uid.uidByte[3] == authorizedUID2[3] ) { Serial.println("Authorized Tag 2"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Wiederhole die gleichen Schritte wie zuvor erwähnt, und lege anschließend jedes Tag auf das RFID-RC522-Modul. Die Ausgabe im seriellen Monitor sollte wie folgt aussehen:

COM6
Send
Tap RFID/NFC tag on reader Authorized Tag 2 Authorized Tag 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sie können den obigen Code erweitern, um drei, vier oder mehr Tags einzuschließen.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!