Keypad 4x4 Raspberry Pi Pico merupakan salah satu kombinasi yang menarik untuk dipelajari ketika membuat proyek elektronik berbasis mikrokontroler. Dengan keypad, Raspberry Pi Pico dapat menerima input berupa tombol angka maupun karakter dari pengguna. Keypad 4x4 banyak digunakan pada berbagai proyek elektronik, seperti password door lock, sistem keamanan, kalkulator sederhana, menu navigasi, kontrol perangkat, hingga proyek IoT menggunakan Raspberry Pi Pico. Pada artikel ini akan membahas tentang pengertian keypad 4x4, cara kerja keypad, konfigurasi pin, wiring keypad 4x4 dengan Raspberry Pi Pico, serta contoh program MicroPython untuk membaca tombol yang ditekan.
Apa Itu Keypad 4x4?
Keypad 4x4 adalah modul input yang memiliki 16 tombol yang disusun dalam bentuk matriks dengan 4 baris (row) dan 4 kolom (column). Susunan tombol pada keypad 4x4 umumnya seperti berikut:
Jadi, terdapat 16 tombol yang dapat digunakan sebagai input. Berbeda dengan menggunakan 16 push button secara terpisah, keypad 4x4 hanya membutuhkan 8 pin GPIO untuk membaca seluruh 16 tombol. Delapan pin tersebut terdiri dari 4 pin Row dan 4 pin Column. Inilah yang membuat keypad 4x4 cukup praktis digunakan pada Raspberry Pi Pico.
Cara Kerja Keypad 4x4
Keypad 4x4 menggunakan prinsip matrix scanning atau pemindaian matriks. Setiap tombol pada keypad terhubung antara satu jalur baris dan satu jalur kolom. Ketika sebuah tombol ditekan, hubungan antara baris dan kolom tertentu akan terdeteksi oleh mikrokontroler. Misalnya, tombol 5 berada pada:
- Row 2
- Column 2
Ketika tombol 5 ditekan, Raspberry Pi Pico akan mendeteksi adanya koneksi antara Row 2 dan Column 2. Program kemudian menerjemahkan kombinasi tersebut menjadi karakter "5".
Baca juga: Kontrol Relay via Web Server Menggunakan Raspberry Pi Pico W
Mengapa Hanya Membutuhkan 8 GPIO?
Jika 16 tombol dihubungkan secara individual, secara teori diperlukan 16 pin GPIO. Namun, keypad menggunakan metode matriks sehingga 16 tombol dapat dikontrol menggunakan:
4 Row + 4 Column = 8 GPIO
Metode ini membuat penggunaan GPIO menjadi lebih efisien.
Pin Keypad 4x4
Keypad 4x4 umumnya memiliki 8 pin yang terdiri dari empat pin baris dan empat pin kolom. Label pin dapat berbeda tergantung modul keypad yang digunakan. Contoh susunannya:
Catatan: Urutan pin pada keypad tidak selalu sama. Oleh karena itu, periksa label pada modul atau datasheet keypad yang digunakan sebelum melakukan wiring.
Wiring Keypad 4x4 dengan Raspberry Pi Pico
Pada contoh ini kita menggunakan 8 GPIO Raspberry Pi Pico untuk keypad. Berikut contoh koneksinya:
Keypad tidak memerlukan komunikasi seperti UART, I2C, atau SPI. Setiap baris dan kolom langsung dihubungkan ke GPIO Raspberry Pi Pico.
Diagram Sederhana
Untuk rangkaian sederhana ini, keypad 4x4 dapat langsung dihubungkan ke GPIO Raspberry Pi Pico tanpa membutuhkan resistor eksternal, selama konfigurasi input/output pada program dilakukan dengan benar.
Program Keypad 4x4 Raspberry Pi Pico dengan MicroPython
Setelah rangkaian selesai dibuat, langkah berikutnya adalah membuat program untuk membaca tombol keypad. Pada contoh ini, Raspberry Pi Pico akan membaca tombol yang ditekan dan menampilkannya pada Shell Thonny.
Kode Program
from machine import Pin
import time
# Pin baris
rows = [
Pin(2, Pin.OUT),
Pin(3, Pin.OUT),
Pin(4, Pin.OUT),
Pin(5, Pin.OUT)
]
# Pin kolom
cols = [
Pin(6, Pin.IN, Pin.PULL_DOWN),
Pin(7, Pin.IN, Pin.PULL_DOWN),
Pin(8, Pin.IN, Pin.PULL_DOWN),
Pin(9, Pin.IN, Pin.PULL_DOWN)
]
# Susunan tombol keypad
keys = [
['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']
]
def scan_keypad():
for row in range(4):
# Aktifkan satu baris
rows[row].value(1)
for col in range(4):
if cols[col].value() == 1:
# Debounce
time.sleep_ms(30)
# Pastikan tombol masih ditekan
if cols[col].value() == 1:
key = keys[row][col]
# Matikan baris
rows[row].value(0)
# Tunggu sampai tombol benar-benar dilepas
while cols[col].value() == 1:
time.sleep_ms(10)
# Debounce setelah tombol dilepas
time.sleep_ms(50)
return key
# Matikan baris
rows[row].value(0)
return None
while True:
key = scan_keypad()
if key is not None:
print("Tombol ditekan:", key)
time.sleep_ms(20)
Penjelasan Program
Program tersebut menggunakan teknik scanning keypad untuk mengetahui tombol mana yang ditekan.
1. Mengimpor Modul
from machine import Pin
import time
Modul Pin digunakan untuk mengatur GPIO Raspberry Pi Pico, sedangkan time digunakan untuk memberikan jeda pada program.
2. Menentukan Pin Row
rows = [
Pin(2, Pin.OUT),
Pin(3, Pin.OUT),
Pin(4, Pin.OUT),
Pin(5, Pin.OUT)
]
Empat GPIO digunakan sebagai Row dan diatur sebagai output. Dalam contoh ini:
- GP2 → R1
- GP3 → R2
- GP4 → R3
- GP5 → R4
3. Menentukan Pin Column
cols = [
Pin(6, Pin.IN, Pin.PULL_DOWN),
Pin(7, Pin.IN, Pin.PULL_DOWN),
Pin(8, Pin.IN, Pin.PULL_DOWN),
Pin(9, Pin.IN, Pin.PULL_DOWN)
]
Empat GPIO berikutnya digunakan sebagai Column dan diatur sebagai input. Konfigurasi Pin.PULL_DOWN digunakan agar input memiliki kondisi LOW ketika tidak ada tombol yang terdeteksi.
4. Membuat Mapping Tombol
keys = [
['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']
]
Bagian ini menentukan karakter untuk setiap posisi tombol. Sebagai contoh:
Row 1 → 1 2 3 A
Row 2 → 4 5 6 B
Row 3 → 7 8 9 C
Row 4 → * 0 # D
Ketika kombinasi baris dan kolom tertentu terdeteksi, program mengambil karakter dari array tersebut.
Bagaimana Fungsi scan_keypad() Bekerja?
Bagian terpenting dalam program adalah fungsi scan_keypad(). Fungsi ini bertugas untuk memindai setiap baris pada keypad secara bergantian, kemudian memeriksa kondisi pada setiap kolom untuk mengetahui tombol mana yang sedang ditekan. Saat melakukan pemindaian, program akan mengaktifkan salah satu baris terlebih dahulu menggunakan perintah rows[row].value(1). Setelah itu, program memeriksa keempat kolom pada keypad. Jika salah satu kolom terdeteksi dalam kondisi HIGH, berarti terdapat tombol yang ditekan pada titik pertemuan antara baris dan kolom tersebut.
Sebagai contoh, ketika Row 2 sedang aktif dan Column 2 terdeteksi, program dapat menentukan bahwa tombol yang ditekan adalah tombol 5. Posisi baris dan kolom tersebut kemudian digunakan untuk mengambil karakter dari array keys melalui perintah key = keys[row][col].
Dengan cara tersebut, fungsi scan_keypad() dapat mengetahui tombol yang ditekan dan mengembalikan karakter tersebut ke bagian program yang memanggilnya.
Menguji Keypad 4x4
Setelah program dijalankan melalui Thonny IDE, buka bagian Shell. Kemudian tekan beberapa tombol pada keypad. Misalnya tombol yang ditekan adalah:
1
5
9
A
0
#
Output pada Shell dapat terlihat seperti:
Tombol ditekan: 1
Tombol ditekan: 5
Tombol ditekan: 9
Tombol ditekan: A
Tombol ditekan: 0
Tombol ditekan: #
Jika setiap tombol menghasilkan karakter yang sesuai, berarti keypad 4x4 berhasil terhubung dan dibaca oleh Raspberry Pi Pico.
Contoh Pengembangan Proyek Keypad Raspberry Pi Pico
Setelah berhasil membaca input keypad, proyek dapat dikembangkan menjadi berbagai aplikasi.
1. Password Door Lock
Keypad dapat digunakan untuk memasukkan kode PIN. Contohnya pengguna memasukkan:
1 → 2 → 3 → 4 → #
Program kemudian memeriksa apakah PIN tersebut benar. Jika benar, Raspberry Pi Pico dapat mengaktifkan servo atau relay untuk membuka kunci.
2. Kalkulator Sederhana
Tombol keypad juga dapat digunakan sebagai input untuk kalkulator sederhana.
Contohnya:
1 + 5 = Raspberry Pi Pico kemudian melakukan perhitungan dan menampilkan hasilnya pada LCD atau OLED.
3. Kontrol Menu
Keypad dapat digunakan sebagai tombol navigasi untuk memilih menu pada sebuah perangkat.
Misalnya:
1 = Menu Sensor
2 = Pengaturan
3 = Status Sistem
4 = Informasi
4. Sistem Keamanan
Keypad 4x4 juga dapat menjadi bagian dari sistem keamanan berbasis Raspberry Pi Pico. Pengguna harus memasukkan PIN tertentu sebelum perangkat menjalankan fungsi yang diinginkan.
Kelebihan Menggunakan Keypad 4x4
Ada beberapa alasan mengapa keypad 4x4 cukup populer dalam proyek mikrokontroler, antara lain:
1. Menghemat GPIO
16 tombol hanya membutuhkan 8 GPIO karena menggunakan konfigurasi matriks.
2. Mudah digunakan
Keypad sudah memiliki susunan tombol yang siap digunakan sehingga tidak perlu memasang banyak push button.
3. Cocok untuk proyek input
Keypad sangat cocok ketika proyek membutuhkan input angka, karakter, atau kode tertentu.
4. Mudah dikembangkan
Input keypad dapat dikombinasikan dengan LCD, OLED, buzzer, servo, relay, sensor, dan berbagai komponen lainnya.
Kekurangan Keypad 4x4
1. Keypad tetap membutuhkan 8 GPIO. Jika proyek menggunakan banyak sensor atau modul lain, jumlah GPIO yang tersedia perlu diperhitungkan.
2. Program harus melakukan proses scanning untuk mendeteksi tombol yang ditekan.
3. Untuk aplikasi yang membutuhkan banyak tombol atau input yang lebih kompleks, penggunaan keypad dengan ekspander I/O atau metode komunikasi tertentu dapat menjadi pilihan yang lebih efisien.
Tips Menggunakan Keypad 4x4 dengan Raspberry Pi Pico
Sebelum membuat proyek, perhatikan beberapa hal berikut:
1. Periksa urutan pin keypad karena setiap modul dapat memiliki susunan pin yang berbeda.
2. Pastikan GPIO yang digunakan sesuai dengan program.
3. Gunakan GPIO yang tidak sedang digunakan oleh komponen lain.
4. Jika tombol terbaca secara tidak stabil, periksa konfigurasi pull-up/pull-down dan wiring.
5. Gunakan debouncing jika proyek membutuhkan pembacaan tombol yang lebih akurat.
6. Untuk proyek yang membutuhkan input pengguna dalam jumlah banyak, pertimbangkan penggunaan display seperti LCD atau OLED.
Baca juga: Raspberry Pi Pico Password System dengan Keypad 4x4: Sistem Keamanan Berbasis MicroPython
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino






0 Komentar