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.
|
|
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.
|
|
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°.
|
|
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.
|
|
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.
|
|
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:.
|
|
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







Tidak ada komentar:
Posting Komentar