--> Project V - 1. Kunci Elektrik dengan Password menggunakan Modul Keypad berbasis Arduino | Tutorial arduino lengkap

Friday, August 4, 2017

Project V - 1. Kunci Elektrik dengan Password menggunakan Modul Keypad berbasis Arduino

| Friday, August 4, 2017
Kunci Elektrik dengan Password menggunakan Modul Keypad



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



                            Solenoid Lock Door  (Source)                     Modul Keypad 4x4 (Source)




                       Modul Relay 1 Channel (Source)                       Buzzer (Source)


Diagram Blok




Schematics


Koneksi Arduino UNO dengan LCD

Koneksi Keypad 4x4


Koneksi Arduino


Source Code/Sketch
#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;
//----------------------------INISIALISASI KONEKSI LCD 2X16
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
//----------------------------INISIALISASI 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==pw_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==pw_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]=' ';
}
}
}
}
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


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


 8. Tekan tombol pagar ( # ) untuk menguncinya.


 9. Selanjutnya masuk pada kondisi pintu terkunci. Untuk membukanya diperlukan password yaitu
     berupa kombinasi 6 digit angka yang di-entri melalui keypad

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


 11. Jika password benar maka akan tampil


12. Buzzer juga akan berbunyi : “beep – beep” , kemudian relay aktif dan selenoid akan terbuka.

13. Jika password salah
     
      Buzzer akan berbunyi : “beep .........” kemudian anda diminta memasukkan password lagi


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


15. Untuk mengganti password , pastikan alat dalam kondisi terkunci, kondisi ketika kita akan entri
      password untuk membuka kunci, atau tampilan dalam kondisi seperti ini.


16. Kalau akan membuka kunci kan kita tinggal entri passwordnya, lain halnya untuk mengganti
      password , tekan tombol bintang (asterisk) *.


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


18. Jika password benar maka akan tampil :


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


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


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


22. Tekan “D” untuk menyimpan password baru.


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



24. Untuk membuka kunci sekarang memakai password yang baru.
25. OK.



Video Project  V - 1. Kunci Elektrik dengan Password menggunakan Modul Keypad berbasis Android






KAMI MELAYANI JASA PEMBUATAN HARDWARE ATAU SOFTWARE BERBASIS ARDUINO

KONTAK KAMI 085743320570 (adi sanjaya)

Related Posts

3 comments:

  1. tolong bisa diperjelas rangkaian keypadnya ? itu di gambarnya keypad 4x4 mirip punya saya , tapi pas di skema kok keypadnya beda kaya kalkulator gitu maksudnya gmna ya mohon pencerahannya

    ReplyDelete
  2. Gimana kalo lupa password bang ? Bisa direset lagi ngga ? Ato harus bongkar pintu ?

    ReplyDelete
  3. password nya kenapa salah terus ya? padahal sudah dimasukkan angka 1 sampai 6 x
    mohon bantuannya mas

    ReplyDelete