Senin, 05 Oktober 2026

SMART DOOR LOCK BERBASIS ESP32 MENGGUNAKAN KEYPAD, LCD I2C, SERVO, DAN BUZZER PADA WOKWI

  

LAPORAN PRAKTIKUM INTERNET OF THINGS (IOT)

SMART DOOR LOCK BERBASIS ESP32 MENGGUNAKAN KEYPAD, LCD I2C, SERVO, DAN BUZZER PADA WOKWI



Disusun Oleh:


Revalina Natasya Sinaga 

24051204123

Muchammad Ainur Rizal

24051204127

M. Mazidannur Jibril Murtadlo

24051204130

Akhmad Furqon Al Farid

24051204134



BAB 1
PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi Internet of Things (IoT) mendorong pemanfaatan mikrokontroler untuk membangun sistem elektronik yang dapat bekerja secara otomatis dan saling terhubung. Salah satu penerapannya adalah sistem keamanan pintu digital atau smart door lock. Sistem ini menggunakan kode PIN sebagai metode autentikasi sehingga akses pintu dapat dikendalikan tanpa menggunakan kunci konvensional.

Pada praktikum ini dibuat simulasi Smart Door Lock menggunakan mikrokontroler ESP32 pada platform Wokwi. Sistem dilengkapi keypad 4x4 sebagai media input PIN, LCD 16x2 berbasis komunikasi I2C untuk menampilkan instruksi dan status akses, servo motor sebagai simulasi mekanisme kunci, serta buzzer sebagai indikator suara. PIN yang digunakan pada program adalah “1234”.

