Membuat Sistem Keamanan Raspberry Pi Pico dengan Keypad 4x4 dan Alarm Buzzer

Raspberry Pi Pico merupakan mikrokontroler yang dapat digunakan untuk membuat berbagai proyek elektronika dan sistem otomatisasi. Selain digunakan untuk membaca sensor atau mengendalikan LED, Raspberry Pi Pico juga dapat dimanfaatkan untuk membuat sistem keamanan berbasis password.

Pada proyek kali ini, Raspberry Pi Pico digunakan untuk membuat sistem keamanan dengan keypad 4x4 dan alarm buzzer. Keypad berfungsi sebagai perangkat input untuk memasukkan password, sedangkan LED dan buzzer digunakan sebagai indikator status sistem. Sistem akan memeriksa password yang dimasukkan oleh pengguna. Jika password benar, LED akan memberikan indikator bahwa akses diterima dan buzzer berbunyi sebagai tanda bahwa password benar. Jika password salah, sistem akan memberikan peringatan menggunakan LED dan buzzer. Proyek ini tidak menggunakan motor servo atau mekanisme pengunci sehingga rangkaiannya relatif sederhana dan cocok untuk belajar membuat sistem keamanan menggunakan Raspberry Pi Pico dan MicroPython.

Cara Kerja Sistem

Sistem keamanan ini bekerja dengan keypad 4x4 sebagai media untuk memasukkan password. Ketika pengguna menekan tombol pada keypad, Raspberry Pi Pico akan membaca setiap karakter yang dimasukkan dan menyusunnya menjadi sebuah password. Setelah seluruh password dimasukkan, Raspberry Pi Pico akan melakukan pemeriksaan terhadap password tersebut untuk menentukan apakah password yang diberikan benar atau salah.

 

Jika password yang dimasukkan benar, sistem akan menjalankan tindakan yang telah ditentukan, misalnya menonaktifkan alarm atau memberikan akses. Sebaliknya, jika password salah, buzzer dapat digunakan sebagai alarm untuk memberikan tanda bahwa password yang dimasukkan tidak sesuai.

 

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

Komponen yang Dibutuhkan

Untuk membuat sistem keamanan ini, beberapa komponen yang diperlukan adalah:

- Raspberry Pi Pico

- Keypad 4x4

- LED

- Resistor LED 220Ω atau 330Ω

- Buzzer

- Breadboard

- Kabel jumper

- Kabel USB

- Komputer atau laptop

- Thonny IDE

- MicroPython

Jika menggunakan buzzer aktif, pengendaliannya lebih sederhana karena buzzer dapat dinyalakan dan dimatikan menggunakan GPIO.

Wiring Raspberry Pi Pico dengan Keypad 4x4

Keypad 4x4 mempunyai total 8 pin, yang terdiri dari 4 pin baris atau Row dan 4 pin kolom atau Column. Contoh koneksi yang digunakan pada proyek ini adalah sebagai berikut:


Pin Keypad

Raspberry Pi Pico

R1

GP2

R2

GP3

R3

GP4

R4

GP5

C1

GP6

C2

GP7

C3

GP8

C4

GP9


Susunan pin tersebut dapat disesuaikan dengan kebutuhan. Namun, jika wiring diubah, nomor GPIO pada program juga harus disesuaikan.

Susunan Tombol Keypad 4x4

Keypad yang digunakan mempunyai susunan tombol seperti berikut:

 

 

 

Pada proyek ini, tombol angka digunakan untuk memasukkan password. Tombol # digunakan untuk mengonfirmasi password, sedangkan tombol * digunakan untuk menghapus input password.

Wiring LED

LED digunakan sebagai indikator visual untuk menunjukkan kondisi sistem keamanan. Contoh koneksi:


Komponen

Raspberry Pi Pico

Anoda LED (+)

GP15 melalui resistor 220Ω/330Ω

Katoda LED (-)

GND


Resistor dipasang secara seri dengan LED untuk membatasi arus sehingga LED dan GPIO Raspberry Pi Pico tetap aman. Ketika GPIO GP15 bernilai HIGH, LED akan menyala.

