ESP32 - Deurslot met Keypad

Deze tutorial begeleidt u stap voor stap bij het maken van een deurslotsysteem dat werkt met een wachtwoord via een keypad en een solenoïde slot. Het systeem ontgrendelt de deur zodra het juiste wachtwoord is ingevoerd en houdt de deur 20 seconden ontgrendeld voordat het automatisch weer vergrendelt. De ESP32 code ondersteunt bovendien meerdere wachtwoorden.

※ Notiz:

Naast deze tutorial bieden we ook andere tutorials over deurslotsystemen aan:

Hardware Vereist

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Toetsenbord 3x4
1×Relais
1×Solenoïde Slot
1×12V Voedingsadapter
1×(Optioneel) DC Power Jack
1×Breadboard (experimenteerprint)
1×Jumper Draden (mannelijk-mannelijk)
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 en Solenoïde Slot

We hebben aparte tutorials die zich specifiek richten op keypads en solenoïde sloten. Elke tutorial geeft gedetailleerde informatie en stapsgewijze instructies over de hardware pinout, het werkingsprincipe, bedrading naar de ESP32, ESP32 code en meer. Voor meer informatie over deze tutorials verwijzen wij u graag naar de volgende links:

Bedradingsschema

  • ESP32 - Deurslot met keypad en solenoïde slot
ESP32, keypad, solenoid lock wiring diagram

This image is created using Fritzing. Click to enlarge image

ESP32 Code - Deurslotsysteem met wachtwoord via keypad en solenoid lock

/* * 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-keypad-door-lock */ #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 = "1234567"; // change your password here const String password_2 = "987654"; // 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 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // 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("The password is correct, unlocking the door in 20 seconds"); digitalWrite(RELAY_PIN, HIGH); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, LOW); // lock the door } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Snelle Stappen

  • Verbind de ESP32 met uw computer via een USB-kabel.
  • Open de Arduino IDE, selecteer de juiste board en poort.
  • Klik op het Libraries icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar de “keypad” bibliotheek en vind de keypad bibliotheek gemaakt door Mark Stanley en Alexander Brevig.
  • Klik op de Installeren knop om de keypad bibliotheek te installeren.
ESP32 keypad library
  • Kopieer de opgegeven code en plak deze in de Arduino IDE.
  • Compileer en upload de code naar het ESP32 bord door op de Uploaden knop te klikken in de Arduino IDE.
  • Open de Serial Monitor in de Arduino IDE.
  • Druk de toetsen 12345 in en druk vervolgens op #
  • Druk de toetsen 1234567 in en druk vervolgens op #
  • Observeer de staat van de vergrendelpen (lock tongue) gedurende 20 seconden.
  • Observeer de output in de Serial Monitor.
COM6
Send
The password is incorrect, try again The password is correct, unlocking the door in 20 seconds
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Uitleg

In dit systeem zijn geldige wachtwoorden vooraf geprogrammeerd in de ESP32 code. Een input string wordt gebruikt om het wachtwoord op te slaan dat door gebruikers is ingevoerd. Het keypad heeft twee speciale toetsen, * en #, die respectievelijk dienen om de invoer te wissen en te beëindigen. Het systeem werkt als volgt:

  • Wanneer een toets wordt ingedrukt die geen speciale toets is, wordt deze toegevoegd aan de input string.
  • Wanneer de * toets wordt ingedrukt, wordt de input string gewist en kan het invoeren van het wachtwoord opnieuw worden gestart.
  • Wanneer de # toets wordt ingedrukt:
    • Wordt de input string vergeleken met de vooraf gedefinieerde wachtwoorden. Als deze overeenkomt met een van de wachtwoorden, wordt het relais geactiveerd om de deur te ontgrendelen.
    • Ongeacht of het wachtwoord correct is of niet, wordt de input string geleegd voor de volgende invoer.

    ※ Notiz:

    • In de bovenstaande code is ter vereenvoudiging de delay-functie gebruikt. Het is beter om millis() te gebruiken in plaats van delay(). Zie Hoe millis() te gebruiken in plaats van delay()
    • U kunt een piezo buzzer toevoegen om een pieptoon te laten horen bij elke toetsdruk op het keypad.
    • In de bovenstaande codes wordt de deur opnieuw vergrendeld na 20 seconden. U kunt dit vervangen door een deursensor. De deur wordt dan vergrendeld wanneer de deursensor detecteert dat de deur door de gebruiker is gesloten.

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 helpt u stap voor stap door het proces.

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