Raspberry Pi Pico Password System dengan Keypad 4x4: Sistem Keamanan Berbasis MicroPython

Raspberry Pi Pico dapat digunakan untuk berbagai proyek elektronika dan sistem kontrol sederhana. Salah satu proyek yang menarik untuk dipelajari adalah membuat password system menggunakan keypad 4x4. Pada proyek ini, keypad 4x4 digunakan sebagai perangkat input untuk memasukkan kombinasi password. Raspberry Pi Pico kemudian membaca setiap tombol yang ditekan dan membandingkannya dengan password yang sudah ditentukan di dalam program. Jika password yang dimasukkan benar, sistem akan memberikan respons berupa pesan "Password Benar". Sebaliknya, jika password salah, sistem akan memberikan pesan "Password Salah". Proyek Raspberry Pi Pico dengan keypad 4x4 ini cocok untuk mempelajari konsep input digital, pemrograman MicroPython, pengolahan string, serta logika sederhana untuk membuat sistem keamanan.

Apa yang Akan Dibuat?

Sistem yang dibuat memiliki alur kerja seperti berikut:

Keypad 4x4 → Raspberry Pi Pico → Pemeriksaan Password → Output

Pengguna memasukkan password melalui keypad. Setelah tombol tertentu ditekan sebagai tanda bahwa input selesai, Raspberry Pi Pico akan memeriksa password tersebut. Contohnya, password yang digunakan adalah: 1289. Jika pengguna memasukkan 1289, sistem akan menganggap password benar. Jika memasukkan kombinasi lain, sistem akan menganggap password salah.

 

Baca juga: Mengirim Data Jarak HC-SR04 dari Raspberry Pi Pico W ke Web Server melalui WiFi 

Komponen yang Dibutuhkan

Untuk membuat Pico Password System dengan Keypad 4x4, siapkan beberapa komponen berikut:


Komponen

Jumlah

Raspberry Pi Pico

1

Keypad Matrix 4x4

1

Kabel jumper

Secukupnya

Breadboard

1

Kabel USB

1


Program akan dibuat menggunakan MicroPython dan dapat dijalankan melalui Thonny IDE.

Mengenal Keypad 4x4

Keypad 4x4 merupakan keypad berbentuk matriks yang memiliki 16 tombol. Tombol tersebut biasanya terdiri dari angka 0–9 dan *, # serta huruf A-D. Keypad memiliki 4 jalur baris (row) dan 4 jalur kolom (column). Dengan metode matrix scanning, Raspberry Pi Pico dapat mengetahui tombol mana yang sedang ditekan. Susunan tombol keypad 4x4 umumnya seperti berikut:

 


Dalam proyek ini, tombol # dapat digunakan sebagai tombol Enter untuk mengakhiri input password. Tombol * dapat digunakan untuk menghapus input.

Rangkaian Raspberry Pi Pico dengan Keypad 4x4

Keypad 4x4 memiliki delapan pin yang terdiri dari empat pin row dan empat pin column. Contoh koneksi yang digunakan pada proyek ini:


Keypad 4x4

Raspberry Pi Pico

R1

GP2

R2

GP3

R3

GP4

R4

GP5

C1

GP6

C2

GP7

C3

GP8

C4

GP9


Pastikan koneksi antara keypad dan Raspberry Pi Pico sesuai dengan konfigurasi pin yang digunakan pada program.

Catatan: Urutan pin keypad dapat berbeda tergantung modul yang digunakan. Jika susunan pin berbeda, sesuaikan koneksi row dan column dengan keypad yang digunakan.

Cara Kerja Pico Password System

Sistem password bekerja melalui beberapa tahap, yaitu:

1. Raspberry Pi Pico Menunggu Input

Setelah program dijalankan, Raspberry Pi Pico akan berada dalam kondisi menunggu pengguna menekan tombol keypad. Misalnya password yang ditentukan adalah 1289.

2. Pengguna Memasukkan Password

Pengguna menekan tombol 1 → 2 → 8 → 9. Setiap tombol yang ditekan akan disimpan ke dalam variabel input password.

3. Tombol # Sebagai Enter

Setelah selesai memasukkan password, pengguna menekan tombol #. Program kemudian membandingkan input dengan password yang sudah ditentukan.

4. Password Diperiksa

Jika input = password maka sistem menampilkan "Password Benar", jika tidak sama "Password Salah". Setelah itu, input password dikosongkan kembali sehingga pengguna dapat mencoba lagi.

Program Password System Raspberry Pi Pico

Berikut contoh program MicroPython Raspberry Pi Pico dengan keypad 4x4. Program ini menggunakan empat pin sebagai row dan empat pin sebagai column.

 

from machine import Pin

from time import sleep


# Pin baris keypad

rows = [

    Pin(2, Pin.OUT),

    Pin(3, Pin.OUT),

    Pin(4, Pin.OUT),

    Pin(5, Pin.OUT)

]


# Pin kolom keypad

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']

]


# Password yang benar

password = "1289"


# Variabel untuk menyimpan input

input_password = ""



def get_key():

    for i, row in enumerate(rows):


        # Aktifkan satu baris

        row.value(1)


        for j, col in enumerate(cols):


            if col.value() == 1:

                key = keys[i][j]


                # Tunggu tombol dilepas

                while col.value() == 1:

                    sleep(0.01)


                row.value(0)


                return key


        row.value(0)


    return None



print("=== Pico Password System ===")

print("Masukkan password:")

print("Tekan # untuk Enter")