Wiring Buzzer

Buzzer digunakan sebagai alarm atau indikator suara. Jika menggunakan buzzer aktif dengan dua pin:


Buzzer

Raspberry Pi Pico

(+)

GP16

(-)

GND



Catatan: Jika buzzer yang digunakan membutuhkan arus lebih besar daripada kemampuan GPIO, gunakan transistor sebagai driver. Untuk buzzer kecil yang sesuai dengan GPIO, rangkaian sederhana dapat digunakan sesuai spesifikasinya.

Program Sistem Keamanan Raspberry Pi Pico

Setelah seluruh rangkaian selesai, Raspberry Pi Pico dapat diprogram menggunakan MicroPython. Program berikut menggunakan password 2178.

 

from machine import Pin

from time import sleep


# =========================

# KONFIGURASI KEYPAD

# =========================


rows = [

    Pin(2, Pin.OUT),

    Pin(3, Pin.OUT),

    Pin(4, Pin.OUT),

    Pin(5, Pin.OUT)

]


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

]


# =========================

# KONFIGURASI OUTPUT

# =========================


led = Pin(15, Pin.OUT)

buzzer = Pin(16, Pin.OUT)


# =========================

# PASSWORD

# =========================


password_benar = "2178"

password = ""



# =========================

# FUNGSI MEMBACA KEYPAD

# =========================


def scan_keypad():


    for row in range(4):


        rows[row].value(1)


        for col in range(4):


            if cols[col].value() == 1:


                key = keys[row][col]


                rows[row].value(0)


                sleep(0.2)


                while cols[col].value() == 1:

                    sleep(0.01)


                return key


        rows[row].value(0)


    return None



# =========================

# FUNGSI BUZZER

# =========================


def bunyi_buzzer(jumlah):


    for i in range(jumlah):

        buzzer.value(1)

        sleep(0.2)


        buzzer.value(0)

        sleep(0.2)



# =========================

# KONDISI AWAL

# =========================


led.value(0)

buzzer.value(0)


print("================================")

print(" SISTEM KEAMANAN RASPBERRY PICO")

print("================================")

print("Masukkan password:")



# =========================

# PROGRAM UTAMA

# =========================


while True:


    key = scan_keypad()


    if key is not None:


        print("Tombol ditekan:", key)


        # -------------------------

        # TOMBOL ANGKA

        # -------------------------


        if key.isdigit():


            password += key


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



        # -------------------------

        # TOMBOL *

        # -------------------------


        elif key == "#":


            password = ""


            print("Password dihapus")



        # -------------------------

        # TOMBOL #

        # -------------------------


        elif key == "*":


            print("Memeriksa password...")


            # Password benar

            if password == password_benar:


                print("ACCESS GRANTED")

                print("Password benar!")


                led.value(1)


                bunyi_buzzer(1)


                sleep(3)


                led.value(0)



            # Password salah

            else:


                print("ACCESS DENIED")

                print("Password salah!")


                for i in range(3):


                    led.value(1)

                    buzzer.value(1)


                    sleep(0.2)


                    led.value(0)

                    buzzer.value(0)


                    sleep(0.2)


            # Reset password

            password = ""


            print("Masukkan password kembali:")


Penjelasan Program

1. Import Library

Bagian awal program menggunakan beberapa library MicroPython:

 

from machine import Pin

from time import sleep


Pin digunakan untuk mengatur GPIO Raspberry Pi Pico sebagai input atau output. Sedangkan sleep() digunakan untuk memberikan jeda waktu pada program.

2. Konfigurasi GPIO Keypad

Empat GPIO pertama digunakan untuk baris keypad: 

 

rows = [

    Pin(2, Pin.OUT),

    Pin(3, Pin.OUT),

    Pin(4, Pin.OUT),

    Pin(5, Pin.OUT)

]


Sedangkan empat GPIO berikutnya digunakan untuk 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)

]


