In this project we will learn how to make Password Based Door Lock Security System Using Arduino & Keypad. As thefts are increasing day by day security is becoming a major concern nowadays. So a digital code lock can secure your home or locker easily. It will open your door only when the right password is entered
Circuit of this project is very simple which contains Arduino, keypad module, buzzer, Servo Motor and LCD. Arduino controls the complete processes like taking password form keypad module, comparing passwords, driving buzzer, rotating servo motor and sending status to LCD display. Keypad is used for taking password. Buzzer is used for indications. Servo motor is used for opening the gate while rotating and LCD is used for displaying status or messages on it

Components Required:
1. Arduino UNO 
2. 4*3 Keypad 
3. 16*2 LCD 
4. Buzzer 
5. Servo Motor 
6. Power Supply or Battery or Adapter 
7. Connecting Wires
 8. Breadboard

Circuit Diagram 


CODE

#include <Keypad.h>

#include <LiquidCrystal.h>
#include <Servo.h>

Servo myservo;
int pos = 0; // LCD Connections
LiquidCrystal LCD (A0, A1, A2, A3, A4, A5);
const byte rows = 4;
const byte cols = 3;

char keys [rows] [cols] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins [rows] = {1,2,3,4};
byte colpins [cols] = {5,6,7};
Keypad keypad = Keypad (makeKeymap (key), rowPins, colpins, rows, cols);
char * password = "4567";
int currentposition = 0;
int redled = 10;
int greenled = 11;
int buzz = 8;
int invalidcount = 12;



void setup ()
{

displaycreen ();
Serial.begin (9600);
pinMode (redled, OUTPUT);
pinMode (greenled, OUTPUT);
pinMode (buzz, OUTPUT);
myservo.attach (9); // SERVO ATTACHED //

lcd.begin (16,2);

}

void loop ()
{
if (currentposition == 0)
{
displaycreen ();

}
int l;
char code = keypad.getKey ();
if (code! = NO_KEY)
{
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("PASSWORD:");
lcd.setCursor (7,1);
lcd.print ("");
lcd.setCursor (7,1);
for (l = 0; l <= currentposition; ++ l)
{

lcd.print ("*");
keypress ();
}

if (code == password [currentposition])
{
++ currentposition;
if (currentposition == 4)
{

unlockdoor ();
currentposition = 0;

}

}

else
{
++ invalidcount;
wrong ();
currentposition = 0;

}
if (invalidcount == 5)
{

++ invalidcount;
torture1 ();

}
if (invalidcount == 8)
{
torture2 ();
}

}
// LOOP ENDS !!!
}
// ********************************* OPEN THE DOOR FUNCTION! !!! 

void unlockdoor ()
{
delay (900);

lcd.setCursor (0,0);
lcd.println ("");
lcd.setCursor (1,0);
lcd.print ("Access Granted");
lcd.setCursor (4,1);
lcd.println ("WELCOME !!");
lcd.setCursor (15,1);
lcd.println ("");
lcd.setCursor (16,1);
lcd.println ("");
lcd.setCursor (14,1);
lcd.println ("");
lcd.setCursor (13,1);
lcd.println ("");
unlockbuzz ();

for (pos = 180; pos> = 0; pos- = 5) // goes from 180 degrees to 0 degrees
{
myservo.write (pos); // say servo to go to position in variable 'pos'
delay (5); // waits 15ms for the service
}
delay (2000);



delay (1000);
counterbeep ();

delay (1000);

for (pos = 0; pos <= 180; pos + = 5) // goes from 0 degrees to 180 degrees
{// in steps of 1 degree
myservo.write (pos); // say servo to go to position in variable 'pos'
delay (15);


currentposition = 0;

lcd.clear ();
displaycreen ();

}
}

// ****************************** WRONG CODE FUNCTION *********** 

void incorrect ()
{
delay (500);
lcd.clear ();
lcd.setCursor (1,0);
lcd.print ("CODE");
lcd.setCursor (6,0);
lcd.print ("INCORRECT");
lcd.setCursor (15,1);
lcd.println ("");
lcd.setCursor (4,1);
lcd.println ("GET AWAY !!!");

lcd.setCursor (13,1);
lcd.println ("");
Serial.println ("CODE INCORRECT YOU ARE UNAUTHORIZED");
digitalWrite (redled, HIGH);
digitalWrite (buzz, HIGH);
delay (3000);
lcd.clear ();
digitalWrite (redled, LOW);
digitalWrite (buzz, LOW);
displaycreen ();
}
// ************************************************* CLEAR THE SCREEN !!! 
void clearscreen ()
{
lcd.setCursor (0,0);
lcd.println ("");
lcd.setCursor (0,1);
lcd.println ("");
lcd.setCursor (0,2);
lcd.println ("");
lcd.setCursor (0,3);
lcd.println ("");
}
// ******************** KEYPRESS ****************** **************
void keypress ()
{



digitalWrite (buzz, HIGH);
delay (50);
digitalWrite (buzz, LOW);
}
*********************************************************************************
void displayscreen ()
{

lcd.setCursor (0,0);
lcd.println ("* ENTER THE CODE *");
lcd.setCursor (1, 1);

lcd.println ("TO _ / _ (OPEN) !!");
}

