Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Sathyajith Lakshan
Published

Smart Door Lock

Smart Dooor Lock System with Arduino, Using 4x4 keypad and solenoid lock

BeginnerProtip987
Smart Door Lock

Things used in this project

Story

Read more

Code

Arduino Code

Arduino
#include <Keypad.h>
#include<LiquidCrystal.h>
#include<EEPROM.h>
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
char password[4];
char pass[4], pass1[4];
int i = 0;
char customKey = 0;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {A0, A1 , A2, A3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A4 , A5 , 3, 2};  //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

int led;
int buzzer = 10;
int m11;
int m12;
void setup(){
  Serial.begin(9600);
  pinMode(11, OUTPUT);

  lcd.begin(16, 2);
  pinMode(led, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(m11, OUTPUT);
  pinMode(m12, OUTPUT);
  
  lcd.print(" Smart ");
  Serial.print(" Smart ");
  lcd.setCursor(0, 1);
  lcd.print(" Keypad Lock ");
  Serial.print(" Keypad Lock ");
  delay(2000);
  lcd.clear();
  lcd.print("Enter Ur Password:");
  Serial.println("Enter Ur Password:");
  lcd.setCursor(0, 1);
  for (int j = 0; j < 4; j++)
    EEPROM.write(j, j + 49);
  for (int j = 0; j < 4; j++)
    pass[j] = EEPROM.read(j);
}

void loop(){
  digitalWrite(11, HIGH);
  customKey = customKeypad.getKey();
  if (customKey == '#')
    change();
  if (customKey){
    password[i++] = customKey;
    lcd.print(customKey);
    Serial.print(customKey);
    beep();
  }
  if (i == 4){
    delay(200);
    for (int j = 0; j < 4; j++)
      pass[j] = EEPROM.read(j);
    if (!(strncmp(password, pass, 4))){
      digitalWrite(led, HIGH);
      beep();
      lcd.clear();
      lcd.print("Password Accepted");
      Serial.println("Password Accepted");
      digitalWrite(11, LOW);
      delay(10000);
      lcd.setCursor(0, 1);
      lcd.print("#.Change Password");
      Serial.println("#.Change Password");
      delay(2000);
      lcd.clear();
      lcd.print("Enter Password:");
      Serial.println("Enter Password:");
      lcd.setCursor(0, 1);
      i = 0;
      digitalWrite(led, LOW);
    }
    else{
      digitalWrite(11, HIGH);
      digitalWrite(buzzer, HIGH);
      lcd.clear();
      lcd.print("Access Denied...");
      Serial.println("Access Denied...");
      lcd.setCursor(0, 1);
      lcd.print("#.Change Password");
      Serial.println("#.Change Password");
      delay(2000);
      lcd.clear();
      lcd.print("Enter Password:");
      Serial.println("Enter Password:");
      lcd.setCursor(0, 1);
      i = 0;
      digitalWrite(buzzer, LOW);
    }
  }
}
void change(){
  int j = 0;
  lcd.clear();
  lcd.print("UR Current Password");
  Serial.println("UR Current Password");
  lcd.setCursor(0, 1);
  while (j < 4){
    char key = customKeypad.getKey();
    if (key){
      pass1[j++] = key;
      lcd.print(key);
      Serial.print(key);
      beep();
    }
    key = 0;
  }
  delay(500);

  if ((strncmp(pass1, pass, 4))){
    lcd.clear();
    lcd.print("Wrong Password...");
    Serial.println("Wrong Password...");
    lcd.setCursor(0, 1);
    lcd.print("Better Luck Again");
    Serial.println("Better Luck Again");
    delay(1000);
  }
  else{
    j = 0;
    lcd.clear();
    lcd.print("Enter New Password:");
    Serial.println("Enter New Password:");
    lcd.setCursor(0, 1);
    while (j < 4){
      char key = customKeypad.getKey();
      if (key)
      {
        pass[j] = key;
        lcd.print(key);
        Serial.print(key);
        EEPROM.write(j, key);
        j++;
        beep();
      }
    }
    lcd.print(" Done......");
    Serial.println(" Done......");
    delay(1000);
  }
  lcd.clear();
  lcd.print("Enter Ur Password:");
  Serial.println("Enter Ur Password:");
  lcd.setCursor(0, 1);
  customKey = 0;
}
void beep(){
  digitalWrite(buzzer, HIGH);
  delay(20);
  digitalWrite(buzzer, LOW);
}

Credits

Sathyajith Lakshan
3 projects • 1 follower
I am a student, absolutely crazy about electronics, IOT
Contact

Comments

Please log in or sign up to comment.