Pada tulisan kali ini ialah lanjutan dari Cara menggunakan keypad 4×4 Arduino dan LCD 16×2 I2C yang telah dikembangkan sebagai sistem pengaman. Adapun project lanjutannya yang telah dikembangkan adalah cara membuat kunci pintu dengan password menggunakan keypad 4×4 dan arduino. Selain itu tentunya masih ada beberapa komponen lagi seperti yang akan dijelaskan dibawah ini.
Cara kerja sistem kunci pintu Arduino
Sekarang kita masuk ke pembahasan mengenai rangkaian kerja sistem pengaman kunci pintu ini. Pada alat ini tentunya masih menggunakan Arduino dan keypad 4×4 sebagai input password. Sedangkan LCD I2C 16×2 untuk menampilkan password pin yang kita input.
BACA JUGA : pengenalan module relay
Sistem pengaman dari alat kunci pintunya menggunakan Selenoid door lock 12V.
Selenoid door lock merupakan Kunci elektronik yang prinsip kerjanya menggunakan elektromagnetik. ketika diberi tegangan 12 volt maka kunci akan terbuka. Untuk mengendalikan Selenoid door lock dari arduino dibutuhkan rangkaian antarmuka atau driver.
Salah satunya dapat menggunakan relay 5 volt. Dengan menggunakan relay ini maka Selenoid door lock dapat dikendalikan oleh mikrokontroler pada Arduino.
Sedangkan Buzzer yang kita pasangkan pada rangkaian kunci pintu otomatis berfungsi untuk memberikan tanda bunyi saat password yang kita masukan sudah benar atau salah.
Komponen kunci pintu Arduino
Setelah mengetahui rangkaian kerja dari sistem yang akan kita buat, langkah selanjutnya adalah menyiapkan beberapa komponen sebagai berikut :
- Keypad 4×4
- Arduino uno
- Project board
- LCD 16 x 2 I2C
- Kabel jumper
- Resistor 220 Ohm
- Buzzer
- Relay 5V Modul 1 Channel
- Selenoid door lock 12V
- Terminal Block
- Adaptor 12V
- Jack DC
Skema Rangkaian & Sketch Program
Setelah mempersiapkan komponen, langkah selanjutnya adalah menghubungkan komponennya seperti tampak gambar rangkaian kunci pintu arduino dibawah ini :
Sketch Program kunci pintu Arduino
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define BUZZ 11 int code = 123789;
int code1 = 987321;
int tot,i1,i2,i3,i4,i5,i6;
char c1,c2,c3,c4,c5,c6;
int R1 = 12;
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] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);
void setup()
{ pinMode(R1,OUTPUT);
Serial.begin(9600);
lcd.begin();
tone(BUZZ,5000);
lcd.setCursor(0,0);
lcd.print(F("SISTEM PENGAMAN"));
lcd.setCursor(0,1);
lcd.print(" KUNCI PINTU");
delay (3000);
standby(); }
void standby()
{
lcd.clear();
lcd.print(F("Tekan (#) Untuk"));
lcd.setCursor(0,1);
lcd.print("Membuka Pasword");
noTone(BUZZ);
}
void loop()
{ digitalWrite(R1,LOW);
char keypressed = keypad.getKey();
if(keypressed == '#')
{ tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Masukkan Pasword");
keypressed = keypad.waitForKey();
if (keypressed != NO_KEY)
{
c1 = keypressed;
tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.setCursor(5,1);
lcd.print("*");
}
keypressed = keypad.waitForKey();
if (keypressed = keypad.waitForKey());
if(keypressed != NO_KEY)
{
c2 = keypressed; tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.setCursor(6,1);
lcd.print("*");
}
keypressed = keypad.waitForKey();
if(keypressed != NO_KEY)
{
c3 = keypressed;
tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.setCursor(7,1);
lcd.print("*");
}
keypressed = keypad.waitForKey();
if(keypressed != NO_KEY)
{
c4 = keypressed;
tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.setCursor(8,1);
lcd.print("*");
}
keypressed = keypad.waitForKey();
if(keypressed != NO_KEY)
{
c5 = keypressed;
tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.setCursor(9,1);
lcd.print("*");
}
keypressed = keypad.waitForKey();
if(keypressed != NO_KEY)
{
c6 = keypressed;
tone(BUZZ,1200);
delay(100);
noTone(BUZZ);
lcd.setCursor(10,1);
lcd.print("*");
}
i1 = (c1-48)*100000;
i2 = (c2-48)*10000;
i3 = (c3-48)*1000;
i4 = (c4-48)* 100;
i5 = (c5-48)* 10;
i6 = (c6-48);
tot=i1+i2+i3+i4+i5+i6;
if (tot == code ||tot == code1) { tone(BUZZ,4000);
delay(1000);
tone(BUZZ,5000);
delay(1000);
tone(BUZZ,5000);
delay(1000);
tone(BUZZ,7000);
noTone(BUZZ);
delay(1000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Selamat Datang");
lcd.setCursor(0,1);
lcd.print("PrakTek Otodidak");
digitalWrite(R1,HIGH);
delay(4000);
balik();
}
else { lcd.clear();
tone(BUZZ,1200);
lcd.setCursor(1,0);
lcd.print("Password Salah");
delay(3000);
lcd.clear();
noTone(BUZZ);
lcd.print(F("Tekan (#) Untuk"));
lcd.setCursor(0,1);
lcd.print("Masukkan Password");
}
}
}
void balik()
{ digitalWrite(R1,HIGH);
lcd.clear();
lcd.print(F(" Tekan (*) Untuk"));
lcd.setCursor(0,1);
lcd.print(" Mengunci Pintu");
noTone(BUZZ);
char keypressed = keypad.getKey();
keypressed = keypad.waitForKey();
if(keypressed == '*') { tone(BUZZ,4000);
delay(1000);
tone(BUZZ,7000);
noTone(BUZZ);
standby();
}
else { balik();
}
}
Penjelasan Program Sistem
Proses kerja dari program kunci pintu arduino ini yaitu pada kondisi awal Selenoid aktif HIGH, disini menggunakan 2 Kode password yang di deklarasikan. Untuk menginput password pin yang telah kita buat pada program adalah dengan menekan tombol (#) pada keypad.
Apabila password yang kita input telah sesuai pada program maka akan relay akan berlogika 1 dan mentrigger Selenoid menjadi aktif low. Dalam kondisi ini berarti kunci pintu akan terbuka.
Sebaliknya jika kita menekan tombol (*) maka relay akan berlogika 0 atau low dan mentrigger Selenoid menjadi aktif high, dalam kondisi ini berarti kunci pintu akan kembali menutup.
Untuk lebih jelas silahkan lihat hasil nya pada video nya di channel youtube