Raspberry Pi Pico akan mengaktifkan baris satu per satu dan memeriksa kolom untuk menentukan tombol yang ditekan.

3. Konfigurasi LED dan Buzzer 

LED menggunakan GPIO GP15:

 

led = Pin(15, Pin.OUT)


Sedangkan buzzer menggunakan GP16:

 

buzzer = Pin(16, Pin.OUT)


Keduanya diatur sebagai output karena Raspberry Pi Pico akan mengendalikan kondisi ON dan OFF perangkat tersebut.

4. Menentukan Password

Password yang digunakan ditentukan melalui:

 

password_benar = "2178"


Artinya, pengguna harus memasukkan 2 → 1 → 7 → 8→ * untuk mendapatkan akses. Password dapat diganti dengan kombinasi angka lain. Contohnya:

 

password_benar = "2178"


5. Fungsi Scan Keypad

Fungsi scan_keypad() bertugas membaca tombol yang ditekan.

 

def scan_keypad():


    for row in range(4):


        rows[row].value(1)


        for col in range(4):


            if cols[col].value() == 1:


                key = keys[row][col]


                rows[row].value(0)


                sleep(0.2)


                while cols[col].value() == 1:

                    sleep(0.01)


                return key


        rows[row].value(0)


    return None


Program akan memeriksa keempat baris dan keempat kolom keypad. Ketika menemukan kombinasi baris dan kolom yang aktif, program mengambil karakter dari array keys. Sebagai contoh, jika tombol 5 ditekan, fungsi akan mengembalikan karakter 5.

6. Fungsi Buzzer

Fungsi berikut digunakan untuk menghasilkan bunyi buzzer:

 

def bunyi_buzzer(jumlah):


    for i in range(jumlah):

        buzzer.value(1)

        sleep(0.2)


        buzzer.value(0)

        sleep(0.2)


Parameter jumlah menentukan berapa kali buzzer berbunyi. Jika dipanggil dengan bunyi_buzzer(1), buzzer akan berbunyi satu kali.

7. Memasukkan Password

Ketika tombol angka ditekan, karakter tersebut ditambahkan ke variabel password.

 

if key.isdigit():


    password += key


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


Misalnya pengguna memasukkan:

 

2

1

7

8


Serial Monitor tidak akan menampilkan password sebenarnya. Outputnya menjadi:

 

Password: *

Password: **

Password: ***

Password: ****


Cara ini membuat input password tidak ditampilkan secara langsung pada Serial Monitor.

8. Menghapus Password dengan Tombol #

Tombol # digunakan untuk menghapus seluruh input password.

 

elif key == "#":


    password = ""


    print("Password dihapus")


Contohnya, pengguna tidak sengaja memasukkan 1288. Pengguna dapat menekan # dan kemudian memasukkan password dari awal.

9. Memeriksa Password dengan Tombol

Tombol * digunakan untuk melakukan pemeriksaan password.

 

elif key == "*":


    if password == password_benar:


Program membandingkan password yang dimasukkan pengguna dengan password yang tersimpan pada variabel password_benar. Jika sama, berarti password benar. Jika berbeda, berarti password salah.

10. Kondisi Ketika Password Benar

Jika password benar, program menjalankan:

 

led.value(1)

bunyi_buzzer(1)


LED akan menyala dan buzzer berbunyi satu kali. Serial Monitor menampilkan:

 

ACCESS GRANTED

Password benar!


LED kemudian akan menyala selama beberapa detik sebelum dimatikan kembali.

11. Kondisi Ketika Password Salah

Jika password tidak sesuai, program menjalankan bagian:

 

for i in range(3):


    led.value(1)

    buzzer.value(1)


    sleep(0.2)


    led.value(0)

    buzzer.value(0)


    sleep(0.2)


LED dan buzzer akan berkedip atau berbunyi sebanyak tiga kali. Serial Monitor akan menampilkan:

 

ACCESS DENIED

Password salah!


Dengan demikian, pengguna dapat mengetahui bahwa password yang dimasukkan tidak benar.

Pengujian Sistem Keamanan

