Anda di halaman 1dari 19

1 Inkubatek [supported by : www.tokotronik.

com]

Kunci Elektrik dengan Password


Sistem Kerja Alat:
Arduino UNO sebagai alat kunci elektronik dengan pengaman berupa password yang diinput
melalui keypad. Alat ini terdiri dari Arduino UNO sebagai sistem pemroses & pengendali
utama dari sistem. Keypad dipakai untuk input data kode password untuk menentukan
apakah password benar sehingga kunci terbuka atau password salah sehingga kunci
tertutup. Dipakai juga untuk mengganti password lama dengan password baru. LCD
digunakan untuk display atau tampilan ketika entri password maupun menu ganti password.
Relay sebagai aktuator yang akan mengontrol langsung solenoid. Terakhir solenoid
digunakan untuk membuka atau menutup kunci.

Kebutuhan Hardware :
 Keypad 4x4
 Modul LCD 2x16
 Modul Relay 5Vdc
 Solenoid
 Buzzer
 Modul Arduino UNO
 Power supply +9Volt

INKUBATEK

Solenoid Buzzer

INKUBATEK

KEYPAD 4X4

Modul Relay

Diagram Blok:
LCD
Ar
du
Keypad in Relay 1 Solenoid
o
U Buzzer
N

Schematics

INKUBATEK

Koneksi Arduino UNO dengan LCD:


Pin ARDUINO LCD
2 RS
3 EN
4 D4
5 D5
6 D6
7 D7
Koneksi Keypad 4x4:
Pin Keypad Pin ARDUINO
1 Pin 10
2 Pin 11
3 Pin 12
4 Pin 13
A Pin A0
B Pin A1
C Pin A2
D Pin A3

Koneksi ARDUINO:
Pin ARDUINO Koneksi
Pin 8 Relay
Pin 9 Buzzer

Source Code/Sketch :
/*************************************
* Program : Project 71. Kunci Elektrik dengan Password
* Input : Keypad 4x4
* Output : LCD 2x16, BUZZER, Relay, Solenoid
* 125 Proyek Arduino Inkubatek
* www.tokotronik.com
*
***********************************/
#include <Keypad.h>
#include
<LiquidCrystal.h>
#include <EEPROM.h>

unsigned char key,menu,urut;


unsigned char pw1,pw2,pw3,pw4,pw5,pw6,i;
unsigned char
pw_kpd1,pw_kpd2,pw_kpd3,pw_kpd4,pw_kpd5,pw_kpd6; unsigned
char cek,cnt;
unsigned char fkpd;
char
pw[7],pw_kpd[7];
char s,t;
//----------------------------NISIALISASI KONEKSI LCD 2X16
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
//----------------------------NISIALISASI KONEKSI KEYPAD 4X4
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]={A0,A1,A2,A3};
byte colPins[COLS]={10,11,12,13};
Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);

