Dieses Tutorial zeigt Ihnen, wie Sie mit Hilfe des ESP8266 ein RFID/NFC-Tag verwenden, um ein Relais auszulösen. Sie können dieses Tutorial weiter ausbauen, indem Sie das Relais verwenden, um Motoren, Aktuatoren und mehr zu steuern.
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 RFID/NFC RC522-Modul und Relais
Wenn Sie mit dem RFID/NFC RC522-Modul und Relais (einschließlich Pinbelegung, Funktionalität und Programmierung) nicht vertraut sind, dann sehen Sie sich die folgenden Tutorials an:
Die Reihenfolge der Pins kann je nach Hersteller variieren. VERWENDEN Sie IMMER die auf dem Modul aufgedruckten Beschriftungen. Das oben gezeigte Bild zeigt den Pinout der Module des Herstellers DIYables.
ESP8266-Code – Einzelner RFID/NFC-Tag
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-rfid-relay*/#include <SPI.h>#include <MFRC522.h>#define SS_PIN D8 // The ESP8266 pin D8#define RST_PIN D2 // The ESP8266 pin D2#define RELAY_PIN D1 // The ESP8266 pin connects to relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the relaySerial.println("Tap an RFID/NFC tag on the RFID-RC522 reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::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 secondsdelay(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 mit dem ESP8266 in der Arduino-IDE zu beginnen, folgen Sie diesen Schritten:
Schließen Sie das ESP8266-Board mit einem USB-Kabel an Ihren Computer an.
Öffnen Sie die Arduino IDE auf Ihrem Computer.
Wählen Sie das richtige ESP8266-Board aus, z. B. NodeMCU 1.0 (ESP-12E-Modul), und den jeweiligen COM-Port.
Um die UID eines RFID-/NFC-Tags zu ermitteln, besteht der erste Schritt darin, den Code zu kopieren und ihn mit der Arduino-IDE zu öffnen. Danach klicken Sie auf den Hochladen-Button in der Arduino-IDE, um den Code auf den ESP8266 zu laden. Öffnen Sie dann den seriellen Monitor und berühren Sie das RFID-/NFC-Tag am RFID-RC522-Modul. Schließlich wird die UID im seriellen Monitor angezeigt.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Unauthorized Tag with UID: 3A C9 6A CB
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2
Nach Erhalt der UID:
Ersetze den Wert von byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; durch die UID in Zeile 18 des Codes. Zum Beispiel byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
Lade den Code erneut auf den ESP8266 hoch.
Tippe ein RFID/NFC-Tag auf das RFID-RC522-Modul.
Schau dir die Ausgabe im Serial Monitor an.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Authorized Tag
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2
Berühren Sie ein anderes RFID/NFC-Tag am RFID-RC522-Modul.
Überprüfen Sie die Ausgabe im Serial Monitor.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Authorized Tag
Unauthorized Tag with UID: BD 1E 1D 00
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2
※ Notiz:
Zur Erleichterung der Tests ist die aktive Zeit auf zwei Sekunden eingestellt; sie sollte jedoch für den praktischen Einsatz bzw. zur Demonstration erhöht werden.
Wir können das Relais so konfigurieren, dass es durch mehrere RFID-/NFC-Tags aktiviert wird. Als Beispiel verwendet der untenstehende Code zwei Tags.
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-rfid-relay*/#include <SPI.h>#include <MFRC522.h>#define SS_PIN D8 // The ESP8266 pin D8#define RST_PIN D2 // The ESP8266 pin D2#define RELAY_PIN D1 // The ESP8266 pin connects to relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB};byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the relaySerial.println("Tap an RFID/NFC tag on the RFID-RC522 reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::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 secondsdelay(2000);digitalWrite(RELAY_PIN, LOW); // deactivate the relay }elseif (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 secondsdelay(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 dieselben Schritte wie zuvor und lege danach jeden RFID-Tag auf das RFID-RC522-Modul. Die Ausgabe im Serial Monitor wird dem Folgenden ähneln:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Authorized Tag 2
Authorized Tag 1
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2
Sie können den oben genannten Code für drei, vier oder mehr Tags erweitern.
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.
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!