Setelah program dijalankan, buka Serial Monitor pada Thonny. Program akan menampilkan:

 

================================

 SISTEM KEAMANAN RASPBERRY PICO

================================

Masukkan password:


Kemudian masukkan password yang telah ditentukan.

Pengujian Password Benar

Jika password 2178 maka tekan 2 → 1 → 7 → 8 → *.

Output:

 

 

LED akan menyala dan buzzer berbunyi satu kali.

 


Pengujian Password Salah

Selanjutnya, masukkan password yang salah, misalnya 1288 kemudian tekan *.

Output:

 

 

LED akan berkedip dan buzzer akan berbunyi sebanyak tiga kali.

 


Pengembangan Sistem Keamanan

Sistem keamanan ini masih berupa prototipe sederhana. Namun, rangkaiannya dapat dikembangkan dengan menambahkan berbagai fitur.

1. Menambahkan OLED Display

OLED dapat digunakan untuk menampilkan informasi seperti:

 

ENTER PASSWORD


Setelah password diperiksa:

 

ACCESS GRANTED


atau:

 

ACCESS DENIED


Dengan OLED, sistem menjadi lebih interaktif karena pengguna tidak perlu melihat Serial Monitor.

2. Membatasi Percobaan Password

Sistem juga dapat dikembangkan dengan membatasi jumlah kesalahan password. Contohnya, pengguna hanya mendapatkan 3 kali kesempatan. Jika password salah tiga kali, sistem dapat mengaktifkan alarm lebih lama:

 

WARNING!

SYSTEM LOCKED


Sistem kemudian dapat menunggu beberapa detik sebelum kembali menerima input.

3. Menambahkan LED dengan Warna Berbeda

Jika tersedia LED tambahan, sistem dapat menggunakan dua LED. Contohnya:

- LED hijau → password benar.

- LED merah → password salah.

Dengan demikian, status sistem dapat diketahui dengan lebih mudah.

4. Menggunakan Raspberry Pi Pico W

Jika sistem membutuhkan koneksi internet, proyek dapat dikembangkan menggunakan Raspberry Pi Pico W. Dengan koneksi Wi-Fi, sistem keamanan dapat dikembangkan lebih lanjut untuk mengirim informasi seperti:

 

Percobaan password salah


ke server atau aplikasi tertentu.

Kelebihan Sistem Keamanan Raspberry Pi Pico

Penggunaan Raspberry Pi Pico untuk proyek ini mempunyai beberapa kelebihan, antara lain:

1. Rangkaian Sederhana

Sistem hanya membutuhkan beberapa komponen dasar seperti keypad, LED, dan buzzer sehingga cocok untuk pemula.

2. Menggunakan MicroPython

Pemrograman menggunakan MicroPython relatif mudah dipahami, terutama bagi pengguna yang sudah mengenal dasar bahasa Python.

3. Tidak Membutuhkan Motor Servo

Sistem dapat digunakan sebagai simulasi sistem keamanan tanpa membutuhkan mekanisme pengunci seperti servo atau solenoid.

4. Mudah Dikembangkan

Rangkaian dapat dikembangkan dengan OLED, sensor pintu, LED tambahan, relay, atau Raspberry Pi Pico W.

Kekurangan Sistem

Meskipun dapat digunakan untuk pembelajaran, sistem ini belum dapat dianggap sebagai sistem keamanan yang sebenarnya. Password masih disimpan langsung di dalam program sehingga sistem belum memiliki mekanisme keamanan tingkat lanjut. Selain itu, LED dan buzzer hanya berfungsi sebagai indikator dan alarm, bukan sebagai mekanisme pengunci fisik. Oleh karena itu, proyek ini lebih tepat digunakan sebagai prototipe sistem keamanan berbasis Raspberry Pi Pico untuk mempelajari keypad, password, GPIO, LED, dan buzzer.

 

Baca juga: Cara Membuat Random Number Generator dengan Raspberry Pi Pico dan LED

 

 

 

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

Posting Komentar

0 Komentar