Door Security System

With the door security system, you can control it through the interface on the arduino.

Door Security System

Things used in this project

Hardware components

HARDWARE LIST
1 Arduino UNO
1 DFRobot I2C 16x2 Arduino LCD Display Module
1 Seeed Studio Grove - 12-Channel Capacitive Touch Keypad (ATtiny1616)
1 9V battery (generic)
1 SG90 Micro-servo motor
1 Linear Regulator (7805)

Hand tools and fabrication machines

 

Servo Motor, Premium Male/Male Jumper Wires

 

Premium Female/Male Extension Jumper Wires, 40 x 6" (150mm)

Story

 

First of all, hello. I like to share and make projects which occours to me. This is because of I like to make software with patterning enviroment. The project which named gate security system has been showed up in this way. Before, telling the project, I want to talk about the components on this project. It has;

 

System Interface 1

System Interface 1

 

System Interface 2

 

System Interface 2

 

I've made an interface on arduino. It can be emended by usingthe interface. The interface has options "yes" and "no"which is showed with "Y"and "N" letters. To pace on the keypad interface, A letter represents the left way, B letter represents the right way. The assent key is on D. The letter D is used to select the character you come to on the interface. Thus, you can pace on the interface and take actions.

 

System Interface 3

System Interface 3

 

 

Schematics

 

PROJECT CİRCUİT

 


 

Code

PROJECT CODE

Arduino

CODE
/*
    Hello, welcome to my code world, my project today is the door security system project.
    I am writing the codes on the project myself,
    I may have deficiencies, you can correct me and improve me,
    thank you in advance.

    My nickname is gncmuh and my name is Sabri GENC

    Good work on your code world :)

*/

#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <Wire.h>

Servo servo;
const byte servo_pin PROGMEM=3;
const byte rows PROGMEM=4;
const byte cols PROGMEM=4;

