ESP32 - Deurslot Systeem met Wachtwoord

Deze tutorial leert u hoe u met ESP32, een keypad en een elektromagnetisch slot een deurslot systeem maakt. Gebruikers worden gevraagd om een wachtwoord in te voeren via het keypad. Als het wachtwoord geldig is, bestuurt de ESP32 het elektromagnetische slot om de deur te ontgrendelen. Optioneel kan er ook een LCD worden toegevoegd voor extra gemak. De ESP32-code ondersteunt meerdere wachtwoorden.

Hardware Vereist

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Toetsenbord 3x4
1×Relais
1×Elektromagnetisch Slot
1×12V Voedingsadapter
1×Breadboard (experimenteerprint)
1×Jumper wires
1×(Optioneel) LCD I2C
1×(Optioneel) DC Power Jack
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 Keypad, Elektromagnetisch Slot en LCD

We hebben specifieke tutorials over keypad, elektromagnetisch slot en LCD. Elke tutorial bevat gedetailleerde informatie en stap-voor-stap instructies over hardware pinout, werkingsprincipe, bedrading naar de ESP32, ESP32 code... Leer meer over deze onderwerpen via de volgende links:

Hoe het wachtwoord gecontroleerd wordt

  • Een speciale toets * wordt gebruikt om het wachtwoord te resetten
  • Een speciale toets # wordt gebruikt om de invoer van het wachtwoord te beëindigen
  • Elke ingedrukte toets, behalve * en #, wordt toegevoegd aan een tekenreeks
  • Zodra de # toets wordt ingedrukt, is de wachtwoordinvoer voltooid. De ESP32 vergelijkt de ingevoerde tekenreeks met vooraf ingestelde wachtwoorden
  • Als het ingevoerde wachtwoord correct is, wordt de deur ontgrendeld

Bedradingsschema

ESP32 deurslot systeem bedrading schema

This image is created using Fritzing. Click to enlarge image

ESP32 Code - Deurslot systeem met wachtwoord via keypad en elektromagnetisch slot

/* * 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-door-lock-system-using-password */ #include <Keypad.h> #define RELAY_PIN 19 // ESP32 pin GPIO19 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {12, 14, 27, 26}; // ESP32 pin: GPIO12, GPIO14, GPIO27, GPIO26 connected to the row pins byte pin_column[COLUMN_NUM] = {25, 33, 32}; // ESP32 pin: GPIO25, GPIO33, GPIO32 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "4444"; // change your password here const String password_3 = "55555"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 32 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); // lock the door } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("Valid Password => unlock the door"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("Invalid Password => Try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Snelle Stappen

  • Als u voor het eerst met ESP32 werkt, zie dan hoe u de omgeving instelt voor ESP32 in Arduino IDE
  • Maak de bedrading volgens bovenstaande afbeelding
  • Verbind het ESP32 board 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
  • Klik op het Libraries icoon in de linker zijbalk van de Arduino IDE
  • Typ “keypad” in het zoekvak en zoek de keypad bibliotheek van Mark Stanley en Alexander Brevig
  • Klik op Installeren om de keypad bibliotheek te installeren
ESP32 keypad bibliotheek
  • Kopieer bovenstaande code en plak deze in de Arduino IDE
  • Compileer en upload de code naar het ESP32 board door op de knop Uploaden te klikken
  • Om het elektromagnetische slot te simuleren, plaatst u de elektromagneet nabij de ankerplaat
  • Druk op de toetsen 1111 gevolgd door #
  • Controleer de aantrekking tussen elektromagneet en ankerplaat
  • Druk vervolgens op de toetsen 1234 gevolgd door #
  • Controleer opnieuw de aantrekking tussen elektromagneet en ankerplaat
  • Bekijk het resultaat in de seriële monitor
COM6
Send
Invalid Password => Try again Valid Password => unlock the door
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32 Code - Deurslot systeem met wachtwoord, keypad, elektromagnetisch slot en LCD

De onderstaande code voegt een LCD I2C toe om de toegangstatus weer te geven. Voor het aansluiten van de LCD, zie deze tutorial ESP32 - LCD I2C tutorial

/* * 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-door-lock-system-using-password */ #include <LiquidCrystal_I2C.h> #include <Keypad.h> #define RELAY_PIN 19 // ESP32 pin GPIO19 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {12, 14, 27, 26}; // ESP32 pin: GPIO12, GPIO14, GPIO27, GPIO26 connected to the row pins byte pin_column[COLUMN_NUM] = {25, 33, 32}; // ESP32 pin: GPIO25, GPIO33, GPIO32 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "4444"; // change your password here const String password_3 = "55555"; // change your password here String input_password; LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 32 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); lcd.init(); // initialize the lcd lcd.backlight(); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password lcd.clear(); } else if (key == '#') { lcd.clear(); if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("Valid Password => unlock the door"); lcd.setCursor(0, 0); lcd.print("CORRECT!"); lcd.setCursor(0, 1); lcd.print("DOOR UNLOCKED!"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("Invalid Password => Try again"); lcd.setCursor(0, 0); lcd.print("INCORRECT!"); lcd.setCursor(0, 1); lcd.print("ACCESS DENIED!"); } input_password = ""; // reset the input password } else { if (input_password.length() == 0) { lcd.clear(); } input_password += key; // append new character to input password string lcd.setCursor(input_password.length(), 0); // move cursor to new position lcd.print('*'); // print * key as hiden character } } }

※ Notiz:

Het LCD I2C-adres kan verschillen per fabrikant. In de code gebruiken we het adres 0x27, gespecificeerd door de fabrikant DIYables

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.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en stap-voor-stap uitleg om u te helpen het ESP32 deurslot systeem met keypad en elektromagnetisch slot te realiseren.

※ 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!