ESP8266 - RFID - Servomotor

Dieses Tutorial zeigt dir, wie man einen ESP8266 und ein RC522-Modul (RFID/NFC) verwendet, um einen Servo-Motor zu steuern. Der Prozess funktioniert wie folgt:

Dies kann verwendet werden, um einen Schrank, eine Schublade oder eine Tür zu sichern oder das Öffnen und Schließen des Futterautomaten zu steuern.

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Servo-Motor
1×5V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

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 RFID/NFC RC522-Modul und Servomotor

Wenn Sie mit dem RFID/NFC RC522-Modul und dem Servomotor (einschließlich Pinbelegung, Funktionsweise und Programmierung) nicht vertraut sind, werfen Sie einen Blick auf die folgenden Tutorials:

ESP8266 NodeMCU Arduino RFID-Servomotor-Komponente

Wie es funktioniert

  • Einige UIDs von RFID/NFC-Tags sind bereits in den ESP8266-Code programmiert.
  • Wenn ein Benutzer ein RFID/NFC-Tag an den RFID/NFC-Leser hält, liest der Leser die UID vom Tag aus.
  • Der ESP8266 empfängt dann die UID vom Leser.
  • Er vergleicht die gelesene UID mit den vordefinierten UIDs, die im Code festgelegt wurden.
  • Wenn die UID mit einer der vordefinierten UIDs übereinstimmt, wird der ESP8266 den Servomotor auf 90° steuern.
  • Wenn der Tag erneut berührt wird, steuert der ESP8266 den Servomotor wieder auf 0°.
  • Dieser Vorgang wird unendlich oft wiederholt.

Verdrahtungsdiagramm

ESP8266 NodeMCU RFID RC522 Servomotor-Schaltplan

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

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Aus Gründen der Einfachheit wird das oben gezeigte Verdrahtungsdiagramm zu Test- oder Lernzwecken sowie für einen Servomotor mit kleinem Drehmoment verwendet. Tatsächlich empfehlen wir dringend die Verwendung einer externen Stromversorgung für den Servomotor. Das unten gezeigte Verdrahtungsdiagramm zeigt, wie der Servomotor an eine externe Stromquelle angeschlossen wird.

ESP8266 NodeMCU-Servomotor: Diagramm der externen Stromversorgung

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

※ Notiz:

Die Anordnung der Pins kann je nach Hersteller variieren. VERWENDEN SIE IMMER die auf dem Modul aufgedruckten Beschriftungen. Das obige Bild zeigt die Pinbelegung der Module des Herstellers DIYables.

Verdrahtungstabelle des RFID-/NFC-RC522-Moduls

RFID/NFC RC522 ESP8266
SS → GPIO 5 (SPI CS/SS)
SCK → GPIO 8 (SPI CLK)
MOSI → GPIO 7 (SPI MOSI)
MISO → GPIO 6 (SPI MISO)
IRQ(not connected)
GNDGND
RST → TO_BE_UPDATED
VCC → 3.3V

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-servo-motor */ #include <SPI.h> #include <MFRC522.h> #include <Servo.h> #define SS_PIN D8 // The ESP8266 pin D8 #define RST_PIN D2 // The ESP8266 pin D2 #define SERVO_PIN D1 // The ESP8266 pin connects to servo motor MFRC522 rfid(SS_PIN, RST_PIN); Servo servo; byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 servo.attach(SERVO_PIN); servo.write(angle); // rotate servo motor to 0° 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); 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"); // change angle of servo motor if (angle == 0) angle = 90; else //if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); Serial.print("Rotate Servo Motor to "); Serial.print(angle); Serial.println("°"); } 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, befolgen Sie diese Schritte:

  • Schauen Sie sich das Tutorial zur Einrichtung der ESP8266-Umgebung in der Arduino IDE an, falls dies Ihre erste Verwendung des ESP8266 ist.
  • Verdrahten Sie die Bauteile gemäß dem Diagramm.
  • Schließen Sie das ESP8266-Board über ein 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 seinen jeweiligen COM-Port.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Suchen Sie nach „MFRC522“ und finden Sie die Bibliothek von GithubCommunity.
  • Drücken Sie die Installieren-Schaltfläche, um die MFRC522-Bibliothek zu installieren.
MFRC522-Bibliothek für ESP8266 NodeMCU

Um die UID eines RFID-/NFC-Tags zu finden, besteht der erste Schritt darin, Code auf den ESP8266 mit der Arduino-IDE hochzuladen und anschließend auf die Hochladen-Schaltfläche zu klicken. Danach öffnen Sie den Serial Monitor und legen Sie den Tag auf das RFID-RC522-Modul. Die UID wird im Serial Monitor angezeigt.

COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sobald Sie Ihre UID haben:

  • Ersetzen Sie die UID in Zeile 20 des Codes durch Ihre eigene. Zum Beispiel ändern Sie byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; zu byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Laden Sie den Code auf Ihr ESP8266-Board hoch
  • Halten Sie einen RFID/NFC-Tag an das RFID-RC522-Modul
  • Der Servomotor sollte sich auf 90° drehen
  • Überprüfen Sie die Ausgabe im Serial Monitor
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Tippen Sie erneut auf den RFID/NFC-Tag am RFID-RC522-Modul.
  • Der Servomotor dreht sich auf 0°. Sie können dies im seriellen Monitor beobachten.
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90° Authorized Tag Rotate Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Tippe einen RFID/NFC-Tag auf das RFID-RC522-Modul.
  • Prüfe den seriellen Monitor auf die Ausgabe.
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90° Authorized Tag Rotate Servo Motor to 0° Unauthorized Tag with UID: BD 1E 1D 00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP8266-Code - Mehrere RFID/NFC-Tags

Wir können mehrere RFID-/NFC-Tags verwenden, um einen Servomotor zu steuern. 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-servo-motor */ #include <SPI.h> #include <MFRC522.h> #include <Servo.h> #define SS_PIN D8 // The ESP8266 pin D8 #define RST_PIN D2 // The ESP8266 pin D2 #define SERVO_PIN D1 // The ESP8266 pin connects to servo motor MFRC522 rfid(SS_PIN, RST_PIN); Servo servo; byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 servo.attach(SERVO_PIN); servo.write(angle); // rotate servo motor to 0° 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); 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"); changeServo(); } else if (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"); changeServo(); } 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 } } } void changeServo() { // change angle of servo motor if (angle == 0) angle = 90; else //if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); Serial.print("Rotate Servo Motor to "); Serial.print(angle); Serial.println("°"); }

Wiederhole dieselben Schritte wie zuvor und halte dann jeden RFID-Tag an das RFID-RC522-Modul. Die Ausgabe im seriellen Monitor sollte wie folgt aussehen:

COM6
Send
Tap RFID/NFC tag on reader Authorized Tag 2 Rotate Servo Motor to 90° Authorized Tag 1 Rotate Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sie können den oben geschriebenen Code erweitern, um drei, vier oder mehr Tags einzubeziehen.

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!