Arduino Keyless Door Lock System met toetsenbord en LCD
Componenten en benodigdheden
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Apps en online services
![]() |
|
Over dit project
Arduino Keyless Door Lock System met toetsenbord en LCD0
0
Door Ali Hamza
In dit project gaan we een sleutelloos deurslotsysteem maken dat een 4X4-toetsenbord gebruikt om de sleutels in te voeren en een DC-slot om de deur te openen of te sluiten. Een 16X2 LCD wordt gebruikt voor weergave.
Vereiste componenten
De componenten die nodig zijn voor dit project zijn als volgt
- Arduino
- 4X4-toetsenbord
- LCD
- DC-slot
- Estafette
- 9V batterij
- 10k potentiometer
- 220 ohm weerstand
Hoe werkt het?
Telkens wanneer de toetsen worden ingedrukt, worden ze gekoppeld aan de reeds opgeslagen toetsen. Als de ingedrukte toetsen overeenkomen met het oorspronkelijke wachtwoord dat is opgeslagen in de EEPROM, namelijk '1234', gaat het slot open. Als het wachtwoord niet overeenkomt, wordt "toegang geweigerd" afgedrukt op het LCD-scherm.
Als de '#'-toets wordt ingedrukt, wordt u gevraagd het huidige wachtwoord in te voeren en als het overeenkomt, wordt u gevraagd het nieuwe wachtwoord in te voeren en wordt het wachtwoord gewijzigd.
Circuitdiagram
Sluit eerst het 4X4-toetsenbord aan op de Arduino; verbind de eerste zes pinnen op het 4X4-toetsenbord met de A0- en A5-pinnen op de Arduino. Verbind vervolgens de laatste twee pinnen op de 4X4-toetsenbordmodule met digitale pinnen 3 en 2 op de Arduino.
Sluit daarna het LCD-scherm aan op de Arduino. De aansluitingen voor het verbinden van het LCD-scherm met de Arduino zijn als volgt
- Sluit pin 1 op het LCD-scherm, de VSS-pin, aan op GND op de Arduino
- Sluit pin 2, de VDD-pin, aan op de 5V-pin op de Arduino
- Sluit pin 3, de V0, aan op het midden van de 10k-potentiometer en verbind de andere twee pinnen op de potentiometer met 5V en GND op de Arduino. Deze pin is voor het instellen van het contrast van het LCD-scherm.
- Verbind pin 4, de RS-pin, met pin 7 op de Arduino
- Verbind pin 5, de R/W-pin, met de GND-pin op de Arduino
- Verbind pin 6, de Enable-pin, met pin 6 op de Arduino
- Verbind pinnen 11, 12, 13 en 14, die de datapinnen zijn, met de pinnen 5, 4, 3 en 2 op de Arduino
- Verbind pin 15, de achtergrondverlichtingspin van het LCD-scherm, met 5V op de Arduino via de 220-ohm-weerstand
- Verbind pin 16 op de Arduino, de negatieve pin van de achtergrondverlichting, met GND op de Arduino
Als laatste zullen we het DC-slot verbinden met de Arduino. Het slot werkt op een spanning van 7 tot 12V, dus we kunnen het niet rechtstreeks op de Arduino aansluiten. Om het op de Arduino aan te sluiten, hebben we een relais en een batterij nodig.
Sluit de signaalpin van het relais aan op pin 10 op de Arduino en de VCC en GND van het slot op 5V en GND op de Arduino. Sluit vervolgens aan het andere uiteinde van het relais de min van de batterij aan op de common op het relais en de NO (normaal open) op het relais op één kant van het slot. Sluit vervolgens de andere kant van het slot aan op de pluspool op de batterij.

