Project showcase
Motion Sensing Alarm With Keypad & Password

Motion Sensing Alarm With Keypad & Password © CC BY-SA

An Arduino Uno-based alarm with motion sensor, three LED outputs and a keypad with password input.

  • 16,685 views
  • 48 comments
  • 52 respects

Components and supplies

About this project

This is a motion sensing alarm that might be used for many different things.

Code

Motion Sensing Alarm with Keypad & PasswordArduino
#include <Keypad.h>                // library for keyboard
#include <Password.h>              // library for password

Password password = Password( "1234" );  // password

const byte rows = 4;                     // four rows       
const byte cols = 4;                     // three columns
char keys[rows][cols] = {                // keys on keypad

{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},

};

byte rowPins[rows] = {9,8,7,6};
byte colPins[cols] = {5,4,3,2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);



#define sensorz A3      // pin for PIR sensor data
//#define contact 0     // pin for on/off alarm
#define alrm 12      // pin for siren, buzzer
#define redLed A2        //  pin for red led
#define greenLed A0        // pin for green led
#define yellowLed A1    // pin for blue led
int contact = 10;       //used to immediately on/off alarm
int val;
int ledBlink;

int sensorzData;
unsigned long ceas, timpmemorat;

int intarziereactivare = 20;    // To delay for standby to armed
int intarzieredezactivare = 10; // To delay for triggered to alarm activated
int timpurlat = 10;             // Time of alarm is on

// This is the variable for states "0"
char caz = 0;

int sistem = 0;      // system is 0 for off and 1 for on


/*
States for 

  0. - off
  1. - stand-by
  2. - waitting
  3. - countdown
  4. - alarm
  
*/

void setup()
  {
  keypad.addEventListener(keypadEvent); // an object is created for tracking keystrokes
  
  Serial.begin(9600);  //Used for troubleshooting
  pinMode(alrm, OUTPUT);
  pinMode(sensorz, INPUT);
  pinMode(contact, INPUT);
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  digitalRead(contact);
  Serial.println("System startup"); //Used for troubleshooting
  Serial.println("Alarm button status:"); //used for troubleshooting
  Serial.println(digitalRead(contact)); //used for troubleshooting
  }

void loop()
  
  {
     
  ceas = millis();    // read the internal clock
  val = digitalRead(contact);
  
keypad.getKey();
 
     
    if (sistem%2 == 0)
    {
    // alarm is off
    digitalWrite(greenLed, LOW);
    digitalWrite(redLed, LOW);
    digitalWrite(yellowLed, HIGH);
    //Serial.println(contact); //Used for troubleshooting

    digitalWrite(alrm, LOW);
    caz = 0;
   // Serial.println("System is OFF !"); // Used for troubleshooting

    }

  else
    {
    // alarm is on
    if(caz == 0) 
     {
     caz = 1;
     timpmemorat = ceas;
     digitalWrite(yellowLed, HIGH);
     }

    if(caz == 1)              // system waiting
      {

      if ((ceas%1000)<500) digitalWrite(greenLed, HIGH);
      else digitalWrite(greenLed, LOW);
 keypad.getKey();
      if(ceas >= timpmemorat + intarziereactivare * 1000) {caz = 2;}
      //Serial.println("System is arming !"); // Used for troubleshooting
      }
      
    if(caz == 2)              // system is armed
      {
      digitalWrite(greenLed, HIGH); 
 keypad.getKey();
   
      sensorzData = digitalRead(sensorz);  
      //Serial.print("sensorzdData = "); //Used for troubleshooting
      //Serial.println(sensorzData); //Used for troubleshooting
   
  //    if(sensorzData > 600) {caz = 3; timpmemorat = ceas;}
     if(sensorzData == HIGH)
       {
       caz = 3;
       timpmemorat = ceas;
       digitalWrite(greenLed, LOW);
       }
      Serial.println("System is armed !"); // Used for Troubleshooting
      }

    if(caz == 3)              // system is triggered and countdown
      {             

      if ((ceas%500)<100) digitalWrite(redLed, HIGH);
      else digitalWrite(redLed, LOW);
 keypad.getKey();
      if(ceas >= timpmemorat + intarzieredezactivare * 10) {caz = 4; timpmemorat = ceas;}
      Serial.println("System is triggered and is countdown !"); //Used for troubleshooting
      }

    if(caz == 4)              // siren (buzzer) is active
      {
      //digitalWrite(alrm, HIGH);
      digitalWrite(redLed, HIGH);
      Serial.println("Siren is active !"); //Used for troubleshooting


// For siren

    //tone( 10, 10000, 100);  // Simple Alarm Tone
    for(double x = 0; x < 0.92; x += 0.01){  // Elegant Alarm Tone
        tone(10, sinh(x+8.294), 10);
        delay(1);
        }   
    
      
 keypad.getKey();      
      if(ceas >= timpmemorat + timpurlat * 1000) {caz = 2; digitalWrite(alrm, LOW); digitalWrite(redLed, LOW);}
      }
    }
  }
  
  //take care of some special events
void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
  Serial.print("Pressed: ");
  Serial.println(eKey);
  switch (eKey){
    case '*': checkPassword(); break;
    case '#': password.reset(); break;
    default: password.append(eKey);
     }
  }
}

  
  void checkPassword(){
  if (password.evaluate()){
    Serial.println("Success"); //Used for troubleshooting
  sistem++;
  password.reset();
    Serial.println("Disarmed");//Add code to run if it works
  }else{
    Serial.println("Wrong"); //Used for troubleshooting
    //add code to run if it did not work
    ledBlink = 0;
    while (ledBlink <= 5){
    digitalWrite(redLed, HIGH);
    delay(100);
    digitalWrite(redLed, LOW);
    delay(100);
    ledBlink++;
    }
    password.reset();
  }
}

Schematics

Motion Sensing Alarm with Keypad & Password
motion_sensing_alarm_with_keypad_and_password_s531qaD2ns.fzz
Motion Sensing Alarm with Keypad & Password
Motion sensing alarm with keypad and password bb ujnzytiwzd

Comments

Similar projects you might like

Complete Digital Clock Including Alarm and Motion Sensor

Project tutorial by LAGSILVA

  • 12,677 views
  • 11 comments
  • 50 respects

Buzzer Alarm System With Help Of Arduino

by Team ONYX

  • 38,031 views
  • 5 comments
  • 21 respects

Door Alarm With Ultrasonic Sensor

Project showcase by MattG

  • 7,116 views
  • 3 comments
  • 10 respects

Sump Pit Alarm

Project showcase by loupalladino

  • 2,130 views
  • 5 comments
  • 13 respects

Motion Following Motorized Camera Base

Project tutorial by Lindsay Fox

  • 113,603 views
  • 68 comments
  • 286 respects

Getting started with IMU (6 DOF) motion sensor

Project tutorial by Aritro Mukherjee

  • 72,564 views
  • 19 comments
  • 42 respects
Add projectSign up / Login