Motor Driver
Circuit (H-Bridge):
Two
H-bridge motor driver circuits are used for driving the motors of the Door of
the bank vault. One is used to rotate the door & another one is used to open/close
the bolt of the door for locking purpose.
A
PIC micro controller is used to operate the H-Bridges; it was programmed in a
way that it sends
command
to the H-Bridge to drive the motors clockwise or anti-clockwise for a certain
period of time. The PIC micro controller gets it’s command from the Arduino
Module after inserting correct or wrong password by the Keypad , if the
password is accepted , then the Arduino sends signal to open the door
to
the PIC micro controller, then the PIC micro controller drives the bolt motor
clockwise for 2 seconds &
then
the door rotation motor for another 4 seconds , when closing , after getting
command from the Arduino it sends the command to the PIC micro controller ,
then the pic drives H-bridges in such a way that , the door rotation motor
rotates in opposite direction for 4 seconds & then the bolt motor rotates
in opposite direction for another 2 seconds & locks the door. The circuit
diagram of a common H-Bridge is given below:
H-Bridge Circuit
Input Logic Table of the H-Bridge
Operating Principle
of the System:
As
it has been said before, it has 3 step security layer, first of all is password
protection, a pre- programmed password can be saved & modified if necessary
by the user, only authorized persons will know the password, after pressing the
password on the keyboard, if the password is accepted, the door will open &
will disable all the alarm systems, if the password is not accepted it will
ring a warning sound & alert the user, if wrong password is inserted more
than 3 times, it will secure the door & alert the law of enforcement team.
The
second part of the security layer is physical interrupt alarm, a ‘Laser’ near
to the door is aimed at a LDR sensor, if by any chance , anyone cut the bolts
of the door or blow it away, the broken particle of the door or the door itself
will cut the laser & will trigger the alarm.
The
third part of the protection scheme is thermal security system, if anyone plans
to get into the vault by breaking the vault floor or wall; the PIR sensor will
detect the thermal movement & will alarm the trigger instantly. The second
& third part of the protection scheme is only activated when the door is
locked & de-activated when the door is unlocked.
Features of this
system:
1.
Full proof security system.
2.
Can be monitored & controlled from distant main office wirelessly by Xbee
module.
3.
Triple layer security system.
4.
Reliable & Durable.
5.
Can be used as Home Security System or in Museum as well as Bank Vault.
6.
Low power consumption, only 2.4mWatts.
7.
No need to keep eye on surveillance continuously.
8.
Alert sound & can call law enforcement team if necessary.
9.
Battery Operated , can be backed up & also mains operated.
10.
24X7 online protection
11.
Heavy duty vault door is controlled by geared motor
12.
Auto locking & turning on the Alarm after shutting the vault door.
13.
The password can be encrypted & the micro controller can be code protected.
14.
Highly sensative thermal sensor for burglars.
15.
Each PIR sensors can cover 10-45 meters.
16.
More PIRs can be connected parallaly for larger space.
17.
Physical interrupt system for blown door particle & man made interruption.
18.
Low cost operating system using Arduino module[ATmega328] in C programming
language.
19.
Motor driver using PIC16F84A & two high current capacity H-bridge circuits.
20.
Overall cost effective & parts are easily available on the market.
Programming the
micro controllers:
Compiler:
Arduino IDE, Micro controller: ATmega 238
#include
"Keypad.h"
#include
"LiquidCrystal.h"
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] = {
6,
7, A5, A4}; //connecting to the row pinouts of the keypad byte colPins[COLS] =
{
A3,
A2, A1, A0}; // connecting to the column pinouts of the keypad
Keypad
keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
char
PIN[6]={'1','2','3','4','5','6'}; // The Password initially inserted in the
program
char
attempt[6]={0,0,0,0,0,0}; // used for comparison
int
z=0;
LiquidCrystal
lcd(12, 11, 5, 4, 3, 2);
void
setup()
{
lcd.begin(16, 2);
pinMode(A0,
INPUT);
pinMode(A1,
INPUT);
pinMode(A2,
INPUT);
pinMode(A3,
INPUT);
pinMode(A4,
INPUT);
pinMode(A5,
INPUT);
pinMode(6,
INPUT);
pinMode(7,
INPUT);
pinMode(8,
OUTPUT);
pinMode(9,
OUTPUT);
pinMode(10,
OUTPUT);
incorrectPIN();
lcd.setCursor(0,
0);
lcd.print("
Press '*' & ");
lcd.setCursor(0,
1);
lcd.print("
Enter Password "); }
void
correctPIN() // do this if correct PIN entered
{
lcd.clear();
delay(1);
lcd.setCursor(0,
0);
lcd.print("The
Password is: ");
lcd.setCursor(0,
1);
lcd.print(" Accepted
");
delay(1000);
digitalWrite(8,
LOW);
digitalWrite(9,
HIGH);
digitalWrite(10,
LOW);
lcd.clear();
delay(1);
lcd.setCursor(0,
0);
lcd.print("Security
Sensors");
lcd.setCursor(0,
1);
lcd.print("
Are Disabled ");
delay(500);
digitalWrite(9,LOW);
delay(1500);
lcd.clear();
lcd.setCursor(0,
0);
lcd.print("
Press '#' to ");
lcd.setCursor(0,
1);
lcd.print("Enable
Security");}
void
incorrectPIN() // do this if incorrect PIN entered
{
lcd.clear();
lcd.setCursor(0,
0);
lcd.print("
The Password is ");
lcd.setCursor(0,
1);
lcd.print(" not Accepted ");
digitalWrite(8,
HIGH);
digitalWrite(9,LOW);
delay(500);
digitalWrite(8,LOW);
delay(1400);
lcd.clear();
lcd.setCursor(0,
0);
lcd.print("Security
Sensors");
lcd.setCursor(0,
1);
lcd.print("
Are Enabled ");
delay(2000);
digitalWrite(10,
HIGH);
delay(1000);
lcd.clear();
lcd.setCursor(0,
0);
lcd.print("
Press '*' & ");
lcd.setCursor(0,
1);
lcd.print("
Enter Password "); }
void
checkPIN()
{
int correct=0;
int
incorrect=0;
for
(int q=0; q<6 o:p="" q="">6>
{ if (attempt[q]==PIN[q])
{ correct++; }}
if
(correct==6)
{
correctPIN(); }
else
{incorrectPIN();
{incorrect++;}
if
(incorrect==3)
{
lcd.clear();
lcd.setCursor(0,
0);
lcd.print("Warning!!!");
lcd.setCursor(0,
1);
lcd.print("
Alarm Enabled ");
}}
for
(int zz=0; zz<6 attempt="" o:p="" wipe="" zz="">6>
{
attempt[zz]=0; }}
void
readKeypad()
{
char key = keypad.getKey();
if
(key != NO_KEY)
{ switch(key)
{ case '*':
delay(10);
z=0;
break;
case
'#':
delay(100);
// for extra debounce
checkPIN();
break;
default:
attempt[z]=key;
z++; }}}
void
loop()
{
readKeypad();}
Compiler: MikroC
for PIC, Micro controller: PIC16F84A
void
main()
{ TRISA=0b00000011;
TRISB=0b00000000;
while(1)
{ if(RA0_bit==1)
{
RB4_bit=1;
RB5_bit=0;
RB0_bit=1;
RB1_bit=0;
delay_ms(2000);
RB0_bit=0;
delay_ms(1000);
RB3_bit=1;
RB2_bit=0;
delay_ms(2000);
RB3_bit=0;
}
else
if(RA1_bit==1)
{ delay_ms(200);
RB5_bit=1;
RB4_bit=0;
RB2_bit=1;
RB3_bit=0;
delay_ms(2000);
RB2_bit=0;
delay_ms(1000);
RB1_bit=1;
RB0_bit=0;
delay_ms(2000);
RB1_bit=0;
}
else
{
RB0_bit=0;
RB1_bit=0;
RB2_bit=0;
RB3_bit=0;
}
}
}
Photo session:
Picture: The Arduino Module in
the Project
Picture: Keypad & LCD
interface
Picture: Door
Controller H-Bridge & LDR Sensor Circuit
Picture: Circuit
of the LDR Sensor & Buzzer
Picture: The
bolted vault door
Picture:
Complete Bank Vault Security Project
Picture: The
Project was displayed in a Project Exhibition in AUST, Bangladesh
Picture: Team
αlpha ( Ahsanullah University Of Science & Technology)
0 on: "Bank Vault Security System with Password Protection (2nd Part)"