Jumat, 13 November 2026

LAPORAN PRAKTIKUM IMPLEMENTASI SISTEM KEAMANAN BERBASIS PIN 4 DIGIT MENGGUNAKAN ESP32-S3 DAN MOTOR SERVO

 LAPORAN PRAKTIKUM IMPLEMENTASI SISTEM KEAMANANBERBASIS PIN 4 DIGIT MENGGUNAKAN ESP32-S3 DAN MOTOR SERVO

 

Disusun oleh:

Junior Ramos Manihuruk          26051204249

Gadang Jingga Rabbani             26051204019

Maysan Nasywa Hadi                26051204261

Fathur Rahman                          26051204114

 

 

BAB I

PENDAHULUAN

1.1 Latar Belakang

Kunci mekanis pada lemari atau brankas kecil bisa dibobol atau dirusak tanpa meninggalkan jejak digital. Sistem akses berbasis mikrokontroler lebih fleksibel karena kode aksesnya dapat diganti kapan saja tanpa mengubah komponen kuncinya.

Pada praktikum ini, ESP32-S3 menjadi pengendali sistem keamanan PIN 4 digit. PIN dimasukkan lewat keypad matriks 4×4, status ditampilkan pada LCD 16×2 I2C, dan servo yang digerakkan dengan sinyal PWM berperan sebagai kunci. Posisi 0° berarti terbuka dan 180° berarti terkunci.

Sistem punya dua keadaan. Saat terbuka, pengguna menetapkan PIN baru. Saat terkunci, pengguna harus memasukkan PIN yang sama agar servo membuka kunci. Rangkaian dirakit dan diuji langsung pada perangkat fisik.


1.2 Rumusan Masalah

1.     Bagaimana ESP32-S3 membaca 16 tombol keypad matriks 4×4 lewat delapan pin GPIO, dan bagaimana program memetakan baris dan kolom menjadi karakter tombol?

2.     Bagaimana sistem menyimpan, membandingkan, dan mengganti PIN 4 digit, termasuk saat jumlah digit tidak sesuai atau PIN tidak cocok?

3.     Bagaimana ESP32-S3 menggerakkan servo dengan PWM 50 Hz secara bertahap, dan bagaimana LCD I2C menampilkan status di setiap tahap?


1.3 Tujuan Praktikum

1.     Memahami penggunaan pin digital ESP32-S3 sebagai input keypad dan output PWM servo.

2.     Memahami komunikasi I2C antara ESP32-S3 dan LCD 16×2.

3.     Membuat program yang menetapkan PIN baru, mengunci otomatis setelah PIN dibuat, dan membuka kunci hanya bila PIN cocok.

4.     Menguji rangkaian dan program pada perangkat fisik untuk empat skenario: pembuatan PIN, penguncian, pembukaan dengan PIN benar, dan penolakan PIN salah.


1.4 Batasan Sistem

1.     PIN terdiri dari tepat empat digit angka. Tombol A, B, C, D, dan * tidak dipakai untuk memasukkan PIN (tombol * hanya menghapus entri yang sedang diketik).

2.     PIN hanya tersimpan di RAM (variabel String), sehingga hilang saat board reset atau kehilangan daya. Belum ada EEPROM atau Flash.

3.     Jumlah percobaan PIN salah tidak dibatasi, dan tidak ada alarm atau penguncian sementara.

4.     Pergerakan servo dan sebagian pesan LCD memakai delay() yang bersifat blocking, sehingga keypad tidak terbaca selama proses berlangsung.

5.     Alamat I2C LCD tetap 0x27. Modul beralamat lain memerlukan penyesuaian kode.



BAB II

DASAR TEORI

2.1 Keypad Matriks 4×4

Keypad matriks 4×4 punya 16 tombol dalam 4 baris dan 4 kolom, tetapi hanya butuh 8 jalur sinyal. Mikrokontroler memberi sinyal pada satu baris, lalu membaca semua kolom secara bergantian. Pasangan baris dan kolom yang aktif menunjukkan tombol yang ditekan.