Ketika pengguna memasukkan PIN dan menekan tombol pagar (#), ESP32 akan memeriksa kesesuaian PIN. Jika PIN benar, LCD menampilkan pesan akses diterima dan servo bergerak ke posisi 90 derajat selama beberapa detik sebelum kembali ke posisi awal. Jika PIN salah, LCD menampilkan akses ditolak dan buzzer memberikan bunyi peringatan. Tombol bintang (*) digunakan untuk menghapus satu digit terakhir.

Pembuatan simulasi ini bertujuan menerapkan penggunaan ESP32 sebagai pengendali, komunikasi I2C pada LCD, pembacaan input digital melalui keypad, serta pengendalian aktuator dan buzzer. Walaupun modul praktikum membahas konektivitas WiFi dan Bluetooth ESP32, proyek ini berfokus pada pengendalian perangkat melalui input lokal dan belum menggunakan komunikasi nirkabel.

1.2 Rumusan Masalah

  1. Bagaimana ESP32 membaca masukan PIN dari keypad 4x4?

  2. Bagaimana menampilkan instruksi, PIN tersamarkan, dan status akses pada LCD I2C?

  3. Bagaimana menerapkan proses verifikasi PIN untuk menentukan akses diterima atau ditolak?

  4. Bagaimana mengendalikan servo motor sebagai simulasi mekanisme kunci pintu?

  5. Bagaimana menggunakan buzzer sebagai indikator saat tombol ditekan, PIN benar, dan PIN salah?

1.3 Tujuan Laporan

Tujuan dari pembuatan laporan ini adalah:

  1. Memahami penggunaan ESP32 sebagai pengendali sistem Smart Door Lock.

  2. Menerapkan keypad 4x4 sebagai perangkat input untuk memasukkan PIN.

  3. Menampilkan informasi sistem menggunakan LCD 16x2 melalui komunikasi I2C.

  4. Menerapkan logika pencocokan PIN untuk menentukan status akses.

  5. Mengendalikan servo dan buzzer berdasarkan hasil verifikasi PIN.

  6. Membuat dan menguji simulasi Smart Door Lock menggunakan platform Wokwi.

1.4 Manfaat Penulisan

  1. Menambah pemahaman mengenai penerapan ESP32 pada sistem keamanan sederhana.

  2. Memberikan pengalaman merancang rangkaian dan program mikrokontroler melalui Wokwi.

  3. Memahami integrasi perangkat input, tampilan, dan aktuator dalam satu sistem.

  4. Melatih penerapan logika percabangan dan pengolahan data masukan pada program embedded.

  5. Memberikan gambaran awal pengembangan sistem kunci pintu digital.



BAB 2
TINJAUAN PUSTAKA

2.1 Dasar Teori

2.1.1 ESP32

ESP32 merupakan mikrokontroler yang memiliki kemampuan pemrosesan dan menyediakan konektivitas WiFi serta Bluetooth terintegrasi. ESP32 banyak digunakan dalam pengembangan perangkat IoT karena memiliki berbagai pin GPIO yang dapat dimanfaatkan untuk menghubungkan sensor, perangkat input, dan aktuator. Pada proyek ini, ESP32 berperan sebagai pusat pengendali yang membaca tombol keypad, memproses PIN, memperbarui tampilan LCD, serta mengatur servo dan buzzer.

2.1.2 Keypad 4x4

Keypad 4x4 merupakan perangkat input yang terdiri atas 16 tombol dalam susunan empat baris dan empat kolom. Tombol-tombol tersebut dapat digunakan untuk memasukkan angka maupun perintah. Pada proyek ini, tombol angka 0–9 digunakan untuk memasukkan PIN, tombol * digunakan untuk menghapus satu digit terakhir, sedangkan tombol # digunakan untuk mengirim PIN agar diperiksa.

2.1.3 LCD 16x2 dan Komunikasi I2C 

LCD 16x2 merupakan perangkat keluaran yang dapat menampilkan informasi dalam dua baris dengan masing-masing 16 karakter. Modul I2C memungkinkan LCD dikendalikan menggunakan jalur komunikasi SDA dan SCL sehingga penggunaan pin mikrokontroler menjadi lebih efisien. Program menggunakan pustaka LiquidCrystal_I2C dengan alamat perangkat 0x27. LCD menampilkan judul sistem, kolom PIN tersamarkan, serta pesan ketika akses diterima atau ditolak.

2.1.4 Servo Motor

Servo motor merupakan aktuator yang dapat diarahkan ke posisi sudut tertentu melalui sinyal kendali. Dalam simulasi ini, servo digunakan sebagai representasi mekanisme kunci pintu. Posisi 0 derajat menunjukkan kondisi terkunci, sedangkan posisi 90 derajat menunjukkan kondisi terbuka. Setelah jeda empat detik, servo dikembalikan ke posisi 0 derajat.

2.1.5 Buzzer

Buzzer merupakan komponen keluaran yang menghasilkan suara sebagai tanda atau peringatan. Pada proyek ini, buzzer berbunyi singkat setiap tombol ditekan. Ketika PIN benar, buzzer menghasilkan dua nada dengan frekuensi berbeda sebagai indikator akses diterima. Ketika PIN salah, buzzer menghasilkan nada lebih rendah dengan durasi lebih lama.

2.1.6 Verifikasi PIN

Verifikasi PIN dilakukan dengan membandingkan teks yang dimasukkan pengguna dengan PIN rahasia yang ditentukan pada program. PIN benar disimpan dalam variabel secretPIN dengan nilai “1234”, sedangkan masukan sementara disimpan dalam inputPIN. Pemeriksaan dilakukan ketika tombol # ditekan. Sistem membatasi masukan angka hingga empat digit dan menampilkan setiap digit sebagai karakter * pada LCD agar angka PIN tidak terlihat langsung.

2.2 Komponen

Komponen yang digunakan dalam simulasi sistem ini beserta fungsinya adalah sebagai berikut.

Komponen

Jumlah

Fungsi

ESP32 DevKit V1

1

Mengendalikan seluruh proses sistem

Sensor DHT22

1

Memasukkan PIN dan perintah

LCD 16x2 (I2C)

1

Menampilkan instruksi dan status sistem

Servo motor

1

Simulasi mekanisme kunci pintu

Buzzer

1

Memberikan indikator suara


 

BAB 3
PEMBAHASAN

3.1 Penjelasan Simulasi

3.1.1 Rangkaian Simulasi

Rangkaian Smart Door Lock dirancang menggunakan ESP32 DevKit V1 pada platform Wokwi. Keypad dihubungkan ke pin GPIO ESP32 melalui empat pin baris dan empat pin kolom. LCD menggunakan komunikasi I2C, servo dihubungkan ke GPIO 15, dan buzzer dihubungkan ke GPIO 12. Konfigurasi pin berdasarkan kode program adalah sebagai berikut.

Komponen

Pin Komponen

Fungsi

Keypad 4x4

R1, R2, R3, R4

GPIO 19, 18, 5, 32

Keypad 4x4

C1, C2, C3, C4

GPIO 23, 4, 27, 14

LCD (I2C)

SDA, SCL

GPIO 21, GPIO 22 (jalur I2C standar ESP32)

Servo motor

Sinyal

GPIO 15

Buzzer

Positif/sinyal

GPIO 12

Komponen

VCC dan GND

Disesuaikan dengan pin catu daya dan ground pada rangkaian


Pin baris keempat keypad menggunakan GPIO 32, sesuai keterangan pada kode program. LCD diinisialisasi dengan alamat I2C 0x27 dan ukuran 16 kolom × 2 baris.

Gambar 3.1. Tampilan rangkaian Smart Door Lock pada Wokwi

 

3.1.2 Cara Kerja Sistem

  1. Pada fungsi setup(), ESP32 memulai komunikasi Serial dengan baud rate 115200, mengatur pin buzzer sebagai output, menginisialisasi servo, dan mengatur servo pada posisi 0 derajat.

  2. LCD diinisialisasi dan lampu latar diaktifkan. Fungsi resetDisplay() kemudian menampilkan tulisan “SMART DOOR LOCK” pada baris pertama dan “PIN:” pada baris kedua, sekaligus mengosongkan masukan PIN.

  3. Pada fungsi loop(), program memeriksa apakah terdapat tombol yang ditekan melalui keypad.getKey(). Jika tombol terdeteksi, karakter tombol ditampilkan pada Serial Monitor dan buzzer berbunyi singkat.

  4. Jika tombol yang ditekan berupa angka 0–9 dan jumlah digit belum mencapai empat, angka ditambahkan ke inputPIN. LCD menampilkan karakter * sebagai pengganti angka yang dimasukkan.

  5. Jika tombol * ditekan, satu digit terakhir pada inputPIN dihapus. Tampilan karakter * pada LCD diperbarui sesuai jumlah digit yang tersisa.

  6. Jika tombol # ditekan, program membandingkan inputPIN dengan secretPIN yang bernilai “1234”.

  7. Apabila PIN sesuai, LCD menampilkan “AKSES DITERIMA!” dan “Pintu Terbuka”. Buzzer membunyikan dua nada, kemudian servo bergerak ke 90 derajat selama empat detik dan kembali ke 0 derajat.

  8. Apabila PIN tidak sesuai, LCD menampilkan “AKSES DITOLAK!” dan “PIN Salah!”. Buzzer membunyikan nada peringatan selama 600 milidetik. Setelah dua detik, tampilan dikembalikan ke kondisi awal.

  9. Setelah proses pemeriksaan selesai, fungsi resetDisplay() mengosongkan inputPIN dan menampilkan kembali halaman awal agar sistem siap menerima masukan berikutnya.

3.1.3 Hasil dan Pembahasan

Berdasarkan logika program, sistem memiliki dua hasil utama dari proses verifikasi, yaitu akses diterima dan akses ditolak. Pengguna memasukkan maksimal empat digit angka. Karakter PIN tidak ditampilkan secara langsung pada LCD, melainkan diganti dengan tanda *. Pemeriksaan dilakukan setelah tombol # ditekan.

Kondisi Pengujian

Tampilan LCD

Respons Servo

Respons Buzzer

Tombol ditekan

PIN telah ditampilkan dengan *

Tidak bergerak

Bunyi singkat 1000 Hz selama 80 ms

PIN benar (1234)

AKSES DITERIMA!/ Pintu Terbuka

Bergerak ke 90°, lalu kembali ke 0°

Dua nada indikator

PIN salah dan #

AKSES DITOLAK!/ PIN Salah!

Tetap pada 0°

Nada 400 Hz selama 600 ms

Tombol * ditekan

Satu karakter * terakhir dihapus

Tidak bergerak

Bunyi singkat

Pada kondisi PIN benar, servo menjadi indikator mekanis bahwa akses telah diberikan. Servo tidak dibiarkan terbuka secara permanen, melainkan kembali ke posisi awal setelah empat detik. Pada kondisi PIN salah, servo tidak diperintahkan untuk bergerak sehingga simulasi tetap berada dalam keadaan terkunci. Buzzer membantu membedakan interaksi tombol, keberhasilan autentikasi, dan kegagalan autentikasi.

Program juga menampilkan informasi proses melalui Serial Monitor, seperti tombol yang ditekan, PIN sementara, hasil penghapusan digit, serta status PIN benar atau salah. Informasi ini membantu proses pengamatan dan pemeriksaan saat simulasi berlangsung.

               Gambar 3.2 Hasil simulasi ketika PIN benar

Gambar 3.3 Hasil simulasi ketika PIN salah


3.2 Program

Program berikut merupakan kode yang digunakan untuk menjalankan simulasi Smart Door Lock berbasis ESP32. Program memanfaatkan pustaka Wire, LiquidCrystal_I2C, Keypad, dan ESP32Servo.

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Keypad.h>

#include <ESP32Servo.h>


#define SERVO_PIN 15

#define BUZZER_PIN 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'}

};


