ESP32 - RFID - Elektromagnetisch Slot
In deze handleiding leert u hoe u een deurbeveiligingssysteem maakt dat werkt met RFID, door gebruik te maken van de ESP32, de RC522 RFID-lezer en een elektromagnetisch slot.
Of u kunt de volgende kits kopen:
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.
Bent u niet bekend met de RFID/NFC RC522 Module en het elektromagnetisch slot, inclusief de pinout, functionaliteit en programmering? Ontdek uitgebreide tutorials over deze onderwerpen via onderstaande links:

This image is created using Fritzing. Click to enlarge image
※ Notiz:
De volgorde van pinnen kan verschillen per fabrikant. Gebruik ALTIJD de labels die op de module gedrukt staan. De bovenstaande afbeelding toont de pinout van modules van de fabrikant 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();
}
}
}
Maak de bedrading zoals afgebeeld in de bovenstaande afbeelding.
Verbind de ESP32 met uw PC via een micro USB-kabel.
Open Arduino IDE op uw PC.
Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
Aangezien de UID meestal niet op een RFID-tag staat afgedrukt, is de eerste stap het achterhalen van de UID van de tag. Dit doet u als volgt:
Kopieer bovenstaande code en open deze in Arduino IDE.
Klik op de Upload-knop in Arduino IDE om de code naar de ESP32 te uploaden.
Open de Seriële Monitor.
Tik met een RFID-tag op de RFID-RC522 module.
Bekijk de UID in de Seriële Monitor.
Tap RFID Tag on reader
Unauthorized Tag: 51 3D C1 AC
Als u de UID hebt:
Pas de UID aan op regel 18 in de bovenstaande code. Bijvoorbeeld, verander byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; in byte authorizedUID[4] = {0x51, 0x3D, 0xC1, 0xAC};
Upload de code opnieuw naar de ESP32
Tik met een RFID-tag op de RFID-RC522 module
Bekijk de output in de Seriële Monitor
Tap RFID Tag on reader
Authorized Tag
Tap RFID Tag on reader
Authorized Tag
Unauthorized Tag: 5D 11 1A D3
We kunnen meerdere RFID/NFC tags toestaan om het elektromagnetisch slot te activeren. De onderstaande code gebruikt twee tags als voorbeeld.
#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();
}
}
}
Volg dezelfde stappen als hierboven en tik vervolgens één voor één de tags op de RFID-RC522 module. De resultaten in de Seriële Monitor zijn als volgt:
Tap RFID Tag on reader
Authorized Tag 2
Authorized Tag 1
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.