Arduino - RFID/NFC

In diesem Tutorial lernen wir, wie man RFID/NFC mit Arduino verwendet. Das RFID/NFC-System besteht aus zwei Komponenten: dem Leser und dem Tag. Es gibt zwei beliebte RFID/NFC-Leser: RC522 und PN532 RFID/NFC-Leser. Dieses Tutorial konzentriert sich auf den RC522 RFID/NFC-Leser. Der PN532 RFID/NFC-Leser wird in einem kommenden Tutorial vorgestellt.

RC522 RFID/NFC-Lesegerät (auch als RFID-RC522-Modul bezeichnet) kann:

Unter den oben genannten Fähigkeiten ist das Auslesen der UID für Arduino am weitesten verbreitet. Dieses Tutorial konzentriert sich auf das Auslesen der UID eines RFID-/NFC-Tags. Das andere wird in den nächsten Tutorials behandelt.

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
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-RC522-Modul

Pinbelegung des RFID-RC522-Moduls

RFID-RC522 hat 8 Pins, einige davon sind gemeinsame Pins, die übrigen werden auf drei Kommunikationsmodi aufgeteilt: SPI, I2C, UART. Zu einem Zeitpunkt kann nur ein Kommunikationsmodus verwendet werden. Die Pins sind:

  • GND-Pin: muss mit GND (0 V) verbunden werden.
  • VCC-Pin: muss mit VCC (3,3 V) verbunden werden.
  • RST-Pin: ist ein Pin zum Zurücksetzen und Herunterfahren. Wenn dieser Pin auf LOW geht, wird eine vollständige Abschaltung aktiviert. Bei der steigenden Flanke wird das Modul zurückgesetzt.
  • IRQ-Pin: ist ein Interrupt-Pin, der den Mikrocontroller benachrichtigen kann, wenn sich ein RFID-Tag in seine Nähe kommt.
  • MISO/SCL/TX-Pin: fungiert als MISO, wenn die SPI-Schnittstelle aktiviert ist; fungiert als SCL, wenn die I2C-Schnittstelle aktiviert ist; und fungiert als TX, wenn die UART-Schnittstelle aktiviert ist.
  • MOSI-Pin: fungiert als MOSI, wenn die SPI-Schnittstelle aktiviert ist.
  • SCK-Pin: fungiert als SCK, wenn die SPI-Schnittstelle aktiviert ist.
  • SS/SDA/RX-Pin: fungiert als SS, wenn die SPI-Schnittstelle aktiviert ist; fungiert als SDA, wenn die I2C-Schnittstelle aktiviert ist; und fungiert als RX, wenn die UART-Schnittstelle aktiviert ist.
RFID-RC522 Pinbelegung

※ Notiz:

  • Die Anordnung der Pins kann je nach Hersteller variieren. Verwenden Sie immer die auf dem Modul aufgedruckten Beschriftungen. Das obige Bild zeigt den Pinout des Moduls vom Hersteller DIYables.
  • Verbinden Sie den VCC-Pin nicht mit dem 5-V-Pin. Dadurch wird Ihr Modul wahrscheinlich zerstört.
  • Die MFRC522-Bibliothek unterstützt nur den SPI-Modus. Daher verwendet dieses Tutorial nur die SPI-Kommunikation.

Wie RFID/NFC funktioniert

RFID/NFC umfasst zwei Komponenten: Lesegerät und Tag.

  • Das Lesegerät besteht aus einem Hochfrequenzmodul und einer Antenne, die ein hochfrequentes elektromagnetisches Feld erzeugt.
  • Der Tag ist in der Regel ein passives Gerät, das keine eigene Stromquelle benötigt. Der Tag enthält einen Mikrochip, der Informationen speichert und verarbeitet, und eine Antenne zum Empfangen und Senden eines Signals. Der Tag wird verwendet, um die Informationen zu speichern: UID (eindeutige Kennung) und Daten.