print("Tekan * untuk menghapus")



while True:


    key = get_key()


    if key is not None:


        print("Tombol:", key)


        # Tombol Enter

        if key == '#':


            print("Memeriksa password...")


            if input_password == password:

                print("Password Benar!")

            else:

                print("Password Salah!")


            # Reset input

            input_password = ""


            print("Masukkan password lagi:")


        # Tombol hapus

        elif key == '*':


            input_password = ""

            print("Input dihapus.")

            print("Masukkan password lagi:")


        # Tombol biasa

        else:


            input_password += key


            # Menampilkan tanda * agar password tidak terlihat

            print("Password:", "*" * len(input_password))


        sleep(0.1)


Penjelasan Program

1. Menentukan Pin Keypad

Bagian berikut menentukan empat pin yang digunakan sebagai row:

 

rows = [

    Pin(2, Pin.OUT),

    Pin(3, Pin.OUT),

    Pin(4, Pin.OUT),

    Pin(5, Pin.OUT)

]


Sedangkan pin GP6 hingga GP9 digunakan sebagai 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)

]


Konfigurasi tersebut harus sesuai dengan kabel yang dipasang dari keypad ke Raspberry Pi Pico.

2. Membuat Susunan Tombol

Susunan tombol ditulis dalam bentuk array dua dimensi:

 

keys = [

    ['1', '2', '3', 'A'],

    ['4', '5', '6', 'B'],

    ['7', '8', '9', 'C'],

    ['*', '0', '#', 'D']

]


Program menggunakan susunan tersebut untuk menentukan tombol berdasarkan posisi row dan column.

3. Menentukan Password

Password ditentukan menggunakan variabel:

  

password = "1289"

 

Jika ingin mengganti password menjadi 5678, cukup ubah menjadi:

 

password = "5678"

 

4. Menyimpan Input Password

Variabel berikut digunakan untuk menyimpan tombol yang telah ditekan:

 

input_password = ""


Setiap kali pengguna menekan tombol angka, karakter tersebut akan ditambahkan:

 

input_password += key


Misalnya pengguna menekan 1, 2, 8, dan 9, maka nilai input_password menjadi 1289.

5. Memeriksa Password

Ketika tombol # ditekan, program akan membandingkan input dengan password:

 

if input_password == password:

    print("Password Benar!")

else:

    print("Password Salah!")


Jika keduanya sama, password dianggap benar.

Pengujian Sistem

Setelah program berhasil dijalankan pada Raspberry Pi Pico, buka Shell pada Thonny IDE untuk melihat hasilnya. Saat sistem aktif, akan muncul:

 


Jika memasukkan password yang salah, misalnya: 189D, maka hasilnya:



Dengan demikian, Raspberry Pi Pico berhasil digunakan sebagai pengendali sistem password menggunakan keypad 4x4.

Pengembangan Sistem Password

Proyek ini masih dapat dikembangkan menjadi sistem yang lebih kompleks.

1. Menggunakan LED sebagai Indikator

LED dapat digunakan sebagai indikator status password. Misalnya:

- LED menyala → password benar

- LED mati → password salah

Dengan tambahan LED, pengguna tidak harus melihat Shell Thonny untuk mengetahui hasil pemeriksaan password.

2. Menambahkan Buzzer

Buzzer juga dapat ditambahkan untuk memberikan suara ketika tombol keypad ditekan. Contohnya:

- Bunyi pendek → tombol ditekan

- Bunyi berbeda → password benar

- Bunyi panjang → password salah

3. Menggunakan Servo sebagai Pengunci

Proyek ini dapat dikembangkan dengan menambahkan OLED I2C sebagai media untuk menampilkan informasi kepada pengguna. Raspberry Pi Pico akan menerima input password dari keypad 4x4, kemudian memeriksa password yang dimasukkan. Hasil pemeriksaan tersebut selanjutnya dapat ditampilkan pada OLED. Jika password yang dimasukkan benar, OLED dapat menampilkan pesan bahwa password diterima. Sebaliknya, jika password salah, OLED dapat menampilkan pesan bahwa password yang dimasukkan tidak sesuai. Dengan penambahan OLED, sistem password menjadi lebih interaktif dan mudah digunakan karena pengguna dapat melihat informasi mengenai proses input dan hasil pemeriksaan password secara langsung melalui layar.

4. Menambahkan Batas Percobaan

Sistem juga dapat diberi batas jumlah percobaan. Misalnya pengguna hanya mendapatkan tiga kesempatan. Jika password salah sebanyak tiga kali, sistem dapat mengaktifkan buzzer atau menonaktifkan input keypad selama beberapa detik. Konsep ini membuat Pico Password System menjadi lebih mirip sistem keamanan sederhana.

Kelebihan Menggunakan Keypad 4x4

Penggunaan keypad 4x4 pada Raspberry Pi Pico memiliki beberapa keuntungan, antara lain:

1. Keypad menyediakan banyak tombol dalam jumlah pin yang relatif sedikit karena menggunakan sistem matriks.

2. Keypad mudah digunakan untuk memasukkan angka atau karakter.

3. Keypad dapat digunakan untuk berbagai proyek seperti sistem password, digital door lock, alarm sederhana, mesin input angka, sistem akses ruangan, kontrol perangkat elektronik, dan proyek IoT sederhana.

Oleh karena itu, kombinasi Raspberry Pi Pico dan keypad 4x4 cukup menarik untuk proyek pembelajaran mikrokontroler.

 

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

 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.

Posting Komentar

0 Komentar