Pemetaan tombol pada sistem ini adalah angka 1–9 dan 0 pada posisi numerik, huruf A–D di kolom keempat, serta simbol * dan # di baris terakhir. Perangkat lunak hanya memproses tombol angka untuk digit PIN dan tombol # untuk konfirmasi.


2.2 ESP32-S3

ESP32-S3 adalah mikrokontroler dengan banyak pin GPIO yang bisa dikonfigurasi sebagai input digital, output digital, jalur I2C, atau keluaran PWM. Pada rancangan ini ESP32-S3 menjadi pengendali tunggal: membaca keypad, mengelola status PIN dan status kunci, mengirim data ke LCD lewat I2C, dan membangkitkan sinyal PWM untuk servo.

Pin 3V3 memasok LCD dan servo. Seluruh ground ESP32-S3, LCD, keypad, dan servo disatukan agar referensi tegangan sinyal PWM dan I2C konsisten.


2.3 LCD 16×2 I2C

LCD 16×2 menampilkan dua baris teks dengan 16 karakter per baris. Modul yang dilengkapi backpack I2C hanya butuh dua jalur sinyal, yaitu SDA untuk data dan SCL untuk clock, sehingga jumlah pin yang terpakai jauh lebih sedikit daripada antarmuka paralel. Alamat perangkat yang dipakai adalah 0x27.

LCD menampilkan prompt dan status seperti PIN BARU, Input PIN, Mengunci, Terkunci, Membuka, Terbuka, dan PIN SALAH, sehingga pengguna bisa mengikuti prosesnya tanpa membuka kode program.


2.4 Motor Servo

Servo hobi dikendalikan dengan sinyal PWM berfrekuensi 50 Hz. Lebar pulsa menentukan sudut poros. Pada rancangan ini lebar pulsa berkisar 500–2500 mikrodetik, dengan 0° sebagai terbuka dan 180° sebagai terkunci. Servo digerakkan satu derajat per langkah dengan jeda singkat agar geraknya halus.



BAB III

PERANCANGAN DAN IMPLEMENTASI

3.1 Gambaran Sistem

Saat pertama menyala, servo berada di 0° (terbuka), isLocked bernilai false, dan LCD menampilkan PIN BARU:. Pengguna memasukkan empat digit lewat keypad, dan tiap digit tampil sebagai tanda bintang di baris kedua LCD sehingga PIN tidak terlihat.

Setelah # ditekan dengan tepat empat digit, angka itu disimpan sebagai PIN dan sistem langsung mengunci: servo bergerak bertahap 0° ke 180° dengan tampilan Mengunci..., lalu Terkunci. Dalam keadaan terkunci, PIN yang sama membuka kunci (servo 180° ke 0°, tampilan Membuka... lalu Terbuka), sedangkan PIN yang tidak cocok menampilkan PIN SALAH dan sistem tetap terkunci.

The image shows a circuit diagram with various GPIO pins, a keypad matrix, a servo, and an LCD connected to an ESP32-S3 microcontroller.

AI-generated content may be incorrect.

Gambar 1. Rangkaian fisik sistem keamanan PIN pada kondisi awal, LCD menampilkan prompt PIN BARU:


3.2 Komponen yang Digunakan

Tabel 1. Komponen sistem keamanan PIN

No.

Komponen

Jumlah

Fungsi

1

ESP32-S3

1

Mengendalikan keypad, LCD, dan servo; menyimpan status kunci dan PIN

2

Keypad matriks 4×4

1

Menerima masukan digit PIN dari pengguna

3

LCD 16×2 I2C

1

Menampilkan prompt PIN dan status sistem

4

Motor servo hobi (SG90)

1

Menggerakkan mekanisme kunci antara posisi terbuka dan terkunci

5

Kabel jumper

Secukupnya

Menghubungkan antarkomponen

 

3.3 Konfigurasi Pin

Tabel 2. Pemetaan pin ESP32-S3 pada sistem keamanan PIN

