Kunci Kode digital paling umum digunakan pada sistem keamanan. Kunci elektronik attau kunci digital adalah perangkat yang memiliki rakitan kontrol elektronik yang terpasang padannya. Dilengkapi dengan sistem kontrol akses. Sistem ini memungkinkan pengguna untuk membuka kunci perangkat dengan kata sandi. Password dimasukan dengan menggunakan keypad. Pengguna juga dapat mengatur kata sandinya untuk memastikan perlindungan yang lebih baik.
Dalam projek ini komponen utama meliputi keypad, LCD dan controller Arduino. Artikel ini menjelaskan tentang pembuatan kunci kode elektronik menggunakan arduino.
Apa yang akan anda pelajari?
1. Bagaiamana cara menghubungkan keypad dan LCD ke arduino?
2. Bagaimana cara mengambil input keypad?
3. Membandingkan input keypad?
4. Membatasi masukan?
5. Bagaimana cara membuat aplikasi kunci kode digital lengkap?
Komponen yang diperlukan :
1. Arduino Uno
2. Layar LCD 16x2
3. Papan tombol 4x4
4. Relay
5. Resistor 1K jumlah 3
6. BC548
7. LED
Skematik pada proteus :
Rangkaian kunci kode dibangun di sekitar Arduino Uno, menggunakan LCD dan keypad. LCD dan keypad membentuk antarmuka pengguna untuk memasukkan kata sandi dan menampilkan pesan terkait seperti "Kata sandi tidak valid", "Pintu terbuka", dll. Dua LED disediakan untuk menunjukkan status pintu apakah terkunci atau terbuka. Untuk mengoperasikan latch/lock kami menggunakan Relay yang dapat dihubungkan ke aktuator elektronik atau solenoida.
/*
circuits4you.com
Digital Code Lock Demo
*/
#include <Keypad.h>
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'7','8','9','/'},
{'4','5','6','*'},
{'1','2','3','-'},
{'C','0','=','+'}
};
byte rowPins[ROWS] = {3, 2, 19, 18}; //sambungkan ke pinout baris keypad
byte colPins[COLS] = {17, 16, 15, 14}; //sambungkan ke pinout kolom keypad
//inisialisasi instance kelas NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
const int LED_RED=10; //LED merah
const int LED_GREEN=11; //LED hijau
const int RELAY=12; //Kunci Relay atau motor
char keycount=0;
char code[4]; //Tahan tombol yang ditekan
//=================================================================
// SETUP
//==========================================
void setup(){
pinMode(LED_RED,OUTPUT);
pinMode(LED_GREEN,OUTPUT);
pinMode(RELAY,OUTPUT);
// mengatur jumlah kolom dan baris LCD:
lcd.begin(16, 2);
// Cetak pesan ke LCD.
lcd.print("Password Access:");
lcd.setCursor(0,1); //Pindahkan kursor ke Baris kedua
// Nyalakan kursor
lcd.cursor();
digitalWrite(LED_GREEN,HIGH); //LED Hijau Mati
digitalWrite(LED_RED,LOW); //LED Merah Menyala
digitalWrite(RELAY,LOW); //Matikan Relay (Terkunci)
}
//=================================================================
// LOOP
//=================================================================
void loop(){
char customKey = customKeypad.getKey();
if (customKey && (keycount<4) && (customKey !='=') && (customKey !='C')){
//lcd.print(customKey); //Untuk menampilkan kunci yang dimasukkan
lcd.print('*'); //Jangan tampilkan kunci yang dimasukkan
code[keycount]=customKey;
keycount++;
}
if(customKey == 'C') //Tombol Batal/Kunci ditekan untuk menghapus tampilan dan mengunci
{
Lock(); //Lock and clear display
}
if(customKey == '=') //Periksa Kata Sandi dan Buka Kunci
{
if((code[0]=='1') && (code[1]=='2') && (code[2]=='3') && (code[3]=='4')) //Cocokkan kata sandi. Kata sandi default adalah "1234"
{
digitalWrite(LED_GREEN,LOW); //LED Hijau Mati
digitalWrite(LED_RED,HIGH); //LED Merah Menyala
digitalWrite(RELAY,HIGH); //Nyalakan Relay (Tidak Terkunci)
lcd.setCursor(0,1);
lcd.print("Door Open ");
delay(4000); //Biarkan Pintu tetap terbuka selama 4 Detik
Lock();
}
else
{
lcd.setCursor(0,1);
lcd.print("Invalid Password"); //Tampilkan Pesan Kesalahan
delay(1500); //Penundaan pesan
Lock();
}
}
}
//=================================================================
// LOCK and Update Display
//=================================================================
void Lock()
{
lcd.setCursor(0,1);
lcd.print("Door Locked ");
delay(1500);
lcd.setCursor(0,1);
lcd.print(" "); //Hapus Kata Sandi
lcd.setCursor(0,1);
keycount=0;
digitalWrite(LED_GREEN,HIGH); //LED Hijau Mati
digitalWrite(LED_RED,LOW); //LED Merah Menyala
digitalWrite(RELAY,LOW); //Matikan Relay (Terkunci)
}
Kesimpulan
0 Comments