// R4 dipindah ke GPIO 32

byte rowPins[ROWS] = {19, 18, 5, 32};

byte colPins[COLS] = {23, 4, 27, 14};


Keypad keypad = Keypad(

  makeKeymap(keys),

  rowPins,

  colPins,

  ROWS,

  COLS

);


LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo myServo;


String secretPIN = "1234";

String inputPIN = "";


void resetDisplay() {

  inputPIN = "";

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("SMART DOOR LOCK");

  lcd.setCursor(0, 1);

  lcd.print("PIN: ");

}


void setup() {

  Serial.begin(115200);


  pinMode(BUZZER_PIN, OUTPUT);


  myServo.setPeriodHertz(50);

  myServo.attach(SERVO_PIN, 500, 2400);

  myServo.write(0);


  lcd.init();

  lcd.backlight();


  resetDisplay();


  Serial.println("======================");

  Serial.println(" SMART DOOR LOCK");

  Serial.println("======================");

  Serial.println("Sistem siap.");

  Serial.println("PIN benar: 1234");

}


void loop() {

  char key = keypad.getKey();


  if (key) {

    Serial.print("Tombol: ");

    Serial.println(key);


    tone(BUZZER_PIN, 1000, 80);


    if (key == '#') {

      Serial.print("PIN yang dimasukkan: ");

      Serial.println(inputPIN);


      if (inputPIN == secretPIN) {

        Serial.println("PIN BENAR! Pintu dibuka.");


        lcd.clear();

        lcd.setCursor(0, 0);

        lcd.print("AKSES DITERIMA!");

        lcd.setCursor(0, 1);

        lcd.print("Pintu Terbuka");


        tone(BUZZER_PIN, 2000, 150);

        delay(200);

        tone(BUZZER_PIN, 2500, 200);


        myServo.write(90);

        delay(4000);


        myServo.write(0);

        delay(500);


        resetDisplay();

      } else {

        Serial.println("PIN SALAH!");


        lcd.clear();

        lcd.setCursor(0, 0);

        lcd.print("AKSES DITOLAK!");

        lcd.setCursor(0, 1);

        lcd.print("PIN Salah!");


        tone(BUZZER_PIN, 400, 600);

        delay(2000);


        resetDisplay();

      }

    }

    else if (key == '*') {

      if (inputPIN.length() > 0) {

        inputPIN.remove(inputPIN.length() - 1);


        lcd.setCursor(5, 1);

        lcd.print("    ");


        lcd.setCursor(5, 1);

        for (int i = 0; i < inputPIN.length(); i++) {

          lcd.print("*");

        }


        Serial.print("Setelah hapus: ");

        Serial.println(inputPIN);

      }

    }

    else if (inputPIN.length() < 4) {

      if (key >= '0' && key <= '9') {

        inputPIN += key;


        lcd.setCursor(5 + inputPIN.length() - 1, 1);

        lcd.print("*");


        Serial.print("PIN sementara: ");

        Serial.println(inputPIN);

      }

    }

  }

}