Komponen

Pin ESP32-S3

Keterangan

Keypad R1 / R2 / R3 / R4

GPIO 4 / 7 / 6 / 5

Baris keypad

Keypad C1 / C2 / C3 / C4

GPIO 8 / 18 / 17 / 16

Kolom keypad

LCD SDA

GPIO 1

Jalur data I2C

LCD SCL

GPIO 2

Jalur clock I2C

LCD VCC

3V3

Suplai daya LCD

Servo PWM

GPIO 15

Sinyal kendali servo

Servo VCC

3V3

Suplai daya servo

Ground bersama

GND

Referensi ground LCD, keypad, dan servo

Rincian sambungan tiap komponen disertakan pada bagian Lampiran.


3.4 Alur Kerja Program

Pada fungsi setup, program menginisialisasi Serial Monitor (115200 baud) dan jalur I2C pada GPIO 1 (SDA) dan GPIO 2 (SCL), lalu menyalakan LCD beserta lampu latarnya. Timer PWM dialokasikan dengan ESP32PWM::allocateTimer(0), servo diatur pada frekuensi 50 Hz dengan rentang pulsa 500–2500 mikrodetik, dan servo ditempatkan pada posisi 0°. LCD kemudian menampilkan prompt awal PIN BARU:.

Pada fungsi loop, program membaca satu tombol per siklus dengan keypad.getKey() dan mencetak tombol yang terbaca ke Serial Monitor. Tombol angka ditambahkan ke enteredCode selama jumlah digitnya belum empat, dan tanda bintang tampil di baris kedua LCD. Digit tambahan diabaikan sampai entri dikonfirmasi dengan #. Tombol * menghapus entri yang sedang diketik.

Saat # ditekan, program memeriksa isLocked. Jika sistem terbuka dan tepat empat digit telah dimasukkan, enteredCode disalin ke storedCode dan lockSafe() dipanggil. Jika jumlah digit tidak tepat empat, LCD menampilkan Buat PIN 4 Digit. Jika sistem terkunci, enteredCode dibandingkan dengan storedCode: PIN yang cocok memanggil unlockSafe(), sedangkan PIN yang tidak cocok menampilkan PIN SALAH tanpa mengubah status kunci. Pada semua kasus, enteredCode dikosongkan setelah proses konfirmasi selesai.

Fungsi lockSafe() mengatur isLocked menjadi true, menampilkan Mengunci..., menggerakkan servo bertahap dari 0° ke 180°, menampilkan Terkunci selama dua detik, lalu menampilkan Input PIN. Fungsi unlockSafe() mengatur isLocked menjadi false, menampilkan Membuka..., menggerakkan servo bertahap dari 180° ke 0°, menampilkan Terbuka selama dua detik, lalu kembali ke PIN BARU:.


3.5 Implementasi Program

Kode disusun dari program yang dijalankan pada ESP32-S3. Bagian pertama memuat pustaka dan konfigurasi pin.

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Keypad.h>

#include <ESP32Servo.h>

 

#define I2C_SDA 1

#define I2C_SCL 2

#define ROWS 4

#define COLS 4

 

byte rowPins[ROWS] = {4, 7, 6, 5};

byte colPins[COLS] = {8, 18, 17, 16};

const int servoPin = 15;

Kode 1. Pustaka dan konfigurasi pin

Bagian berikutnya berisi konfigurasi LCD, peta tombol keypad, dan variabel status sistem.

LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo lockServo;

 

char keys[ROWS][COLS] = {

  {'1', '2', '3', 'A'},

  {'4', '5', '6', 'B'},

  {'7', '8', '9', 'C'},

  {'*', '0', '#', 'D'}

};

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

 

String enteredCode = "";

String storedCode = "";

bool isLocked = false;

Kode 2. Konfigurasi LCD, peta keypad, dan variabel status

Inisialisasi servo dan pembacaan tombol dilakukan sebagai berikut.

ESP32PWM::allocateTimer(0);

