In diesem Beitrag möchte ich dir das kleine Mini RFID Shield vom Typ RC522 vorstellen und zeigen, wie du dieses am Arduino UNO programmierst.
Wenn du meinen Blog bereits länger verfolgst, dann kennst du bestimmt schon die Beiträge zum RFID Shield vom Typ RC522:
- RFID Kartenleser RC522 am Arduino betreiben (Update 29.07.2021)
- ESP32 mit RFID-RC522 (MFRC522) Modul
In diesem Beitrag möchte ich jedoch speziell auf die kleine Version eingehen und auch die Unterschiede zum großen RFID Modul aufzeigen (soweit es welche gibt).
Bezug
Das kleine RFID Shield habe ich über aliexpress.com für knapp 5 € zzgl. Versandkosten erworben. Leider habe ich dieses bisher nicht auf ebay.de oder anderen Plattformen gefunden.
Lieferumfang
Zum Lieferumfang des Shields gehört:
- zwei RFID Karten im Scheckkartenformat,
- ein RFID Anhänger,
- das RFID Modul, sowie
- zwei Stiftleisten (eine gerade, eine 90° abgewinkelt)
Anschluss an den Arduino UNO
Das RFID Modul wird per SPI Pins an den Arduino UNO angeschlossen.
Mini RFID Shield RC522 | Arduino UNO |
---|---|
SDA | digitaler Pin D10 |
SCK | digitaler Pin D19 |
MOSI | digitaler Pin D17 |
MISO | digitaler Pin D18 |
IRQ | – unbelegt – |
GND | GND |
RST | Reset |
3v3 | 3.3V |
Programmieren des Shields in der Arduino IDE
Kommen wir nun dazu, dieses Shield in der Arduino IDE zu programmieren. Damit wir dieses Shield komfortable ansprechen / steuern können, verwenden wir die Bibliothek “MFRC522 by GithubCommunity”
Wie man eine Bibliothek in der Arduino IDE installiert, habe ich dir im gleichnamigen Beitrag Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.
Der nachfolgende Sketch zeigt dir auf dem seriellen Monitor der Arduino IDE die RFIDs an.
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); } void loop() { if ( !rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) { return; } String nuid = readHex(rfid.uid.uidByte, rfid.uid.size); Serial.println(nuid); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } String readHex(byte *buffer, byte bufferSize) { String result = ""; for (byte i = 0; i < bufferSize; i++) { String* hex[] = {}; result = result + String(buffer[i] < 0x10 ? " 0" : ""); result = result + String(buffer[i], HEX); } return result; }
Vergleich mit dem großen RFID Modul
Die beiden RFID Module sind von der Pinbelegung gleich und auch ist die zum Programmieren benötigte Bibliothek dieselbe. D.h. wenn du ein kleines RFID Modul benötigst, kannst du ohne Probleme auf das hier vorgestellte Modul zurückgreifen.