Arduino toetsenbordvergrendelingscode
Het initiële wachtwoord is 1234.
#include #include#includeLiquidCrystal liquid_crystal_display(9,8,7,6,5,4,);char wachtwoord[4]; char initial_password[4],new_password[4];int i=0;int relay_pin =10;char key_pressed=0;const byte rijen =4; const byte kolommen =4; char hexaKeys[rijen][kolommen] ={{'1','2','3','A'},{'4','5','6','B'},{'7' ,'8','9','C'},{'*','0','#','D'}};byte row_pins[rijen] ={A0,A1,A2,A3};byte column_pins[kolommen] ={A4,A5,3,2}; Keypad keypad_key =Keypad (makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);void setup(){ pinMode(relay_pin, OUTPUT); liquid_crystal_display.begin (16,2); liquid_crystal_display.print(" DIYhacking.com"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Elektronisch slot"); vertraging (2000); liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in"); liquid_crystal_display.setCursor(0,1); initialpassword();}void loop(){ digitalWrite(relay_pin, HIGH); key_pressed =toetsenbord_key.getKey(); if(key_pressed=='#') change(); if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display.print (toets ingedrukt); } if(i==4) { vertraging(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("Geaccepteerd"); digitalWrite (relay_pin, LAAG); vertraging (2000); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Druk op # om te wijzigen"); vertraging (2000); liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in:"); liquid_crystal_display.setCursor(0,1); ik=0; } else { digitalWrite(relay_pin, HIGH); liquid_crystal_display.clear(); liquid_crystal_display.print("Verkeerd wachtwoord"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Druk op # om te wijzigen"); vertraging (2000); liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in"); liquid_crystal_display.setCursor(0,1); ik=0; } }}ongeldige wijziging(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("Huidig wachtwoord"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key; liquid_crystal_display.print(sleutel); } sleutel=0; } vertraging(500); if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("Verkeerd wachtwoord"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Probeer het opnieuw"); vertraging (1000); } anders { j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("Nieuw wachtwoord:"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { initial_password[j]=key; liquid_crystal_display.print(sleutel); EEPROM.write(j,toets); j++; } } liquid_crystal_display.print("Gewijzigd"); vertraging (1000); } liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in"); liquid_crystal_display.setCursor(0,1); key_pressed=0;}void initialpassword(){ for(int j=0;j<4;j++) EEPROM.write(j, j+49); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j);}
Code Uitleg
Allereerst zullen we de bibliotheken opnemen voor het 4X4-toetsenbord, het LCD-scherm en een bibliotheek voor het opslaan van het wachtwoord. De EEPROM-bibliotheek wordt gebruikt om het wachtwoord op te slaan. Het standaardwachtwoord dat erin is opgeslagen, is '1234'.
#include #include#include
In de loop-functie wordt de ingedrukte toets opgeslagen in de 'key_pressed ’ variabele en het zal worden vergeleken met de andere sleutels. Als de ingedrukte toets '#' is, wordt de wijzigingsfunctie aangeroepen en wordt om het nieuwe wachtwoord gevraagd.
key_pressed =keypad_key.getKey(); if(key_pressed=='#') change();
De ingedrukte toetsen worden opgeslagen in het 'wachtwoord ’ variabele en deze worden weergegeven op het LCD-scherm wanneer de toetsen worden ingedrukt. Vervolgens worden deze sleutels gekoppeld aan het initiële wachtwoord dat is opgeslagen in de EEPROM. Als de ingedrukte toetsen overeenkomen met het oorspronkelijke wachtwoord, wordt het slot geopend en wordt "Pass geaccepteerd" op het LCD-scherm afgedrukt. Als het wachtwoord niet overeenkomt, wordt gevraagd om het wachtwoord opnieuw in te voeren.
if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display.print (toets ingedrukt); }if(i==4) { vertraging(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("Geaccepteerd"); digitalWrite (relay_pin, LAAG); vertraging (2000);
Als de '#'-toets wordt ingedrukt, wordt de 'change() . aangeroepen ’ functie. In de wijzigingsfunctie wordt u gevraagd het huidige wachtwoord in te voeren. Als het huidige wachtwoord correct is, wordt u gevraagd het nieuwe wachtwoord in te voeren. Na het invoeren van het nieuwe wachtwoord, wordt het wachtwoord gewijzigd.
ongeldige wijziging(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("Huidig wachtwoord"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key; liquid_crystal_display.print(sleutel); } sleutel=0; } vertraging(500);
Tags:4x4 Toetsenbord, Arduino, DC Lock, Keylock, Toetsenbord, lcd, Lock
Aanbevolen berichten
Arduino-wekker met een realtimeklok en LCD-scherm

Een zelfbalancerende Arduino-robot bouwen

Gebruik een Arduino en solenoïde om een broodroosterdans te maken

Maak een doe-het-zelf automatisch irrigatiesysteem met Arduino

Code
- Codefragment #1
- Codefragment #2
- Codefragment #3
- Codefragment #4
- Codefragment #5
Codefragment #1Platte tekst
#include#include #include LiquidCrystal liquid_crystal_display(9,8,7,6,5,4,);char wachtwoord[4];char initial_password[ 4],new_password[4];int i=0;int relay_pin =10;char key_pressed=0;const byte rijen =4; const byte kolommen =4; char hexaKeys[rijen][kolommen] ={{'1','2','3','A'},{'4','5','6','B'},{'7' ,'8','9','C'},{'*','0','#','D'}};byte row_pins[rijen] ={A0,A1,A2,A3};byte column_pins[kolommen] ={A4,A5,3,2}; Keypad keypad_key =Keypad (makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);void setup(){ pinMode(relay_pin, OUTPUT); liquid_crystal_display.begin (16,2); liquid_crystal_display.print(" DIYhacking.com"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Elektronisch slot"); vertraging (2000); liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in"); liquid_crystal_display.setCursor(0,1); initialpassword();}void loop(){ digitalWrite(relay_pin, HIGH); key_pressed =toetsenbord_key.getKey(); if(key_pressed=='#') change(); if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display.print (toets ingedrukt); } if(i==4) { vertraging(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("Geaccepteerd"); digitalWrite (relay_pin, LAAG); vertraging (2000); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Druk op # om te wijzigen"); vertraging (2000); liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in:"); liquid_crystal_display.setCursor(0,1); ik=0; } else { digitalWrite(relay_pin, HIGH); liquid_crystal_display.clear(); liquid_crystal_display.print("Verkeerd wachtwoord"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Druk op # om te wijzigen"); vertraging (2000); liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in"); liquid_crystal_display.setCursor(0,1); ik=0; } }}ongeldige wijziging(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("Huidig wachtwoord"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key; liquid_crystal_display.print(sleutel); } sleutel=0; } vertraging(500); if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("Verkeerd wachtwoord"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("Probeer het opnieuw"); vertraging (1000); } anders { j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("Nieuw wachtwoord:"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { initial_password[j]=key; liquid_crystal_display.print(sleutel); EEPROM.write(j,toets); j++; } } liquid_crystal_display.print("Gewijzigd"); vertraging (1000); } liquid_crystal_display.clear(); liquid_crystal_display.print("Voer wachtwoord in"); liquid_crystal_display.setCursor(0,1); key_pressed=0;}void initialpassword(){ for(int j=0;j<4;j++) EEPROM.write(j, j+49); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j);}
Codefragment #2Platte tekst
#include#include #include
Codefragment #3Platte tekst
key_pressed =keypad_key.getKey(); if(key_pressed=='#') change();
Codefragment #4Platte tekst
if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display.print (toets ingedrukt); }if(i==4) { vertraging(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(password, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("Geaccepteerd"); digitalWrite (relay_pin, LAAG); vertraging (2000);
Codefragment #5Platte tekst
ongeldige wijziging(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("Huidig wachtwoord"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(key) { new_password[j++]=key; liquid_crystal_display.print(sleutel); } sleutel=0; } vertraging(500);
Schema's
Gebruik een Arduino om een solenoïde deurslot te bedienen dat met de juiste toetsencombinatie kan worden geopend.
Productieproces
- Arduino-gyroscoopspel met MPU-6050
- Aanwezigheidssysteem met Arduino en RFID met Python
- DHT11-sensor met LED's en een piëzo-luidspreker
- LCD-animatie en gaming
- Unopad - Arduino MIDI-controller met Ableton
- Temperatuur- en vochtigheidsdatalogger
- Eenvoudige obstakelsensor met Arduino
- 4x4x4 LED-kubus met Arduino Uno en 1sheeld
- Op Arduino gebaseerde RPM-teller met een nieuw en sneller algoritme
- Aanwezigheidssysteem op basis van Arduino en Google Spreadsheet
- Arduino en Android-gebaseerd wachtwoordbeveiligd deurslot