Smart Lock Door with LCD Display and BUZZER Alarm

Pernah gak sih ngerasa parno ninggalin kamar kosan atau ruang lab kampus? Apalagi kalau di dalemnya banyak barang berharga kayak laptop, hardisk isi source code project akhir, sampe snack kesayangan.

Nah, dari keresahan itu, gue kepikiran buat iseng bikin Smart Lock System sederhana pake Arduino. Konsepnya simpel: masukin password pake keypad, kalau bener akses dibuka, kalau salah sampai 3 kali… telolet, alarmnya bakal bunyi berisik dan sistem otomatis kekunci!

Alat-Alat Tempur yang Dipake

Buat project ini, gue gak pake komponen yang aneh-aneh kok. Semuanya gampang dicari di marketplace ijo atau oren. Ini dia hardware yang jadi otak dan otot dari Smart Lock ini:

1. Mikrokontroler (Arduino Uno / Nano / Sejenisnya)

Ini adalah “otak” utama dari sistem kita. Dia yang bakal memproses semua input dari keypad, ngecek apakah password-nya match sama yang ada di database (kode), dan ngasih perintah ke layar atau alarm.

2. Keypad Matrix 4×3

Ibarat keyboard-nya sistem ini. Bentuknya kayak numpad di HP jadul (ada angka 0-9, bintang, dan pagar). Komponen ini yang dipake buat nginput PIN rahasianya.

3. LCD 16×2 + Modul I2C

Biar sistemnya interaktif, kita butuh layar buat ngasih feedback ke user. Layar ini bakal nampilin teks kayak “Input: ****”, “Akses Diterima”, atau peringatan “SYSTEM LOCKED”. Modul I2C di sini life-saver banget sih, karena bikin kabel yang tadinya belasan biji sisa 4 kabel doang.

4. Buzzer Aktif

Ini dia satpamnya! Kalau ada yang iseng masukin password salah berkali-kali, komponen kecil ini bakal ngeluarin suara bip yang lumayan nyaring buat bikin panik si penyusup.

Gimana Cara Kerjanya?

Logic di balik Smart Lock ini straightforward banget:

  1. Standby: Saat awal nyala, layar bakal nampilin “Smart Lock” dan nunggu inputan.
  2. Input Proses: Tiap kita mencet tombol di keypad, layar bakal nampilin karakter bintang * (biar PIN kita gak diintip orang sebelah).
  3. Validasi: Pas kita pencet tombol # (sebagai tombol Enter), Arduino bakal ngecek. Kalau PIN bener, layar ngomong “Akses Diterima”.
  4. Sistem Keamanan: Kalau salah masukin PIN 3 kali berturut-turut, sistem bakal masuk ke mode Lockdown. Layar nampilin “SYSTEM LOCKED”, buzzer bunyi panjang, dan keypad bakal mati (gak bisa dipencet) selama 10 detik. Kapok deh tuh yang mau nyoba-nyoba brute force!

The Code!

Buat lu yang penasaran sama jeroan code-nya, gue pake bahasa C++ bawaan Arduino. Jangan lupa install library <Keypad.h> sama <LiquidCrystal_I2C.h> dulu ya sebelum nge-run ini.

#include <Keypad.h>
#include <LiquidCrystal_I2C.h>

// Setup LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Setup Keypad 4 Baris, 3 Kolom
const byte ROWS = 4;
const byte COLS = 3;

char keys[ROWS][COLS] = {
  { '1', '2', '3' },
  { '4', '5', '6' },
  { '7', '8', '9' },
  { '*', '0', '#' }
};

byte rowPins[ROWS] = { 9, 8, 7, 6 }; // Sesuaikan dengan pin di Arduino lu
byte colPins[COLS] = { 5, 4, 3 };    // Sesuaikan dengan pin di Arduino lu

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

// Setup Password Default
String password = "1234";
String input = "";

// Pin Buzzer
int buzzer = 10;

// Variabel Keamanan
int attempt = 0;
bool isLocked = false;

void setup() {
  Serial.begin(9600);
  
  lcd.init();
  lcd.backlight();
  pinMode(buzzer, OUTPUT);

  lcd.setCursor(0, 0);
  lcd.print("Smart Lock");
  delay(2000);
  lcd.clear();
}

void loop() {
  // Logic kalau sistem kekunci setelah 3x gagal
  if (isLocked) {
    lcd.setCursor(0, 0);
    lcd.print("SYSTEM LOCKED");
    lcd.setCursor(0, 1);
    lcd.print("Wait 10 sec...");

    tone(buzzer, 300, 200);
    delay(10000); // Kunci selama 10 detik

    isLocked = false;
    attempt = 0;
    lcd.clear();
  }

  char key = keypad.getKey();

  if (key) {
    tone(buzzer, 1000, 50);  // Bunyi bip tiap tombol dipencet
    Serial.println(input);
    
    // Tombol # buat Enter/Submit
    if (key == '#') {
      lcd.clear();

      if (input == password) {
        lcd.print("Akses Diterima");
        tone(buzzer, 1200, 200);
        attempt = 0;  // Reset percobaan kalau berhasil
      } else {
        attempt++;
        lcd.print("Akses Ditolak");
        tone(buzzer, 500, 1000); // Bunyi alarm gagal

        delay(2000);
        lcd.clear();

        // Cek kalau udah 3x gagal
        if (attempt >= 3) {
          isLocked = true;
        }
      }

      delay(2000);
      input = "";
      lcd.clear();
      
    // Tombol * buat nge-reset ketikan
    } else if (key == '*') {
      input = "";
      lcd.clear();
      lcd.print("Reset");
      delay(1000);
      lcd.clear();
      
    // Nampilin bintang buat ngetik password  
    } else {
      input += key;
      lcd.setCursor(0, 0);
      lcd.print("Input: ");
      lcd.setCursor(0, 1);
      for (int i = 0; i < input.length(); i++) {
        lcd.print("*");
      }
    }
  }
}

Kesimpulan

Seru kan? Project simpel kayak gini ngebuktiin kalau belajar IoT atau embedded system itu asik banget kalau langsung dibikin jadi use case dunia nyata. Rencana ke depannya sih, ini sistem mau gue kembangin lagi biar password-nya bisa diganti tanpa perlu nge-flash ulang kode, atau mungkin ditambahin module relay biar bisa beneran buka kunci pintu elektronik.

Gimana menurut kalian? Kalau ada ide fitur apa lagi yang asik ditambahin ke Smart Lock ini, drop di kolom komentar yak!

nashirrestafauzian@student.telkomuniversity.ac.id
nashirrestafauzian@student.telkomuniversity.ac.id
Articles: 1

Leave a Reply

Your email address will not be published. Required fields are marked *