Contents
Keypad adalah komponen elektronik yang digunakan untuk menangani input penekanan tombol-tombol dari user. Tombol-tombol dalam keypad dirancang dalam bentuk matriks baris dan kolom supaya dapat menangani banyak tombol hanya dengan kabel yang relatif sedikit. Jika salah satu tombol ditekan, maka baris dan kolom tombol tersebut akan berubah logic sehingga dapat dideteksi tombol mana yang ditekan. Sebagai perbandingan, jika ada 16 tombol dengan pengkabelan biasa (dua kabel tiap tombol) maka akan ada 32 kabel yang dibutuhkan, sedangkan dengan menyusun 16 tombol dalam matriks 4 baris dan 4 kolom maka cukup ada 8 kabel yang dibutuhkan. Untuk lebih jelasnya simak gambar berikut ini
Jika misalnya baris B1 kita beri logic ‘1’ (B2-B4 logic ‘0’), maka saat tombol 1 ditekan, maka kolom K1 akan berubah logic dari 0 ke 1 sementara K2-K4 tetap logic 0. Dengan demikian sistem/controller dapat menyimpulkan telah terjadi penekanan tombol nomor 1.
Jika misalnya baris B2 kita beri logic ‘1’ (B1, B3 dan B4 logic ‘0’), maka saat tombol 5 ditekan, maka kolom K2 akan berubah logic dari 0 ke 1 sementara K1, K3 dan K4 tetap logic ‘0’. Dengan demikian sistem/controller dapat mendeteksi bahwa tombol nomor 5 telah ditekan. Dan begitu seterusnya ….
Catatan: pada umumnya kolom K1-K4 terhubung dengan resistor pull down dari rangkaian sistem pembacaan keypad, sehingga jika tidak ada tombol ditekan, logic pembacaan K1-K4 akan bernilai ‘0’ (LOW)
Dengan sistem matrix, tiap tombol dapat dideteksi penekanannya dengan membaca status logic di K1-K4 dengan memberikan logic yang berbeda secara bergantian di baris B1-B4. Teknik demikian disebut dengan teknik ‘scanning’.
Mendeteksi penekanan tombol Keypad di Raspberry Pi
Setelah mengetahui konsep desain keypad, mari kita coba implementasikan di Raspberry Pi. Alat dan bahan yang perlud disiapkan antara lain:
- Modul Basic Trainer Kit (di dalamnya sudah ada keypad)
- Raspberry Pi 3 atau 4, bisa diembed ke modul Basic Trainer Kit
- Kabel jumper female to female 8 pcs (sudah tersedia sebagai kelengkapan modul BTK)
- Power supply (sudah tersedia sebagai kelengkapan modul BTK)
- Laptop
- Smartphone sebagai hotspot WIFI
- Software Putty dan Notepad++ (setup dan cara pakainya bisa dibaca di artikel “persiapan environment pemrograman Raspi“)
Gambar rangkaian untuk percobaan ini adalah sebagai berikut
Konfigurasi Pinout:
baris keypad B1 = pin Raspi GPIO2
baris keypad B2 = pin Raspi GPIO3
baris keypad B3 = pin Raspi GPIO4
baris keypad B4 = pin Raspi GPIO17
kolom keypad K1 = pin Raspi GPIO27
kolom keypad K2 = pin Raspi GPIO22
kolom keypad K3 = pin Raspi GPIO10
kolom keypad K4 = pin Raspi GPIO9
Untuk wiring silahkan jumper kabel dari pin header keypad di modul Basic Trainer Kit ke pin Raspberry Pi seperti pada gambar berikut ini:
Sebelum mulai mengedit script dan menjalankannya, Anda harus menghubungkan Raspberry Pi dan laptop Anda dalam network yang sama. Cara mudahnya adalah menjadikan smartphone Anda sebagai hotspot kemudian arahkan Raspberry Pi dan laptop ke hotspot smartphone tadi. Untuk detail langkah ini bisa Anda baca caranya di artikel ini
Berikutnya, buka Notepad++ dan tuliskan baris program di bawah
import RPi.GPIO as GPIO import time B1 = 2 B2 = 3 B3 = 4 B4 = 17 K1 = 27 K2 = 22 K3 = 10 K4 = 9 GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(B1, GPIO.OUT) GPIO.setup(B2, GPIO.OUT) GPIO.setup(B3, GPIO.OUT) GPIO.setup(B4, GPIO.OUT) GPIO.setup(K1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(K2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(K3, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(K4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) def deteksi(baris, karakter): GPIO.output(baris, GPIO.HIGH) if(GPIO.input(K1) == 1): print(karakter[0]) if(GPIO.input(K2) == 1): print(karakter[1]) if(GPIO.input(K3) == 1): print(karakter[2]) if(GPIO.input(K4) == 1): print(karakter[3]) GPIO.output(baris, GPIO.LOW) while True: deteksi(B1, ["1","2","3","A"]) deteksi(B2, ["4","5","6","B"]) deteksi(B3, ["7","8","9","C"]) deteksi(B4, ["*","0","#","D"]) time.sleep(0.2)
Simpan dengan nama (misalnya) “keypad.py” (jangan lupa tetap tambahkan tanda petik dua saat menyimpan file non teks di Notepad++)
Buka aplikasi Putty, kemudian remote login ke Raspberry Anda. Masukkan user ‘pi’ dan password ‘raspberry’ setelah berhasil ‘masuk’ ke Raspi
Jalankan program ‘keypad.py’ dengan mengetikkan perintah ‘python keypad.py’ (tanpa tanda petik) di terminal console
Amati perubahan yang terjadi di terminal console saat ada penekanan tombol keypad di modul Basic Trainer Kit. Seharusnya tombol yang ditekan akan muncul sebagai tulisan di layar terminal Putty Anda.
Penjelasan program keypad-Raspi :
Baris [1-2] : memanggil library yang dibutuhkan, library RPi.GPIO untuk handling GPIO Raspi, library time untuk menangani fungsi delay (sleep)
Baris [4-12] : mendefinisikan pin GPIO Raspi yang dipakai. Perhatikan gambar rangkaian pada gambar di atas
Baris [14-25] : setup pin GPIO dalam library RPi.GPIO. Perhatikan bahwa untuk pin baris (B1-B4) diset sebagai output dan pin kolom (K1-K4) diset sebagai pin input dengan status pull down (normalnya logic 0)
Baris [27-37] : function untuk mengeluarkan logic dan menerjemahkan tombol yang ditekan
Baris [40-45] : proses scanning tombol dengan memanggil function ‘deteksi’
Demikian sedikit tutorial mengenai cara menangani keypad 4×4 matriks di Raspberry Pi 3/4, semoga dapat membantu dalam menyelesaikan project Anda. Keypad 4*4 ini adalah salah komponen yang terdapat dalam modul Basic Trainer Kit. Selain Raspberry Pi, modul ini juga kompatibel dengan controller lain (Arduino, NodeMCU, dll) dan banyak juga tersedia tutorialnya.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com