Arduino RFID-NFC-System

Um die Informationen auf einem Tag auszulesen, muss sich der Tag in unmittelbarer Nähe zum Lesegerät befinden (es ist kein direkter Sichtkontakt erforderlich). Die Lesevorgänge:

  • Das Lesegerät erzeugt ein elektromagnetisches Feld, das dazu führt, dass sich Elektronen durch die Antenne des Tags bewegen und daraufhin den Chip mit Energie versorgen.
  • Der Chip im Tag antwortet dann, indem er die angeforderten Informationen dem Lesegerät in Form eines weiteren Funksignals zurücksendet.
  • Das Lesegerät erfasst das Signal und wandelt es in Daten um.
  • Arduino liest die Daten vom Lesegerät.

Verdrahtungsdiagramm zwischen dem RFID-RC522-Modul und dem Arduino

Das RFID-RC522-Modul ist dafür ausgelegt, mit einer 3,3-V-Spannung betrieben zu werden, während die Ausgangspins eines Arduino ein 5-V-Niveau liefern. Also:

  • Um auf Nummer sicher zu gehen, muss die 5-V-Spannung von den Arduino-Pins auf 3,3 V reguliert werden, bevor sie mit dem RC522-Modul verbunden wird.
  • Um es einfach zu halten und zu Testzwecken, kann man die Arduino-Pins direkt mit dem RC522-Modul verbinden, aber dadurch könnte der Arduino in einigen Fällen nicht mehr ordnungsgemäß funktionieren.

Dieses Tutorial bietet zwei verschiedene Schaltpläne für beide Fälle:

  • Schaltplan zwischen RC522 und Arduino ohne Spannungsregler
Arduino RFID RC522 Schaltplan

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

  • Schaltplan zwischen RC522 und Arduino mit Spannungsregler
Arduino RFID RC522 mit einem Schaltplan zur Spannungsregelung

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

Wie im obigen Schaltplan gezeigt, werden ein Paar Widerstände von 1 kΩ und 2 kΩ verwendet, um 5 V auf 3,3 V zu regulieren. Es ist nicht erforderlich, die Spannung zwischen dem Arduino-Pin und dem MISO-Pin des RC522-Moduls anzupassen. Es ist jedoch erforderlich, die Spannung zwischen den Arduino-Pins und den SS-, SCK-, MOSI- und RST-Pins des RC522-Moduls zu regeln.

Verdrahtungstabelle für das RFID/NFC RC522-Modul und Arduino

RFID/NFC RC522 Arduino
SS → 10
SCK → 13
MOSI → 11
MISO → 12
IRQ(not connected)
GNDGND
RST → 5
VCC → 3.3V

Arduino RFID/NFC-Code

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/arduino-rfid-nfc */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 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); //Serial.print("RFID/NFC Tag Type: "); //Serial.println(rfid.PICC_GetTypeName(piccType)); // print NUID in Serial Monitor in the hex format Serial.print("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

  • Gehen Sie zum Symbol Bibliotheken-Icon in der linken Seitenleiste der Arduino IDE.
  • Suchen Sie “MFRC522”, und finden Sie anschließend die Bibliothek von GithubCommunity.
  • Klicken Sie auf die Schaltfläche Installieren, um die MFRC522-Bibliothek zu installieren.
Arduino MFRC522-Bibliothek
  • Kopiere den obigen Code und öffne ihn in der Arduino IDE
  • Klicke auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf den Arduino hochzuladen
  • Öffne den Serial Monitor
  • Tippe mehrere RFID/NFC-Tags auf das RFID-RC522-Modul
  • Zeige die UID im Serial Monitor an
COM6
Send
Tap RFID/NFC tag on reader RFID/NFC tag Type: MIFARE 1KB UID: 3A C9 6A CB RFID/NFC tag Type: MIFARE Ultralight or Ultralight C UID: 04 64 34 5A 1E 4E 80
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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!