lockServo.setPeriodHertz(50);

lockServo.attach(servoPin, 500, 2500);

lockServo.write(0);

 

char key = keypad.getKey();

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

  if (enteredCode.length() < 4) {

    enteredCode += key;

    lcd.setCursor(enteredCode.length() - 1, 1);

    lcd.print('*');

  }

}

Kode 3. Inisialisasi servo dan tampilan entri PIN sebagai tanda bintang

Pergerakan servo saat mengunci dan membuka dilakukan secara bertahap satu derajat per langkah.

// Mengunci: 0 derajat menuju 180 derajat

for (int pos = 0; pos <= 180; pos++) {

  lockServo.write(pos);

  delay(15);

}

 

// Membuka: 180 derajat menuju 0 derajat

for (int pos = 180; pos >= 0; pos--) {

  lockServo.write(pos);

  delay(15);

}

Kode 4. Pergerakan bertahap servo pada proses penguncian dan pembukaan

Dengan 181 posisi dan jeda 15 ms per posisi, satu gerakan penuh dari 0° ke 180° (atau sebaliknya) memerlukan waktu sekitar 2,7 detik. Karena lcd.print dan pergerakan servo memakai delay yang bersifat blocking, pembacaan keypad tidak diproses selama rentang waktu tersebut.



BAB IV

HASIL DAN ANALISIS

4.1 Hasil Pengujian

Pengujian dilakukan langsung pada perangkat fisik dengan menjalankan seluruh alur sistem: pembuatan PIN baru, penguncian otomatis, permintaan PIN saat terkunci, penolakan PIN yang salah, dan pembukaan saat PIN benar. Setiap tahap tampil pada LCD dan diperiksa kesesuaiannya dengan perilaku yang dituliskan pada program. Keluaran Serial Monitor dipakai untuk memeriksa tombol yang terbaca.

Kendala dan penyelesaian. Pada percobaan awal, servo tidak bergerak meskipun LCD dan keypad berfungsi. Servo diuji dengan sketch terpisah dan baru bergerak ketika kabel daya dipindahkan dari pin 5V (5Vin) ke pin 3V3. Kemungkinan pin 5V pada board yang dipakai tidak menyalurkan tegangan ke servo. Setelah daya servo dipasang pada 3V3, servo bergerak sesuai alur program.

Pada tahap pertama, pengguna memasukkan empat digit PIN baru, dan tiap digit tampil sebagai tanda bintang di baris kedua LCD sehingga PIN yang sebenarnya tidak terlihat.

The image depicts a schematic diagram with various GPIO pins, a keypad matrix, and components like an SG90 servo, an ESP32-S3 module, and an LCD, all connected with labeled wires and indicators for voltage and communication protocols.

AI-generated content may be incorrect.

Gambar 2. LCD menampilkan PIN BARU dengan empat tanda bintang saat pengguna membuat PIN baru

Setelah # ditekan dan tepat empat digit terdeteksi, sistem langsung menjalankan proses penguncian. LCD menampilkan Mengunci... selama servo bergerak bertahap ke posisi 180°.

The image shows a schematic diagram with various components like GPIO pins, a keypad matrix, servos, and an LCD, connected in a circuit layout.

AI-generated content may be incorrect.

Gambar 3. LCD menampilkan Mengunci... saat servo bergerak ke posisi terkunci

Ketika sistem terkunci, LCD menampilkan prompt Input PIN dan menunggu pengguna memasukkan kembali empat digit PIN.

The image illustrates a schematic diagram featuring various components such as GPIO pins, a keypad matrix, an ESP32-S3 module, and a servo, all connected to each other with labeled pins and directions.

AI-generated content may be incorrect.

Gambar 4. LCD menampilkan Input PIN saat sistem meminta PIN untuk membuka kunci

Pengujian dengan PIN yang tidak sesuai menampilkan pesan PIN SALAH, dan sistem tetap terkunci tanpa menggerakkan servo.