BAB 4
PENUTUP

4.1 Kesimpulan

Berdasarkan simulasi yang telah dibuat, ESP32 dapat digunakan sebagai pengendali sistem Smart Door Lock sederhana dengan mengintegrasikan keypad 4x4, LCD I2C, servo motor, dan buzzer. Keypad berfungsi sebagai media masukan PIN, sedangkan LCD menampilkan instruksi serta hasil verifikasi. PIN yang dimasukkan dibandingkan dengan PIN yang telah ditentukan pada program, yaitu “1234”.

Ketika PIN benar dan tombol # ditekan, sistem menampilkan akses diterima, mengaktifkan buzzer dengan dua nada, serta menggerakkan servo ke posisi 90 derajat selama empat detik sebelum kembali ke posisi 0 derajat. Ketika PIN salah, sistem menampilkan akses ditolak, membunyikan buzzer sebagai peringatan, dan tidak menggerakkan servo. Tombol * juga dapat digunakan untuk menghapus digit terakhir yang telah dimasukkan.

Melalui simulasi ini, konsep pembacaan input digital, komunikasi I2C, pengolahan logika program, dan pengendalian aktuator pada ESP32 dapat diterapkan dalam satu sistem. Proyek ini merupakan simulasi kunci digital dan belum menerapkan konektivitas WiFi maupun Bluetooth yang dibahas dalam Modul 04.

