#RFIDRC522
Explore tagged Tumblr posts
draegerit · 2 years ago
Text
ESP32 mit RFID-RC522 (MFRC522) Modul
Tumblr media
In diesem Beitrag möchte ich dir zeigen, wie du ein RFID Modul vom Typ MFRC522 am ESP32 per SPI programmierst, möchte ich dir hier zeigen.
Tumblr media
Programmieren & Anschluss eines RFID-Moduls am ESP32 Das RFID Modul habe ich dir bereits für die Mikrocontroller der Arduino-Familie in folgenden Beiträgen gezeigt: - Arduino Lektion 20 – Teil 1: RFID RC522 – Kartenleser - RFID Kartenleser RC522 am Arduino betreiben (Update 29.07.2021) - Arduino Projekt: PIR & RFID Alarmanlage
Benötigte Ressourcen für dieses Projekt
Wenn du das nachfolgende Beispiel nachbauen möchtest, dann benötigst du: - einen ESP32 zbsp. ESP32-WROOM-32*, - ein Micro-USB Datenkabel, - ein RFID Modul Typ MFRC522, - ein paar Breadboardkabel, - ein 170 Pin Breadboard * Leider hat nicht jeder ESP32 alle Pins nach außen geführt und somit empfehle ich dir den ESP32-WROOM-32 von - LILYGO® TTGO T-Call V1.4 ESP32 Wireless Module SIM Antenna SIM Card SIM800L Module - ESP32-WROOM-32, DevKit C4 WROOM32 Für die optische Signalisierung einer gültigen RFID Karte nutze ich zwei 5 mm LEDs (rot & grün). Diese beiden LEDs benötigen noch zusätzlich einen 220 Ohm Vorwiderstand und natürlich Breadboardkabel.
ESP32 auf einem Breadboard
Normalerweise verwende ich für die Schaltungen immer ein Breadboard (400 Pin oder 720 Pin), jedoch ist der ESP32 für das "normale" 400 Pin Breadboard zu breit und man kann lediglich nur eine Pinleiste mit Breadboardkabel abgreifen. Aus dem Conrad Adventskalender sowie einem Franzis Bausatz habe ich zwei 270 Pin Breadboards welche zusammengesteckt werden können und der ESP32 sehr gut darauf passt.
Tumblr media
ESP32 auf 400 Pin Breadboard
Tumblr media
ESP32 auf 2 gesteckte Breadboards Alternativ kannst du auch mit Breadboardkabel (männlich - weiblich) direkt an die Pins des ESPs gehen.
RFID-RC522 Modul als Set
Das in diesem Beitrag verwendete RFID-RC522 Modul erhältst du als Set mit einer Karte sowie einem Schlüsselanhänger.
Tumblr media
RFID-RC522 Modul mit Karte & Schlüsselanhänger
Aufbau der Schaltung
Das RFID Modul wird per SPI angeschlossen und die Schaltung sieht wie folgt aus:
Tumblr media
Schaltung - RFID Modul am ESP32 (inkl. LEDs) Wie bereits erwähnt habe ich den ESP32 auf zwei 270 Pin Breadboards gesteckt und kann die LEDs sowie das RFID Modul auf den freien Platz des Breadboard stecken.
Tumblr media
Aufbau der Schaltung "ESP32 mit RFID-Modul Typ MFRC522 & LEDs"
Programmieren
Für die Programmierung des RFID Moduls verwende ich die Bibliothek "MFRC522 by GithubCommunity" welche du im Bibliotheksverwalter der Arduino IDE herunterladen kannst. Im Bibliotheksverwalter suchst du zunächst nach "rc522" und betätigst dann die Schaltfläche "Installieren" im Suchergebnis "MFRC522 by GithubCommunity".
Tumblr media
Wenn die Installation abgeschlossen wurde, kann das Fenster über die Schaltfläche "Schließen" geschlossen werden und mit der Programmierung begonnen werden. In den folgenden Schritten werde ich dir zeigen, wie du ein kleines Programm erstellst, welches eine RFID-ID zulässt und eine nicht.
Schritt 1 - auslesen der RFID Karten
Damit wir eine RFID Karte einen Zugang gewähren können, müssen wir die IDs zunächst auslesen. Dazu können wir entweder das Beispielprogramm "Beispiele" > "MFRC522" > "DumpInfo" oder das nachfolgende kleine Programm. //einbinden der Bibliotheken für das //ansteuern des MFRC522 Moduls #include #include //definieren der Pins RST & SDA für den ESP32 #define RST_PIN 22 #define SS_PIN 21 //erzeugen einer Objektinstanz MFRC522 mfrc522(SS_PIN, RST_PIN); //Variable zum speichern der bereits gelesenen RFID-ID String lastRfid = ""; void setup() { //beginn der seriellen Kommunikation mit 115200 Baud Serial.begin(115200); //eine kleine Pause von 50ms. delay(50); //begin der SPI Kommunikation SPI.begin(); //initialisieren der Kommunikation mit dem RFID Modul mfrc522.PCD_Init(); } void loop() { //Wenn keine neue Karte vorgehalten wurde oder die serielle Kommunikation //nicht gegeben ist, dann... if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { return; } String newRfidId = ""; for (byte i = 0; i < mfrc522.uid.size; i++) { // !! Achtung es wird ein Leerzeichen vor der ID gesetzt !! newRfidId.concat(mfrc522.uid.uidByte < 0x10 ? " 0" : " "); newRfidId.concat(String(mfrc522.uid.uidByte, HEX)); } //alle Buchstaben in Großbuchstaben umwandeln newRfidId.toUpperCase(); //Wenn die neue gelesene RFID-ID ungleich der bereits zuvor gelesenen ist, //dann soll diese auf der seriellen Schnittstelle ausgegeben werden. if (!newRfidId.equals(lastRfid)) { //überschreiben der alten ID mit der neuen lastRfid = newRfidId; Serial.print(" gelesene RFID-ID :"); Serial.println(newRfidId); Serial.println(); } } Wenn man nun eine RFID-Karte vor das RFID-Modul hält, dann wird diese ID auf der seriellen Schnittstelle ausgegeben. Da im Programm die letzte, erfolgreich, gelesene ID zwischengespeichert wird, erfolgt bei erneutem Vorlegen der Karte keine neue Ausgabe.
Tumblr media
Ausgabe des Programmes zum lesen einer RFID-ID am ESP32
Schritt 2 - erzeugen eines Arrays mit zulässigen RFID-IDs
Wie erwähnt liegen dem Set des RFID Moduls bereits zwei RFID Karten, bei welche wir im ersten Schritt ausgelesen haben. //Anzahl der zulässigen RFID-IDs im Array const int NUM_RFIDS = 1; //Array mit RFID-IDs welche zulässig sind String rfids = {"39 42 FF 97"}; void loop() { ... bool zugangOk = false; for (int i = 0; i < NUM_RFIDS; i++) { if (rfids.equals(newRfidId)) { zugangOk = true; break; } }
Schritt 3 - LEDs zum optischen Signalisieren einer zulässigen RFID-ID
Im nächsten Schritt wollen wir nun die rote LED blinken lassen, wenn der Zugang nicht gewährt wird, bzw. die RFID-ID nicht im Array vorhanden ist und die grüne LED soll blinken, wenn der Zugang gewährt werden soll. Des Weiteren soll auf der seriellen Schnittstelle eine entsprechende Ausgabe erfolgen. //einbinden der Bibliotheken für das //ansteuern des MFRC522 Moduls #include #include //definieren der Pins RST & SDA für den ESP32 #define RST_PIN 22 #define SS_PIN 21 #define ledRot 32 #define ledGruen 33 //erzeugen einer Objektinstanz MFRC522 mfrc522(SS_PIN, RST_PIN); //Variable zum speichern der bereits gelesenen RFID-ID String lastRfid = ""; //Anzahl der zulässigen RFID-IDs im Array const int NUM_RFIDS = 1; //Array mit RFID-IDs welche zulässig sind String rfids = {" 39 42 FF 97"}; void setup() { //beginn der seriellen Kommunikation mit 115200 Baud Serial.begin(115200); //eine kleine Pause von 50ms. delay(50); pinMode(ledRot, OUTPUT); pinMode(ledGruen, OUTPUT); //begin der SPI Kommunikation SPI.begin(); //initialisieren der Kommunikation mit dem RFID Modul mfrc522.PCD_Init(); } void loop() { //Wenn keine neue Karte vorgehalten wurde oder die serielle Kommunikation //nicht gegeben ist, dann... if ( !mfrc522.PICC_IsNewCardPresent()) { //Serial.println("!PICC_IsNewCardPresent"); return; } if (!mfrc522.PICC_ReadCardSerial()) { //Serial.println("!PICC_ReadCardSerial"); return; } String newRfidId = ""; for (byte i = 0; i < mfrc522.uid.size; i++) { newRfidId.concat(mfrc522.uid.uidByte < 0x10 ? " 0" : " "); newRfidId.concat(String(mfrc522.uid.uidByte, HEX)); } //alle Buchstaben in Großbuchstaben umwandeln newRfidId.toUpperCase(); //Wenn die neue gelesene RFID-ID ungleich der bereits zuvor gelesenen ist, //dann soll diese auf der seriellen Schnittstelle ausgegeben werden. if (!newRfidId.equals(lastRfid)) { //überschreiben der alten ID mit der neuen lastRfid = newRfidId; } bool zugangOk = false; //prüfen ob die gelesene RFID-ID im Array mit bereits gespeicherten IDs vorhanden ist for (int i = 0; i < NUM_RFIDS; i++) { //wenn die ID an der Stelle "i" im Array "rfids" mit dem gelesenen übereinstimmt, dann if (rfids.equals(newRfidId)) { zugangOk = true; //Schleife verlassen break; } } //Wenn die Variable "zugangOk" auf True ist, dann... if (zugangOk) { blinkLed(ledGruen); Serial.println("RFID-ID OK!, Zugang wird gewährt"); } else { //Wenn nicht dann... blinkLed(ledRot); Serial.println("RFID-ID nicht OK!, Zugang wird nicht gewährt"); } Serial.println(); } //Blinken einer LED am Pin "pin" void blinkLed(int pin) { //Schleife von 0 bis 5 for (int a = 0; a < 5; a++) { //LED aktivieren digitalWrite(pin, HIGH); //eine Pause von 125 ms. delay(125); //LED deaktivieren digitalWrite(pin, LOW); //eine Pause von 125 ms. delay(125); } }
Download des fertigen Programmes
Hier nun ein Link zum Herunterladen des fertigen Programmes. Read the full article
0 notes
thwl76 · 8 years ago
Video
instagram
https://youtu.be/qYIKuc29WI8 #arduino #arduinouno #rfid #rfidrc522 #rfidtag #rfidcard #token #rfidsensor #sensor #led #ledlights #sound #tone #buzzer #wires #circuit #circuitry #electronics
1 note · View note
newstuffsstore · 8 years ago
Photo
Tumblr media
#NFC #RFIDRC522 #RF #IC #Card #RFID #Reader #Module #W, #S50 #Card #For #Arduino #Arduino, #, #SCM, #Supplies, #Electrical, #, #Tools, #Home, #Transmitters, #, #Receivers Available on Store USA EUROPE AUSTRALIA http://ift.tt/2kYvxBf http://ift.tt/2k1yJOS
0 notes
thwl76 · 8 years ago
Video
instagram
https://youtu.be/55IRm_JIUGU #arduino #arduinouno #rgb #rgbled #buzzer #alert #dualkey #authorization #securitysystem #security #led #ledlight #ledlights #circuit #circuitry #electronics #rfid #rfidtag #rfidcard #rfidrc522
0 notes
newstuffsstore · 8 years ago
Photo
Tumblr media
#NFC #RFIDRC522 #RF #IC #Card #RFID #Reader #Module #W, #S50 #Card #For #Arduino #Arduino, #, #SCM, #Supplies, #Electrical, #, #Tools, #Home, #Transmitters, #, #Receivers Available on Store USA EUROPE AUSTRALIA http://ift.tt/2kYvxBf http://ift.tt/2k1yJOS
0 notes