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.



Sketch Arduino
Program dibangun menggunakan dua perpustakaan "LiquidCrystal" dan "Keypad". Program memiliki modul yang berbeda, Setup, Loop, Lock.  Dalam pengaturan kami menginisialisasi semua koneksi IO dan LCD, Keypad. Di loop utama kita mengambil kunci yang ditekan dalam array "kode []", Setelah empat digit dimasukkan, kita berhenti menerima kunci. Kami menggunakan tombol numerik dan tombol 'C' , “=".  Tombol 'C' digunakan untuk mengunci atau menghapus tampilan jika kata sandi yang dimasukkan salah. Kami dapat menyembunyikan kata sandi yang dimasukkan dengan meletakkan karakter Bintang '*'.
Setelah memasukkan kata sandi '=', kunci berfungsi sebagai ok.
Jika kata sandi benar, pintu tetap tidak terkunci selama beberapa detik. Jika salah akan muncul pesan.


 /*
   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
Kode ini menunjukkan cara membuat kunci kode digital dan aplikasinya menggunakan arduino.

Jika anda ingin mencoba project ini silahkan download file pada link dibawah didalamnya sudah lengkap terdapat program arduino dan skematik proteus nya.


Semangat dan selamat mencoba