Arduino Door Lock With Password

196,648

369

101

Introduction: Arduino Door Lock With Password

About: I am always making electronic stuff. I like to do Arduino projects best. more projects coming soon!

In this project I mede an door lock (or box lock) that opens when you enter your password and press "#". The servo turns back to the position it was in after some seconds.

Step 1: PARTS & TOOLS

For this project I used:

* Arduino uno ( http://store.arduino.cc/index.php?main_page=produc... )

* 4x4 matrix keypad, can also use 3x4( http://www.ebay.com/itm/4-x-4-Matrix-Array-16-Key-... )

* Arduino PCB shield ( http://www.ebay.com/itm/Prototype-PCB-for-Arduino-... )

* 2x 1k OHM resistors ( http://www.ebay.com/itm/50-Pcs-Carbon-Film-Resisto... )

* 3mm green and red LEDs ( http://www.ebay.com/itm/LOT-OF-20-50-100-3mm-Red-G... )

* Male pin header ( http://www.ebay.com/itm/3pcs-40Pin-2-54mm-Male-Hea... )

* Female pin header ( http://www.ebay.com/itm/New-4PCS-40Pin-Straight-Fe... )

* Servo ( http://www.ebay.com/itm/SG90-Mini-Gear-Micro-9g-Se... )

* Wires ( http://www.ebay.com/itm/50pcs-1007-24-color-PCB-So... )

The tools you are going to need:

* Soldering iron

* Soldering paste

* Soldering tin

* Plier

Step 2: Schematic

Follow the schematic.

Step 3: Solder the Connectors

Solder he connections for the Arduino, kaypad and servo. When you are soldering the connection for the keypad and the servo try not to have it in a place where the programing port on the Arduino UNO touches your soldered places, I did that once and I almost ended up destroying my Arduino because the 5v and the GND got connected together when they touched the programing port.

Step 4: Soldering

Solder the LEDs, resistors and the wires for them, than solder the rest of the wires, try to cut your wires so that they fit nice and smooth on the PCB like shown in the photos.

Step 5: The Door Lock

I mounted my servo on an aluminum plate with an simple lock. unfortunately I did not take any photos when making this but hopefully you will understand how to make it by the photo, its really easy.

Step 6: CODE

Download the code and import libraries. You need to download the 3 Arduino libraries if you don't have them.

* password.h

* keypad.h

* servo.h

THANKS FOR VIEWING!

Ifyou like this project than go check out my channel for more cool projects :)

If you have any questions or tips than post them in the comments.

Explore Science Contest

Participated in the
Explore Science Contest

Protected Contest

Participated in the
Protected Contest

3 People Made This Project!

Recommendations

  • Lamps and Lighting Contest

    Lamps and Lighting Contest
  • Organization Contest

    Organization Contest
  • Space Contest

    Space Contest

101 Comments

0
RCHAR
RCHAR

7 months ago

Code complet sans problèmes:

#include <Password.h> //http://playground.arduino.cc/uploads/Code/Password.zip//tells to use password library
#include <Keypad.h> //http://www.arduino.cc/playground/uploads/Code/Keypad.zip//tells to use keypad library
#include <Servo.h> //tells to use servo library
Servo myservo; //declares servo
Password password = Password( "0000" ); //password to unlock, can be changed
const byte ROWS = 4; // Four rows
const byte COLS = 4; // columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 9, 8, 7, 6 };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 5, 4, 3 };
// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
Serial.write(254);
Serial.write(0x01);
delay(200);
pinMode(11, OUTPUT); //green light
pinMode(12, OUTPUT); //red light
myservo.attach(13); //servo on digital pin 13 //servo
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
}
void loop(){
keypad.getKey();
myservo.write(0);
}
//take care of some special events
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Enter:");
Serial.println(eKey);
delay(10);
Serial.write(254);
switch (eKey){
case '*': checkPassword(); delay(1); break;
case '#': password.reset(); delay(1); break;
default: password.append(eKey); delay(1);
}
}
}
void checkPassword(){
if (password.evaluate()){ //if password is right open
Serial.println("Accepted");
Serial.write(254);delay(10);
//Add code to run if it works
myservo.write(150); //deg
password.reset();
digitalWrite(11, HIGH);//turn on
delay(5000); //wait 5 seconds
digitalWrite(11, LOW);// turn off
}else{
Serial.println("Denied"); //if passwords wrong keep locked
Serial.write(254);delay(10);
//add code to run if it did not work
myservo.write(0);
password.reset();
digitalWrite(12, HIGH); //turn on
delay(500); //wait 5 seconds
digitalWrite(12, LOW);//turn off
}
}

0
Moody2000
Moody2000

4 years ago

C:\Users\Mahmoud\Documents\Arduino\sketch_jun13a\sketch_jun13a.ino:8:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

Password password = Password( "0000" );

Please help , this error appeared.

0
Bembem18
Bembem18

Reply 1 year ago

i did have the same errors as you

0
mokuhito
mokuhito

2 years ago on Step 6

Merci!
c'est genial!
pour moi qui débute ce code est trés complexe, mais le montage fut facile!

0
ama3801
ama3801

4 years ago

This instructable is very nice and perfect .

I made it .but there
is a problem in the program .

When you enter password keys and * key
the pass is accepted , but after that whenever you press

Just only * key
and no any other key the servo acts ,unless you press another key or
rest # key .

I solved the problem by inserting this line password.reset();

by this when password is accepted the program automatically resets it .


Serial.println("Accepted");


Serial.write(254);delay(10);

//Add code to run
if it works


myservo.write(150); //deg


password.reset();


digitalWrite(11, HIGH);//turn on

delay(5000);
//wait 5 seconds

digitalWrite(11,
LOW);// turn off

0
fernando.almeida
fernando.almeida

Reply 2 years ago

Sorry for the late feedback. Great comment. But I had to insert the same line password.reset(); to the else function.

0
ayeshahina221
ayeshahina221

Question 3 years ago on Step 6

how can we add libraries of keypad and password during coding which aren't present in Arduino software

0
AhmetA38
AhmetA38

Question 3 years ago

can ı use arduino nano

0
AhmetA38
AhmetA38

Question 3 years ago

can ı use arduıno nano

0
AhmetA38
AhmetA38

Question 3 years ago on Step 1

Can ı use arduıno nano

0
riched
riched

4 years ago

I made this the first time round and had no problem, but i wanted to use a smaller uno bored but now every time i try to upload the code i get this "\Documents\Arduino\TEST1\TEST1.ino:7:18: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]" and because of this the code isnt working right on the bored, pls can anyone help as im confused to what the issue is. thanks

0
ama3801
ama3801

4 years ago

VERY NICE AND PERFECT

0
TomG184
TomG184

4 years ago

how i connect the pins for 3x4 numpad ?

0
ShahrulM
ShahrulM

4 years ago

is this the full programming ???
and how the programming if i add a lcd or cctv ?
can you help me to program it ?

0
achrefab095
achrefab095

4 years ago

hello , i made the same project , but i want to add buzzer which do a sonor signal when we enter a false password 3 times
could someone how can i do it
(am asking about the code )

0
abhineshrocks
abhineshrocks

5 years ago

a little doubt here. if i press 123456789 instead of just 159 the opens. i mean the code is such that as if you press any no. having 1,5 & 9 in sequence the door opens

0
ibenkos
ibenkos

Reply 5 years ago

I did not know that, do you have any suggestions to how I can make the code better?
Thanks

0
dinotom
dinotom

Reply 5 years ago

just test for code entry size, if more than 3 digits, disallow

0
Bayslayerking
Bayslayerking

Reply 4 years ago

how would i put that into the code here is the code i have i had tried to do //code entry size, if more than 3 digits, disallow... but it dint nothing and had the same problem

#include <Keypad.h>

#include <Servo.h>

Servo servo_Motor;

char* password = "123";

int position = 0;

const byte ROWS = 4;

const byte COLS = 4;

char keys[ROWS][COLS] = {

{'1', '2', '3', 'A'},

{'4', '5', '6', 'B'},

{'7', '8', '9', 'C'},

{'*', '0', '#', 'D'}

};

byte rowPins[ROWS] = { 8, 7, 6, 9 };

byte colPins[COLS] = { 5, 4, 3, 2 };

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

int redPin = 12;

int greenPin = 13;

void setup()

{

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

servo_Motor.attach(11);

setLocked(true);

}

void loop()

{

char key = keypad.getKey();

if (key == '*' || key == '#')

{

position = 0;

setLocked(true);

}

if (key == password[position])

{

position ++;

}

if (position == 3)

{

setLocked(false);

}

delay(100);

}

void setLocked(int locked)

{

if (locked)

{

digitalWrite(redPin, HIGH);

digitalWrite(greenPin, LOW);

servo_Motor.write(11);

}

else

{

digitalWrite(redPin, LOW);

digitalWrite(greenPin, HIGH);

servo_Motor.write(90);

}

}