4.2 Saran

Untuk pengembangan selanjutnya, sistem dapat dilengkapi dengan fitur penggantian PIN, pembatasan jumlah percobaan ketika PIN salah, serta penyimpanan riwayat akses. Sistem juga dapat dikembangkan dengan memanfaatkan mode WiFi Access Point dan WebServer ESP32 agar status kunci dapat dipantau atau dikendalikan melalui halaman web. Pengujian menggunakan perangkat keras asli disarankan untuk memastikan kinerja servo, buzzer, keypad, dan LCD sesuai dengan hasil simulasi pada Wokwi.


 

DAFTAR PUSTAKA 

Arduino. (n.d.). Wire Library. https://docs.arduino.cc/language-reference/en/functions/communication/wire/ 

Arduino. (n.d.). Keypad Library. https://github.com/Chris--A/Keypad

Espressif Systems. (n.d.). ESP32 Arduino Core Documentation. https://docs.espressif.com/projects/arduino-esp32/

ESP32Servo. (n.d.). ESP32Servo Library. https://github.com/madhephaestus/ESP32Servo  

Modul Praktikum. (2026). Modul 04: Mengenal ESP32 dan Mode WiFi-Bluetooth. Materi Praktikum Internet of Things. 

Rob Tillaart. (n.d.). LiquidCrystal_I2C Library. https://github.com/johnrickman/LiquidCrystal_I2C 

Wokwi. (n.d.). Wokwi Documentation. https://docs.wokwi.com/ 





LAMPIRAN

Gambar 3.5 Dokumentasi Praktikum




Tidak ada komentar:

Posting Komentar