Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO Controlled Security System with Servo Lock and Keypad Interface

View and Edit Project In Cirkit DesignerImage of Arduino UNO Controlled Security System with Servo Lock and Keypad Interface

Circuit Documentation

Summary

This circuit is designed around an Arduino UNO microcontroller and includes a variety of components to demonstrate a simple security system. The system uses a 4x4 membrane matrix keypad for input, a servo motor as a locking mechanism, and two LEDs (red and green) to indicate the lock status. The Arduino UNO controls the servo based on the input from the keypad and lights up the corresponding LED. The circuit is powered by a USB power source or a 9V battery.

Component List

Arduino UNO

LED: Two Pin (red)

LED: Two Pin (green)

Servo

4X4 Membrane Matrix Keypad

Resistor (200 Ohms)

9V Battery

USB Power

Wiring Details

Arduino UNO

LED: Two Pin (red)

LED: Two Pin (green)

Servo

4X4 Membrane Matrix Keypad

Resistor (200 Ohms)

9V Battery and USB Power

Documented Code

Arduino UNO Code (sketch.ino)

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

Servo ServoMotor;
char* password = "427";  // change the password here, just pick any 3 numbers
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 RedpinLock  = 12;
int GreenpinUnlock = 13;

void setup()
{
  pinMode(RedpinLock,  OUTPUT);
  pinMode(GreenpinUnlock, OUTPUT);
  ServoMotor.attach(11);
  LockedPosition(true);
}

void loop()
{
  char key = keypad.getKey();
  if (key == '*' || key == '#')
  {
    position  = 0;
    LockedPosition(true);
  }
  if (key == password[position])
  {
    position  ++;
  }
  if (position == 3)
  {
    LockedPosition(false);
  }
  delay(100);
}

void LockedPosition(int locked)
{
  if (locked)
  {
    digitalWrite(RedpinLock,  HIGH);
    digitalWrite(GreenpinUnlock, LOW);
    ServoMotor.write(11);
  }
  else
  {
    digitalWrite(RedpinLock,  LOW);
    digitalWrite(GreenpinUnlock, HIGH);
    ServoMotor.write(90);
  }
}

This code is responsible for controlling the servo motor based on the input from the keypad. It also controls the red and green LEDs to indicate the lock status. When the correct password is entered, the green LED lights up, and the servo moves to the unlock position. If an incorrect key is pressed, the red LED lights up, and the servo remains in the locked position.