ESP32 - RFID - Solenoïde Slot
In deze tutorial leert u hoe u een deurslot maakt op basis van RFID met behulp van een ESP32, RC522 RFID-lezer en een solenoïde 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 vertrouwd met de RFID/NFC RC522 Module en solenoïde slot, inclusief hun pinout, functionaliteit en programmering? Verken dan de uitgebreide tutorials over deze onderwerpen hieronder:

This image is created using Fritzing. Click to enlarge image
※ Notiz:
De volgorde van de pinnen kan verschillen per fabrikant. Gebruik ALTIJD de labels die op de module zijn gedrukt. De bovenstaande afbeelding toont de pinout van de 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 bekabeling zoals te zien in de bovenstaande afbeelding.
Verbind de ESP32 met uw PC via een micro USB-kabel.
Open de Arduino IDE op uw PC.
Selecteer de juiste ESP32 board (bijv. ESP32 Dev Module) en COM-poort.
Omdat de UID (Unique Identifier) meestal niet op de RFID-tag gedrukt staat, is de eerste stap het achterhalen van de UID. 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 een RFID-tag tegen de RFID-RC522 module
Lees de UID af in de Seriële Monitor
Tap RFID Tag on reader
Unauthorized Tag: 51 3D C1 AC
Na het verkrijgen van de UID:
Pas de UID aan in regel 18 van bovenstaande code. Bijvoorbeeld, wijzig byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; naar byte authorizedUID[4] = {0x51, 0x3D, 0xC1, 0xAC};
Upload de code opnieuw naar de ESP32
Tik een RFID-tag tegen 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
Het is mogelijk meerdere RFID/NFC-tags toe te staan om het solenoïde 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();
}
}
}
Doe dezelfde stappen als hierboven en tik vervolgens één voor één tags op de RFID-RC522 module. Het resultaat in de Seriële Monitor ziet er als volgt uit:
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.