Hardware components | ||||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
Software apps and online services | ||||||
|
This is a circuit for Door Lock. The password is 1234. Press # to temporally change the password. pressing the wrong password shall make the buzzer ring.
for more https://www.tinkercad.com/things/lkFM80YyTPJ (my tinkercad project)
feel free to add other things like motor, servo motor etc.
Password Protected Door Lock
buzzer - 11 Arduino pin
keypad
row1 - A0 Arduino pin
row2 - A1 Arduino pin
row3 - A2 Arduino pin
row4 -A3 Arduino pin
column1 - A4 Arduino pin
column2 - A5 Arduino pin
column3 - 3 Arduino pin
column4 - 2 Arduino pin
LCD
Ground - ground
VCC - 5V
V0/VEE - potentiometer
Register Select - 9 Arduino pin
Read/Write - ground
Enable - 8 Arduino pin
Data Bit 4 - 7 Arduino pin
Data Bit 5 - 6 Arduino pin
Data Bit 6 - 5 Arduino pin
Data bit 7 - 4 Arduino pin
LED Positive - 5V
LED Negative - ground
potentiometer
terminal1 - V+
Wiper - V0/VEE
terminal2 - ground
keypad
row1 - A0 Arduino pin
row2 - A1 Arduino pin
row3 - A2 Arduino pin
row4 -A3 Arduino pin
column1 - A4 Arduino pin
column2 - A5 Arduino pin
column3 - 3 Arduino pin
column4 - 2 Arduino pin
LCD
Ground - ground
VCC - 5V
V0/VEE - potentiometer
Register Select - 9 Arduino pin
Read/Write - ground
Enable - 8 Arduino pin
Data Bit 4 - 7 Arduino pin
Data Bit 5 - 6 Arduino pin
Data Bit 6 - 5 Arduino pin
Data bit 7 - 4 Arduino pin
LED Positive - 5V
LED Negative - ground
potentiometer
terminal1 - V+
Wiper - V0/VEE
terminal2 - ground
#include <Keypad.h>
#include<LiquidCrystal.h>
#include<EEPROM.h>
LiquidCrystal liquid_crystal_display(9,8,7,6,5,4);
char password[4];
char initial_password[4],new_password[4];
int i=0;
int relay_pin = 10;
char key_pressed=0;
const byte rows = 4;
const byte columns = 4;
char hexaKeys[rows][columns] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte row_pins[rows] = {A0,A1,A2,A3};
byte column_pins[columns] = {A4,A5,3,2};
Keypad keypad_key = Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);
void setup()
{
pinMode(11, OUTPUT);
pinMode(relay_pin, OUTPUT);
liquid_crystal_display.begin(16,2);
liquid_crystal_display.print(" Arnav "); // Try putting your name
liquid_crystal_display.setCursor(0,1);
liquid_crystal_display.print("Electronic Lock ");
delay(2000);
liquid_crystal_display.clear();
liquid_crystal_display.print("Enter Password");
liquid_crystal_display.setCursor(0,1);
initialpassword();
}
void loop()
{
digitalWrite(relay_pin, HIGH);
key_pressed = keypad_key.getKey();
if(key_pressed=='#')
change();
if (key_pressed)
{
password[i++]=key_pressed;
liquid_crystal_display.print(key_pressed);
}
if(i==4)
{
delay(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("Pass Accepted");
digitalWrite(relay_pin, LOW);
liquid_crystal_display.setCursor(0,1);
liquid_crystal_display.print("Opening the door");
delay(2000);
}
else
{
digitalWrite(relay_pin, HIGH);
liquid_crystal_display.clear();
liquid_crystal_display.print("Wrong Password");
digitalWrite(11, HIGH);
liquid_crystal_display.setCursor(0,1);
delay(1000);
liquid_crystal_display.print("Press # to Change");
delay(5000);
digitalWrite(11, LOW);
liquid_crystal_display.clear();
liquid_crystal_display.print("Enter Password");
liquid_crystal_display.setCursor(0,1);
i=0;
}
}
}
void change()
{
int j=0;
liquid_crystal_display.clear();
liquid_crystal_display.print("Current Password");
liquid_crystal_display.setCursor(0,1);
while(j<4)
{
char key=keypad_key.getKey();
if(key)
{
new_password[j++]=key;
liquid_crystal_display.print(key);
}
key=0;
}
delay(500);
if((strncmp(new_password, initial_password, 4)))
{
liquid_crystal_display.clear();
liquid_crystal_display.print("Wrong Password");
liquid_crystal_display.setCursor(0,1);
liquid_crystal_display.print("Try Again");
delay(1000);
}
else
{
j=0;
liquid_crystal_display.clear();
liquid_crystal_display.print("New Password:");
liquid_crystal_display.setCursor(0,1);
while(j<4)
{
char key=keypad_key.getKey();
if(key)
{
initial_password[j]=key;
liquid_crystal_display.print(key);
EEPROM.write(j,key);
j++;
}
}
liquid_crystal_display.print("Pass Changed");
delay(1000);
}
liquid_crystal_display.clear();
liquid_crystal_display.print("Enter Password");
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);
}
Comments