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.

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Key Fob
1×RFID Kaart
1×Solenoïde Slot
1×Relais
1×12V Voedingsadapter
1×DC voedingsconnector
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
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.

Over RFID/NFC RC522 Module en Solenoïde Slot

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:

Bekabelingsschema

ESP32 RFID RC522 solenoïde slot bekabelingsschema

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.

ESP32 Code - Enkel RFID Tag

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-rfid-solenoid-lock */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 controls the solenoid lock via therelay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => locked Serial.println("Tap RFID 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"); digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked } 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(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Snel aan de slag

  • Als u ESP32 voor het eerst gebruikt, bekijk dan hoe u de omgeving opzet voor ESP32 in Arduino IDE.
  • 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
COM6
Send
Tap RFID Tag on reader Unauthorized Tag: 51 3D C1 AC
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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
COM6
Send
Tap RFID Tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Tik een andere RFID-tag tegen de RFID-RC522 module
  • Bekijk de output in de Seriële Monitor
COM6
Send
Tap RFID Tag on reader Authorized Tag Unauthorized Tag: 5D 11 1A D3
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32 Code - Meerdere RFID Tags

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.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-rfid-solenoid-lock */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 controls the solenoid lock via therelay 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(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => locked Serial.println("Tap RFID 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"); digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked } 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); // deactivate the solenoid lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked } 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(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

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:

COM6
Send
Tap RFID Tag on reader Authorized Tag 2 Authorized Tag 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

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.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!