void setup()
{
pinMode(8,OUTPUT)
;
pinMode(9,OUTPUT)
; digitalWrite(8,0);
digitalWrite(9,0);

lcd.begin(16, 2);
lcd.print(" Kunci
Elektrik");
lcd.setCursor(0,1);
lcd.print("Dengan
Password"); delay(2000);
// cek alamat
0 cek=EEPROM.read(0);
if(cek==0xFF){
cek=1;
EEPROM.write(0,'1')
;
pw1='1'; EEPROM.write(1,'1');
pw2='1'; EEPROM.write(2,'1');
pw3='1'; EEPROM.write(3,'1');
pw4='1'; EEPROM.write(4,'1');
pw5='1'; EEPROM.write(5,'1');
pw6='1'; EEPROM.write(6,'1');
}
else{
pw1=EEPROM.read(1)
;
pw2=EEPROM.read(2)
;
pw3=EEPROM.read(3)
;
pw4=EEPROM.read(4)
;
pw5=EEPROM.read(5)
;
pw6=EEPROM.read(6);
}
fkpd=0;
delay(200)
;
}

void loop()
{
// display time
digitalWrite(8,1);
lcd.clear();
lcd.print("Silakan
kunci...");
lcd.setCursor(0,1);
lcd.print("Tekan #");
fkpd=2;
goKeypad()
; lcd.clear();
lcd.print("Pintu
Terkunci"); delay(3000);
pass:
lcd.clear();
lcd.print("Masukan
Password"); lcd.setCursor(0,1);
fkpd=1;
menu=0;
goKeypad()
;
if(menu==4) goto pass;
}
// keypad
void goKeypad(){
do{
key=keypad.getKey()
; if(key != NO_KEY){

if(key=='*' && fkpd==1)


{ lcd.clear();
lcd.print("Ganti
Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
menu=1;
delay(300);
}

else if(key=='#' && fkpd==2)


{ fkpd=0;
digitalWrite(8,0)
; delay(250);
}

else if ((key=='C')&&(fkpd == 1)){ //C


if(menu==3){
lcd.clear();
lcd.print("PW
baru:"); menu=2;
for(t=0;t<6;t++)pw_kpd[t]='
'; cnt=0;
}
else if(menu==2)
{ menu=4;
fkpd=0;
for(t=0;t<6;t++)pw_kpd[t]='
'; cnt=0;
}
else if((menu==1)||(menu==0))
{ menu=4;
fkpd=0; for(t=0;t<6;t+
+)pw_kpd[t]=' '; cnt=0;
}
delay(250);
}

else if (key=='D'&& menu==3)


{ lcd.clear();
lcd.print("Simpan PW
Baru..");
EEPROM.write(1,pw_kpd[0]);
EEPROM.write(2,pw_kpd[1]);
EEPROM.write(3,pw_kpd[2]);
EEPROM.write(4,pw_kpd[3]);
EEPROM.write(5,pw_kpd[4]);
EEPROM.write(6,pw_kpd[5]);
EEPROM.write(0,1);
pw1 =
pw_kpd[0]; pw2
= pw_kpd[1];
pw3 =
pw_kpd[2]; pw4
= pw_kpd[3];
pw5 =
pw_kpd[4]; pw6
= pw_kpd[5];
fkpd = 0; for(t=0;t<6;t+
+)pw_kpd[t]=' '; delay(3000);
menu = 4;
}

else if(menu<2 && fkpd==1 && key!='A' && key!


='B' && key!='C' && key!='D' && key!='*' && key!
='#'){ cek_password();
}
else if(menu==2 && fkpd==1&& key!='A' && key!
='B' && key!='C' && key!='D' && key!='*' && key!
='#'){ entri_password();
}

}
}
while(fkpd);
}

void cek_password()
{ pw_kpd[cnt]=key;
cnt++;
lcd.print('*');
// lcd.print(char(key));
if((cnt==6)&&(menu==0))
{ delay(500);

if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2])&&(pw4==pw_kpd[3])&&(pw5==
p w_kpd[4])&&(pw6==pw_kpd[5])){
lcd.clear();
lcd.print("Password
Benar"); lcd.setCursor(0,1);
lcd.print("Silakan Masuk");
digitalWrite(8,1);
digitalWrite(9,1);
delay(200);
digitalWrite(9,0);
delay(200);
digitalWrite(9,1);
delay(200);
digitalWrite(9,0);
cnt=0;
fkpd=0
;
s=0;
for(t=0;t<6;t++)pw_kpd[t]='
'; delay(3000);
}
else {
lcd.clear();
lcd.print("Password
Salah"); s++;
if(s < 3){
digitalWrite(9,1)
; delay(2000);
digitalWrite(9,0)
; lcd.clear();
lcd.print("Masukan
Password"); lcd.setCursor(0,1);
cnt=0;
for(t=0;t<6;t+
+) pw_kpd[t]='
';
}
else if (s==3)
{ lcd.clear()
;
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5
Menit"); for(i=0;i<75;i++){
digitalWrite(9,1)
; delay(2000);
digitalWrite(9,0)
; delay(2000);
}
lcd.clear();
lcd.print("Masukan
Password"); lcd.setCursor(0,1);
cnt=0
; s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
}
else if((cnt==6)&&(menu==1)){

if((pw1==pw_kpd[0])&&(pw2==pw_kpd[1])&&(pw3==pw_kpd[2])&&(pw4==pw_kpd[3])&&(pw5==
p w_kpd[4])&&(pw6==pw_kpd[5])){
lcd.clear();
lcd.print("Password
Benar");
lcd.setCursor(0,1);
delay(2000);
lcd.clear();
lcd.print("PW
baru:"); cnt=0;
menu=2
; s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
else {
s+
+;
if(s < 3){
lcd.clear();
lcd.print("Password
Salah"); cnt=0;
delay(2000)
; lcd.clear();
lcd.print("Ganti Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
for(t=0;t<6;t++)pw_kpd[t]='
';
}
else if (s==3)
{ lcd.clear()
;
lcd.print("Anda 3x Salah");
lcd.setCursor(0,1);
lcd.print("Tunggu 5
Menit"); for(i=0;i<75;i++){
digitalWrite(9,1)
; delay(2000);
digitalWrite(9,0)
; delay(2000);
}
lcd.clear();
lcd.print("Ganti
Password");
lcd.setCursor(0,1);
lcd.print("PW lama=");
cnt=0;
s=0;
for(t=0;t<6;t++)pw_kpd[t]=' ';
}
}
}
}
10 Inkubatek [supported by : www.tokotronik.com]

void entri_password()
{ lcd.print(char(key))
; pw_kpd[cnt]=key;
cnt++;
if(cnt==6){
lcd.setCursor(0,1)
;
lcd.print("D=save,C=cancel")
; menu=3;
cnt=0;

}
}

Jalannya Alat :
1. Koneksikan antara Arduino UNO dengan peripheral lain (keypad dll) seperti pada
rangkaian (skematik).
2. Pasang power supply (adaptor 12 V) ke konektor yang terhubung dengan
solenoid kemudian hidupkan (colokkan ke sumber PLN 220V).
3. Pasang power supply 9 Vdc ke konektor DC Arduino dan kemudian hidupkan (colokkan
ke sumber PLN 220V).
4. POWER SUPPLY JANGAN SAMPAI TERTUKAR ANTARA 12V DAN 9V !!!
5. LAMA SELENOID ON (BUKA KUNCI) MAKSIMAL SELAMA 60 DETIK!!! JANGAN TERLALU
LAMA MENGHIDUPKAN SELENOID KARENA BISA MENYEBABKAN SELENOID PANAS
DAN MUDAH MATI!!! (TERGANTUNG JENIS SOLENOID)
6. Tampilan pertama pada LCD :
Kunci Elektrik Dengan Password

7. Setelah 2 detik berikutnya akan tampil perintah untuk mengunci (selenoid aktif) :

Silakan kunci..
Tekan #
8. Tekan tombol pagar ( # ) untuk menguncinya.

Pintu Terkunci

9. Selanjutnya masuk pada kondisi pintu terkunci. Untuk membukanya diperlukan


password yaitu berupa kombinasi 6 digit angka yang di-entri melalui keypad :
11 Inkubatek [supported by : www.tokotronik.com]

Masukan Password

10. Untuk nilai password awal, kode passwordnya adalah “111111” (angka 1 enam kali).
Tekan angka “1” sejumlah 6x, display di :

Masukan Password
******
11. Jika password benar maka akan tampil :

Password
Benar Silakan
Masuk
12. Buzzer juga akan berbunyi : “beep – beep” , kemudian relay aktif dan selenoid akan
terbuka.
13. Jika password salah :
Password Salah

Buzzer akan berbunyi : “beep..........” kemudian anda diminta memasukkan password


lagi :
Masukan Password

14. Kesempatan memasukkan password adalah 3x. Jika sudah 3x salah terus maka harus
menunggu 5 menit untuk dapat entri password lagi :

Anda 3x Salah
Tunggu 5
Menit
15. Untuk mengganti password , pastikan alat dalam kondisi terkunci, kondisi ketika kita
akan entri password untuk membuka kunci, atau tampilan dalam kondisi seperti ini.

Masukan Password

16. Kalau akan membuka kunci kan kita tinggal entri passwordnya, lain halnya untuk

mengganti password , tekan tombol bintang (asterisk) *.


Ganti Password
PW lama=
17. Selanjutnya, masukkan password lama. Jika alat belum pernah diganti passwordnya,
maka password awal adalah : “ 111111 “ (angka 1 enam kali).

Ganti Password
PW
lama=******
18. Jika password benar maka akan tampil :

Password Benar

19. Sekitar 2 detik kemudian akan tampil permintaan mengisi password yang baru :

PW baru :

20. Masukkan password baru yang dikehendaki. Berupa kombinasi angka 6 digit.
Misalnya (contoh saja ya..) : “234567”
PW baru : 234567

21. Kemudian muncul pilihan untuk simpan password atau cancel. Tekan “ D” jika akan
menyimpan (mengganti password) atau “C” jika cancel.

PW baru : 234567 D=save, C=cancel

22. Tekan “D” untuk menyimpan password baru.

Simpan PW Baru..

23. Selanjutnya akan kembali ke kondisi normal (kunci tertutup).

Masukan Password

24. Untuk membuka kunci sekarang memakai password yang baru.


25. OK.
[Uji coba memakai hardware “Master Mikro ARDUINO V2” :
http://tokotronik.com/master-mikro-arduino-v2/ ]

Anda mungkin juga menyukai