// ********************* ARM SERVO 
void armservo ()
{

for (pos = 180; pos <= 180; pos + = 50)
{
myservo.write (pos);
delay (5);
}
delay (5000);

for (pos = 180; pos> = 0; pos- = 50)
{
myservo.write (pos);
}

}
// ***************************** UNLOCK BUZZ ************** *****************
void unlockbuzz ()
{

digitalWrite (buzz, HIGH);
delay (80);
digitalWrite (buzz, LOW);
delay (80);
digitalWrite (buzz, HIGH);
delay (80);
digitalWrite (buzz, LOW);
delay (200);
digitalWrite (buzz, HIGH);
delay (80);
digitalWrite (buzz, LOW);
delay (80);
digitalWrite (buzz, HIGH);
delay (80);
digitalWrite (buzz, LOW);
delay (80);
}

// ******************************************************* COUNTER BEEP 
void counterbeep ()
{
delay (1200);


lcd.clear ();
digitalWrite (buzz, HIGH);

lcd.setCursor (2,15);
lcd.println ("");
lcd.setCursor (2,14);
lcd.println ("");
lcd.setCursor (2.0);
delay (200);
lcd.println ("GET IN WITHIN :::");

lcd.setCursor (4,1);
lcd.print ("5");
delay (200);
lcd.clear ();
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
digitalWrite (buzz, LOW);
delay (1000);
// 2
digitalWrite (buzz, HIGH);
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
lcd.setCursor (4,1); // 2
lcd.print ("4");
delay (100);
lcd.clear ();
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
digitalWrite (buzz, LOW);
delay (1000);
// 3
digitalWrite (buzz, HIGH);
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
lcd.setCursor (4,1); // 3
lcd.print ("3");
delay (100);
lcd.clear ();
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
digitalWrite (buzz, LOW);
delay (1000);
// 4
digitalWrite (buzz, HIGH);
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
lcd.setCursor (4,1); // 4
lcd.print ("2");
delay (100);
lcd.clear ();
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN:");
digitalWrite (buzz, LOW);
delay (1000);
//
digitalWrite (buzz, HIGH);
lcd.setCursor (4,1);
lcd.print ("1");
delay (100);
lcd.clear ();
lcd.setCursor (2.0);
lcd.println ("GET IN WITHIN ::");
digitalWrite (buzz, LOW);
delay (1000);
// 5
digitalWrite (buzz, HIGH);
delay (40);
digitalWrite (buzz, LOW);
delay (40);
digitalWrite (buzz, HIGH);
delay (40);
digitalWrite (buzz, LOW);
delay (40);
digitalWrite (buzz, HIGH);
delay (40);
digitalWrite (buzz, LOW);
delay (40);
digitalWrite (buzz, HIGH);
delay (40);
digitalWrite (buzz, LOW);
lcd.clear ();
lcd.setCursor (2.0);
lcd.print ("RE-LOCKING");
delay (500);
lcd.setCursor (12,0);
lcd.print (".");
delay (500);
lcd.setCursor (13,0);
lcd.print (".");
delay (500);
lcd.setCursor (14,0);
lcd.print (".");
delay (400);
lcd.clear ();
lcd.setCursor (4,0);
lcd.print ("LOCKED!");
delay (440);
}
// ************************************************** TORTURE1 
void torture1 ()
{
delay (1000);
lcd.clear ();
lcd.setCursor (2.0);
lcd.print ("WAIT FOR");
lcd.setCursor (5,1);
lcd.print ("15 SECONDS");
digitalWrite (buzz, HIGH);
delay (15000);
digitalWrite (buzz, LOW);
lcd.clear ();
lcd.setCursor (2.0);
lcd.print ("LOL ..");
lcd.setCursor (1,1);
lcd.print ("HOW WAS THAT ??");
delay (3500);
lcd.clear ();

}
// ***************************** TORTURE2 **************** 
void torture2 ()
{
delay (1000);
lcd.setCursor (1,0);
lcd.print ("");
lcd.setCursor (2.0);
lcd.print ("EAR drums are");
lcd.setCursor (0,1);
lcd.print ("PRECIOUS !!");
delay (1500);
lcd.clear ();
lcd.setCursor (1,0);
lcd.print ("WAIT FOR");
lcd.setCursor (4,1);
lcd.print ("1 MINUTE");
digitalWrite (buzz, HIGH);
delay (55000);
counterbeep ();
lcd.clear ();
digitalWrite (buzz, LOW);
lcd.setCursor (2.0);
lcd.print ("WANT ME TO");
lcd.setCursor (1,1);
lcd.print ("REDICULE MORE ??");
delay (2500);
lcd.clear ();
lcd.setCursor (2.0);
lcd.print ("Ha Ha Ha Ha");
delay (1700);
lcd.clear ();
}

No comments

Theme images by Dizzo. Powered by Blogger.