struct pins {
  const byte pinler[1] PROGMEM={2};
  byte row_pins[rows]={11,10,9,8}; 
  byte col_pins[cols]={7,6,5,4};
};
struct pins pin;
char key_board[rows][cols]={
  {'1','2','3','A'},          //A this character left direction  and  B this character right direction
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
LiquidCrystal_I2C lcd(0x27,16,2);
Keypad key=Keypad(makeKeymap(key_board),pin.row_pins,pin.col_pins,rows,cols);
char memory[4];
char direction_characters[4]={'<','>','N','Y'}; 
bool flag=false;
int incoming_key;
unsigned long timer=0;
byte counter=7; 
byte memory_counter=0;
char password[]="1998";  //  <-- In this project in real password
bool out_password=false;
void setup()
{
  Serial.begin(9600);
  Wire.begin(); 
  servo.attach(servo_pin);servo.write(0);
  screen_start();
}

void loop()
{
  screen_management();
  delay(1);
 
  
}
void screen_start() {
  if(!bool(0))
  {
    lcd.init();lcd.backlight();lcd.setCursor(1,0);
    lcd.print(F("GNCMUH PROTECH"));
    lcd.setCursor(4,1);
    for(int i=1; i<=8; i++) 
    {
      lcd.print(F("*"));delay(80); 
    }
    delay(1000);lcd.clear();
  }
}
void screen_management() {
  
  if(!bool(0))
  {
    if(flag==false)
    {
      first_page();
      flag=!flag;
    }
    if(flag==true)
    {
      here2:
      if(millis()-timer>2500)
      {
        timer=millis();
        lcd.setCursor(counter,1);lcd.blink();
      }
      incoming_key=key.getKey();
      lcd.setCursor(counter,1);
      if(incoming_key=='A' or incoming_key=='B' or incoming_key=='C' or incoming_key=='D')
      {
        if(incoming_key=='A') 
        {
          counter--;
          if(counter<6) counter=7;           
        }
        if(incoming_key=='B')
        {
          counter++;
          if(counter>8) counter=7;
        }       
        if(incoming_key=='D' and counter==8)
        {
          here:
          counter=7;
          lcd.clear();
          lcd.setCursor(0,1);lcd.print(direction_characters[0]);
          lcd.setCursor(6,1);lcd.print(direction_characters[2]);
          lcd.setCursor(8,1);lcd.print(direction_characters[3]);
          lcd.setCursor(15,1);lcd.print(direction_characters[1]);
          lcd.setCursor(1,0);
          lcd.print(F("ENTER PASSOWORD"));
          do
          { 
            incoming_key=key.getKey();
            lcd.setCursor(counter,1);
            if(incoming_key=='A')
            {
              counter--;
              if(counter<6) counter-=5;
              else if(counter==14) counter=7;
            }
            if(incoming_key=='B')
            {
              counter++;
              if(counter>8) counter+=6;
              else if(counter==1) counter=7;
            }
            if(incoming_key=='D' and counter==8)
            {
              second_page();
              if(atoi(memory)==atoi(password))
              {
                lcd.clear();lcd.print(F("CORRECT PASSWORD"));
                delay(500);lcd.clear();
                lcd.print(F("DOOR OPEN"));
                servo.write(90);
                delay(3000);
                lcd.clear();lcd.print(F("LOCKED"));
                delay(1000);
                first_page();
                goto here2;
              }
              else
              {
                lcd.clear();lcd.print(F("WRONG PASSWORD"));
                delay(1000);
                first_page();
                goto here2;
              }
            }
            if(incoming_key=='D' and counter==6)
            {
              first_page();
              break;
            }
            if(incoming_key=='D' and counter==15)
            {
              counter=7;
              lcd.clear();lcd.setCursor(1,0);
              lcd.print(F("CHANGE PASSWORD"));
              lcd.setCursor(0,1);lcd.print(direction_characters[0]);
              lcd.setCursor(6,1);
              for(int i=2; i<=3; i++)
              {
                lcd.print(direction_characters[i]);lcd.print(F(" "));
              }
              if(!bool(0))
              {
                while(true)
                {
                  incoming_key=key.getKey();
                  if(incoming_key=='A')
                  {
                    counter--;
                    if(counter<6) counter=0;
                  }
                  if(incoming_key=='B')
                  {
                    counter++;
                    if(counter>8) counter=7;
                    else if(counter==1) counter=7;
                  }
                  if(incoming_key=='D' and counter==0)
                  {
                     counter=7;
                     goto here;
                  }
                  if(incoming_key=='D' and counter==6)
                  {
                    counter=7;
                    goto here;
                  }
                  if(incoming_key=='D' and counter==8)
                  {
                    third_page();
                    delay(2000);
                    counter=7;
                    first_page();
                    goto here2;
                  }
                  lcd.setCursor(counter,1);
                  delay(1);
                }
                
              }
            }
            if(incoming_key=='D' and counter==0)
            {
              counter=7;
              first_page();
              break;
            }
            delay(5);
            
          }while(!bool(0));
        }
      }
    }
  }
}
void first_page() {
  servo.write(0);lcd.clear();
  lcd.setCursor(3,0);
  lcd.print(F("HOME PAGE"));lcd.setCursor(6,1);
  for(int i=0; i<4; i++) 
  {
    if(i!=2 and i!=3)
    {
      lcd.print(direction_characters[i]);lcd.print(F(" "));
    }
    delay(1);
  }
  lcd.blink();
}

void second_page() {
  lcd.clear();lcd.noBlink();
  lcd.setCursor(1,0);
  lcd.print(F("ENTER PASSWORD"));
  memory_counter=0;
  if(!bool(0))
  {
    while(memory_counter<4)
    {
      char incoming_character=key.getKey();
      if(incoming_character)
      {
        lcd.setCursor(memory_counter+5,1);
        lcd.print(F("*"));
        memory[memory_counter]=incoming_character;
        memory_counter++;
      }
      delay(1);
    }
    memory_counter=0;
    counter=7;
    delay(300);
  }
}
void third_page() {
  memory_counter=0;
  lcd.clear();lcd.noBlink();
  lcd.print(F("CURRENT PASSWORD"));
  while(memory_counter<4)
  {
      char incoming_character=key.getKey();
      if(incoming_character)
      {
        lcd.setCursor(memory_counter+5,1);
        lcd.print(F("*"));
        memory[memory_counter]=incoming_character;
        memory_counter++;
      }
      delay(1);
  }
  delay(300);
  if(atoi(password)==atoi(memory))
  {
    memory_counter=0;
    lcd.clear();lcd.setCursor(1,0);lcd.print(F("CORRECT PASSWORD"));
    delay(1000);
    lcd.clear();lcd.print(F("NEW PASSWORD"));
    while(memory_counter<4)
    {
      char incoming_character=key.getKey();
      if(incoming_character)
      {
        lcd.setCursor(memory_counter+5,1);
        lcd.print(F("*"));
        memory[memory_counter]=incoming_character;
        memory_counter++;
      }
      delay(1);
    }
    for(int i=0; i<4; i++)
    {
      password[i]=memory[i];
    }
    delay(300);
    memory_counter=0;
    delay(500);
    lcd.clear();lcd.setCursor(0,0);
    lcd.print(F("PASSWORD CHANGED"));counter=7;
  }
  else
  {
    lcd.clear();lcd.print(F("PASSWORD INCORRECT"));
    delay(1000);
    counter=7;
    first_page();
  }
}

The article was first published in hackster, September 8, 2022

cr: https://www.hackster.io/gncmuh/door-security-system-f16af0

author: Sabri GENÇ

License
All Rights
Reserved
licensBg
0