Keypad 4x4 Raspberry Pi Pico: Fungsi, Wiring dan Contoh Program MicroPython

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:

1

2

3

A

4

5

6

B

7

8

9

C

*

0

#

D

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:


Pin

Fungsi

R1

Row 1

R2

Row 2

R3

Row 3

R4

Row 4

C1

Column 1

C2

Column 2

C3

Column 3

C4

Column 4


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 4x4

Raspberry Pi Pico

R1

GP2

R2

GP3

R3

GP4

R4

GP5

C1

GP6

C2

GP7

C3

GP8

C4

GP9


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.

Posting Komentar

0 Komentar