The image shows a schematic layout with various components like GPIO pins, a keypad matrix, and an ESP32-S3 module, along with a servo and LCD display.

AI-generated content may be incorrect.

Gambar 5. LCD menampilkan PIN SALAH ketika PIN yang dimasukkan tidak sesuai

Ketika PIN yang dimasukkan sesuai, sistem menjalankan proses pembukaan. LCD menampilkan Membuka... selama servo bergerak bertahap kembali ke posisi 0°, lalu menampilkan Terbuka dan kembali ke prompt PIN BARU:.

The image depicts a circuit diagram with various GPIO pins, a keypad matrix, and components like an ESP32-S3 module, a servo, and an LCD, connected to a breadboard for electronic interfacing.

AI-generated content may be incorrect.

Gambar 6. LCD menampilkan Membuka... saat servo bergerak ke posisi terbuka setelah PIN benar dimasukkan

Secara keseluruhan, urutan pesan pada LCD (PIN BARU, Mengunci, Terkunci atau Input PIN, PIN SALAH atau Membuka, lalu Terbuka) sesuai dengan logika lockSafe() dan unlockSafe(). Pemindaian keypad, pembandingan PIN, dan pergerakan servo berjalan dengan urutan yang diharapkan.


4.2 Analisis Logika Counter

Tabel 3. Logika respons sistem berdasarkan status isLocked dan hasil pembandingan PIN

Kondisi

Status sebelum

Status sesudah

Respons sistem

Sistem baru aktif

-

Terbuka (isLocked = false)

Servo pada 0°; LCD menampilkan PIN BARU:

Empat digit PIN baru dikonfirmasi (#)

Terbuka

Terkunci (isLocked = true)

storedCode diperbarui; servo 0° ke 180°; LCD: Mengunci... lalu Terkunci

Jumlah digit bukan empat saat terbuka

Terbuka

Terbuka

LCD menampilkan Buat PIN 4 Digit; enteredCode dikosongkan

PIN yang dimasukkan sesuai storedCode

Terkunci

Terbuka (isLocked = false)

Servo 180° ke 0°; LCD: Membuka... lalu Terbuka

PIN yang dimasukkan tidak sesuai storedCode

Terkunci

Terkunci

LCD menampilkan PIN SALAH; servo tidak bergerak

Variabel isLocked menjadi penentu utama cabang logika saat # ditekan: nilai false mengarahkan program ke jalur pembuatan PIN baru, sedangkan nilai true mengarahkan ke jalur pembandingan PIN untuk membuka kunci. Variabel enteredCode selalu dikosongkan setelah proses konfirmasi, baik PIN diterima, ditolak, maupun jumlah digitnya tidak sesuai, sehingga entri berikutnya dimulai dari kondisi kosong.


4.3 Keterbatasan Rancangan

•     PIN tersimpan bersifat volatile karena hanya ada di variabel String pada RAM, sehingga hilang setelah ESP32-S3 reset atau kehilangan daya.

•     Program tidak membatasi jumlah percobaan PIN yang salah dan tidak menyediakan alarm atau penguncian sementara.

•     Pergerakan servo dan sebagian pesan LCD memakai delay yang bersifat blocking, sehingga keypad tidak dapat dibaca selama proses tersebut.

•     Alamat I2C LCD tetap pada 0x27. Modul dengan alamat berbeda memerlukan penyesuaian kode.

•     Arah gerak servo (0° terbuka, 180° terkunci) mungkin perlu dibalik tergantung pemasangan mekanis servo pada mekanisme kunci.

•     Pin 5V (5Vin) pada board yang dipakai tidak menyalurkan tegangan ke servo, sehingga servo disuplai dari 3V3. Pada 3,3 V tenaga servo lebih lemah, sehingga rangkaian ini hanya sesuai untuk pengujian tanpa beban mekanis. Suplai 5V eksternal dengan kapasitas arus memadai (dan ground yang disatukan dengan board) dapat menjadi solusi untuk beban yang sebenarnya.



BAB V

PENUTUP

5.1 Kesimpulan

Pengujian pada perangkat fisik menunjukkan bahwa sistem keamanan berbasis PIN 4 digit menggunakan ESP32-S3 dapat menjalankan fungsi dasar yang direncanakan. Keypad matriks 4×4 berhasil dibaca sebagai masukan digit PIN, LCD I2C menampilkan prompt dan status pada setiap tahap, dan motor servo bergerak sesuai status kunci yang dikelola program.

Alur kerja sistem, yaitu pembuatan PIN saat terbuka, penguncian otomatis setelah PIN dikonfirmasi, dan pembandingan PIN untuk membuka kunci, berjalan sesuai logika lockSafe() dan unlockSafe(). Pengujian dengan PIN benar maupun salah menunjukkan bahwa servo hanya bergerak membuka kunci ketika PIN yang dimasukkan sesuai dengan PIN tersimpan, sedangkan PIN yang salah hanya menampilkan pesan kesalahan tanpa mengubah status kunci. Pengujian juga menunjukkan bahwa servo harus disuplai dari 3V3 pada board yang dipakai, karena pin 5V tidak menyalurkan tegangan ke servo.


5.2 Saran

•     Simpan PIN pada memori non-volatile seperti EEPROM atau Flash internal ESP32-S3 agar tidak hilang saat perangkat kehilangan daya atau di-reset.

•     Tambahkan pembatasan percobaan PIN salah, disertai jeda waktu atau alarm setelah beberapa kali gagal, untuk meningkatkan keamanan sistem.

•     Gunakan millis() sebagai pengganti delay() pada pergerakan servo dan tampilan LCD agar ESP32-S3 tetap membaca keypad selama proses berlangsung.

•     Gunakan sumber 5V eksternal yang terpisah dari pin 5V ESP32-S3 apabila servo dipakai menggerakkan mekanisme kunci dengan beban mekanis yang nyata.



DAFTAR PUSTAKA

Espressif Systems. (n.d.). ESP32-S3 series. https://www.espressif.com/en/products/socs/esp32-s3

Arduino. (n.d.). Keypad library. https://www.arduino.cc/reference/en/libraries/keypad/

Arduino Libraries. (n.d.). LiquidCrystal I2C library. https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c

Madhephaestus. (n.d.). ESP32Servo library. GitHub. https://github.com/madhephaestus/ESP32Servo

 


LAMPIRAN

6.1 Konfigurasi Pin Rangkaian

Tabel 4. Konfigurasi pin lengkap ESP32-S3 pada sistem keamanan PIN

Pin ESP32-S3

Terhubung ke

Fungsi

GPIO 4

Keypad R1

Baris 1 keypad

GPIO 7

Keypad R2

Baris 2 keypad

GPIO 6

Keypad R3

Baris 3 keypad

GPIO 5

Keypad R4

Baris 4 keypad

GPIO 8

Keypad C1

Kolom 1 keypad

GPIO 18

Keypad C2

Kolom 2 keypad

GPIO 17

Keypad C3

Kolom 3 keypad

GPIO 16

Keypad C4

Kolom 4 keypad

GPIO 1

LCD SDA

Data I2C

GPIO 2

LCD SCL

Clock I2C

3V3

LCD VCC, Servo VCC

Suplai daya LCD dan servo

GPIO 15

Servo PWM

Sinyal kendali servo

GND

LCD GND, Keypad, Servo GND

Ground bersama seluruh komponen

Firmware mengandalkan empat pustaka utama: Wire.h untuk komunikasi I2C, LiquidCrystal_I2C.h untuk mengendalikan LCD, Keypad.h untuk memindai keypad matriks, dan ESP32Servo.h untuk membangkitkan sinyal PWM servo pada ESP32-S3.


6.2 Dokumentasi

The image shows a busy food court or marketplace with various stalls, people eating and chatting, and a selection of colorful and diverse food options available.

AI-generated content may be incorrect.

Tidak ada komentar:

Posting Komentar