ESP32 - RFID - Solenoidschloss
In diesem Tutorial lernen wir, wie man ein RFID-basiertes Türschloss-System mit einem ESP32, einem RC522 RFID-Lesegerät und einem Solenoidschloss herstellt.
Oder Sie können die folgenden Kits kaufen:
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.
Nicht vertraut mit dem RFID/NFC RC522-Modul und dem Solenoid-Türschloss – einschließlich ihrer Pinbelegung, Funktionen und Programmierung? Erkunden Sie unten umfassende Tutorials zu diesen Themen:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.
※ Notiz:
Die Reihenfolge 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.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5
#define RST_PIN 27
#define RELAY_PIN 32
MFRC522 rfid(SS_PIN, RST_PIN);
byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
Serial.println("Tap RFID Tag on reader");
}
void loop() {
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
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");
digitalWrite(RELAY_PIN, LOW);
delay(2000);
digitalWrite(RELAY_PIN, HIGH);
}
else
{
Serial.print("Unauthorized Tag:");
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();
rfid.PCD_StopCrypto1();
}
}
}
Schließen Sie die Verkabelung wie im obigen Bild an.
Schließen Sie das ESP32-Board über ein Micro-USB-Kabel an Ihren PC an.
Öffnen Sie die Arduino-IDE auf Ihrem PC.
Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
Da die UID normalerweise nicht auf dem RFID-Tag gedruckt wird, besteht der erste Schritt, den wir tun müssen, darin, die UID des Tags herauszufinden. Dies kann durch Folgendes erfolgen:
Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE.
Klicken Sie auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf den ESP32 hochzuladen.
Öffnen Sie den seriellen Monitor.
Halten Sie einen RFID-Tag an das RFID-RC522-Modul.
Lesen Sie die UID im seriellen Monitor aus.
Tap RFID Tag on reader
Unauthorized Tag: 51 3D C1 AC
Nachdem Sie eine UID erhalten haben:
Aktualisiere die UID in Zeile 18 des obigen Codes. Zum Beispiel ändere byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; auf byte authorizedUID[4] = {0x51, 0x3D, 0xC1, 0xAC};.
Lade den Code erneut auf den ESP32 hoch.
Halte einen RFID-Tag an das RFID-RC522-Modul.
Siehe Ausgabe im Serial Monitor.
Tap RFID Tag on reader
Authorized Tag
Tap RFID Tag on reader
Authorized Tag
Unauthorized Tag: 5D 11 1A D3
Wir können mehrere RFID-/NFC-Tags zulassen, um das Solenoidschloss zu aktivieren. Der unten stehende Code verwendet zwei Tags als Beispiel.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5
#define RST_PIN 27
#define RELAY_PIN 32
MFRC522 rfid(SS_PIN, RST_PIN);
byte authorizedUID1[4] = {0x51, 0x3D, 0xC1, 0xAC};
byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
Serial.println("Tap RFID Tag on reader");
}
void loop() {
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
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");
digitalWrite(RELAY_PIN, LOW);
delay(2000);
digitalWrite(RELAY_PIN, HIGH);
}
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");
digitalWrite(RELAY_PIN, LOW);
delay(2000);
digitalWrite(RELAY_PIN, HIGH);
}
else
{
Serial.print("Unauthorized Tag:");
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();
rfid.PCD_StopCrypto1();
}
}
}
Führen Sie ähnliche Schritte wie oben aus und halten Sie dann nacheinander jedes RFID-Tag gegen das RFID-RC522-Modul. Das Ergebnis im seriellen Monitor ist unten zu sehen:
Tap RFID Tag on reader
Authorized Tag 2
Authorized Tag 1
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.