RFID-Modul RC522 Arduino anschließen & verwenden

RFID Arduino (Radio Frequency IDentification) ist eine berührungslose Identifikation eines Transponders (Tag) mittels eines Funkkommunikationskanals. Das System ist in vielen Branchen weit verbreitet: für die Zugangskontrolle von Ausweisen, die Verfolgung von Waren in logistischen Lieferketten, die Erstellung von Belohnungssystemen usw. Schauen wir uns an, wie man ein RFID-RC522-Lesegerät an ein Arduino-Board anschließt.




Bestandteile:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • MFRC-522 Card Reader
  • LEDs und Widerstände
  • Breadboard
  • Dupont-Kabel
  • Bibliothek MFRC522.h und SPI.h

Das RFID-System für Arduino-Boards besteht aus zwei Elementen: einem Tag in Form einer Plastikkarte oder eines Schlüsselanhängers und einem Tag-Lesegerät. Die Identifizierung basiert auf einer eindeutigen UID (96-Bit-EPC-96-Standard), die jeder RFID-Tag besitzt. Das Arduino-Modul RC522 sendet elektromagnetische Wellen aus, und die RFID-Tags senden ihre Identifikationsnummer (UID) und gespeicherte Daten aus dem Speicher zurück.

RFID-Modul RC522 Arduino pinout, datasheet

RFID-Modul RC522 Arduino pinout, datasheet

Merkmale des RFID-Modul RC522 (datasheet)

  • Versorgungsspannung: 3,3 V
  • Frequenz: 13,56 MHz
  • Optimaler Abstand: 10 mm
  • Schnittstelle: SPI
  • Protokoll: Mifare
  • Abmessungen: 61 x 40 mm

RFID-Etiketten können aktiv oder passiv sein (ohne Stromversorgung, d. h. sie sind autark) und arbeiten mit unterschiedlichen Frequenzen: LF (125-134 kHz), HF (13,56 MHz), UHF (860-960 MHz). Die Module, die die Informationen auf den Etiketten lesen und schreiben, werden als Lesegeräte bezeichnet. RC522-Module, die auf dem MFRC522-Chip basieren, verwenden elektromagnetische Felder, um Daten an die Karte zu übertragen.

Wie man einen RFID-Modul RC522 an Arduino anschließt

Wie man einen RFID-Modul RC522 an Arduino anschließt

MFRC522 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 3,3V 3,3V 3,3V
MOSI 11 11 51
MISO 12 12 50
SCK 13 13 52
SDA 10 10 10
RST 9 9 9

Das Modul wird über die SPI mit dem Arduino verbunden. Der SPI-Bus auf den Arduino Uno und Mega Boards ist auf verschiedenen Ports. Sie müssen die SPI-Bibliothek MFRC522 herunterladen und das Archiv in das Arduino-Bibliotheksverzeichnis entpacken. Nachdem Sie das RC522-Modul angeschlossen haben, laden Sie den Code herunter, um den Tag-Typ und die UID (eindeutige Schlüsselanhänger- oder Karten-ID) zu ermitteln.

Programm für RFID am Arduino auslesen mit MFRC-522




#include "SPI.h"
#include "MFRC522.h"

#define RST_PIN  9 // RES pin
#define SS_PIN  10 // SDA (SS) pin

MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  delay(4);
  mfrc522.PCD_DumpVersionToSerial();
  Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}

void loop() {
  // den Zyklus zurücksetzen, wenn sich keine Karte im Lesegerät befindet
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
     return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {
     return;
  }

  // zeigt die UID auf dem seriellen Port an
  mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
  1. Der serielle Anschluss zeigt die UID (eindeutige Kennung) des Etiketts an, wenn Sie die etikettierte Karte oder den Schlüsselanhänger an den Kartenleser halten;
  2. SPI.h muss ebenfalls installiert sein, damit der Sketch funktioniert.

Zugangskontrolle mit Arduino RFID-Modul RC522

Zugangskontrolle mit Arduino RFID-Modul RC522

Schauen wir uns ein Beispiel an, das für ein Zugangssystem (z. B. Türöffner) verwendet werden kann. Die Software scannt die eindeutige Tag-ID, wenn die Karten-UID mit dem in der Software definierten Wert (cardID) übereinstimmt, wird der Zugang gewährt (grüne LED leuchtet). Wird ein unbekannter RFID-Tag an den RC522-Kartenleser gebracht, wird der Zugang verweigert (die rote LED auf dem Breadboard leuchtet).

Programm für Zugangskontrolle mit RFID-Modul RC522

#include "SPI.h"
#include "MFRC522.h"

#define RST_PIN 9 // RES pin
#define SS_PIN  10 // SDA (SS) pin

byte readCard[4];
String cardID = "20C3935E"; // durch die ID Ihres Tags ersetzen
String tagID = "";

MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop() {
  while (getID()) {
    if (tagID == cardID) {
      Serial.println("Access Granted!");
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
    }
    else {
      Serial.println("Access Denied!");
    }
    Serial.print("ID: ");
    Serial.println(tagID);
    delay(2000);
    digitalWrite(6, LOW);
  }
}

boolean getID() {
  if (! mfrc522.PICC_IsNewCardPresent()) {
    return false;
  }

  if (! mfrc522.PICC_ReadCardSerial()) {
    return false;
  }

  tagID = "";
  
  for (uint8_t i = 0; i < 4; i++) {
    tagID.concat(String(mfrc522.uid.uidByte[i], HEX));
  }

  tagID.toUpperCase();
  mfrc522.PICC_HaltA();
  return true;
}
  1. Statt einer grünen LED können Sie ein SSR-Statikrelais an den Arduino anschließen und damit z. B. eine Türklingel steuern;
  2. Der cardID-Wert im Sketch sollte auf den Wert eingestellt werden, den Sie im ersten Programm aus dem Etikett erhalten haben.

Schlussfolgerung. Das RC522-Modul wurde entwickelt, um ein elektromagnetisches Feld zu erzeugen, das zur Kommunikation mit RFID-Tags (Schlüsseln) verwendet wird. Das Lesegerät kann mit dem Arduino mit einer maximalen Datenübertragungsrate von 10 Mbit pro Sekunde über die SPI-Schnittstelle oder das I2C-Protokoll (SDA, SCL) kommunizieren, wodurch bis zu 127 Geräte gleichzeitig angeschlossen werden können.

5/5 - (2 votes)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert