PROJEK




SMART ELECTRONIC SAFE BOX 

DENGAN SISTEM KEAMANAN MULTI-LEVEL





Di tengah meningkatnya kebutuhan akan perlindungan data dan barang berharga, sistem pengamanan konvensional sering kali tidak lagi memadai. Kunci fisik mudah diduplikasi, dan sistem password tunggal rentan terhadap pembobolan. Oleh karena itu, diperlukan sistem keamanan berlapis (multi-level) yang dapat meminimalkan risiko pembobolan dan memberikan perlindungan yang lebih adaptif terhadap berbagai jenis ancaman.

Proyek Smart Electronic Safe Box dengan Sistem Keamanan Multi-Level hadir sebagai solusi inovatif yang menggabungkan berbagai metode otentikasi dan sensorik untuk meningkatkan keamanan. Dengan menggunakan Raspberry Pi Pico sebagai otak sistem, proyek ini mengintegrasikan beberapa teknologi utama:
  • Keypad dan Password sebagai otentikasi pertama.
  • Sensor sentuh untuk verifikasi kehadiran manusia secara fisik.
  • Sensor PIR (IR Motion) untuk mendeteksi keberadaan mencurigakan di sekitar brankas.
  • Sensor getaran (piezoelektrik) untuk mendeteksi upaya pembongkaran secara paksa.
  • Buzzer sebagai sistem peringatan audio.
  • Servo motor sebagai pengunci dan pembuka brankas secara mekanis.

Semua ini dikendalikan dan disinkronkan melalui komunikasi UART, yang menjadikan sistem tetap efisien dan real-time dalam merespons kejadian. Dengan pendekatan ini, proyek tidak hanya menunjukkan pemanfaatan teknologi mikroprosesor dan sensorik, tapi juga memberikan solusi nyata untuk sistem keamanan personal maupun skala kecil seperti rumah, kantor, atau laboratorium.







  1. Memahami penggunaan mikroprosesor dan mikrokontroler dalam pembuatan prototype.
  2. Menciptakan perangkat yang dapat beroperasi secara otomatis dengan menggunakan mikroprosesor dan mikrokontroler sebagai dasar sistemnya.
  3. Membuat brankas elektronik berbasis Raspberry Pi Pico dengan keamanan berlapis menggunakan password, sentuhan, sensor gerak, dan getaran, serta kontrol otomatis melalui UART dan tampilan OLED.





ALAT:

1. Breadboard


2. Kabel jumper 



3. Kabel USB





BAHAN:

1. Raspberry Pi Pico


2. Sensor Touch



3. Sensor Infrared


4. Sensor Fiezo 



6. Motor Servo



7. Buzzer



8. Oled



9. Baterai


10. Keypad 4x4






1. PWM (Pulse Width Modulation)

PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).



  • Duty Cycle = tON / ttotal
  • tON = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1)
  • tOFF = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah (low atau 0)
  • ttotal = Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut juga dengan “periode satu gelombang”
Pada board Arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite();.

PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 x 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.


2.  ADC (Analog Digital Converter)



3. UART ( Universal Asynchronous Receiver Trasmitter)





Pada Proyek:
  • TX Pico 1 → RX Pico 2 untuk mengirim perintah "UNLOCK", "LOCK", "ALARM", dan "ALARM10".
  • TX Pico 2 → RX Pico 1 disiapkan untuk komunikasi dua arah (meskipun belum digunakan dalam program ini, bisa dikembangkan untuk feedback status).



4. I2C (Inter Integrated Circuit)

Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.

Cara Kerja Komunikasi 12C:


Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop.
  • Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.
  • Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL.
R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave)

ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.



5. Raspberry Pi Pico

Raspberry Pi Pico adalah sebuah mikrokontroler berbasis chip RP2040 yang dikembangkan oleh Raspberry Pi Foundation. Berbeda dengan Raspberry Pi yang merupakan komputer mini (single-board computer), Pico lebih difokuskan sebagai platform embedded system untuk kendali perangkat keras, automasi, dan pemrosesan input/output (I/O) dalam proyek elektronika dan IoT.

Raspberry Pi Pico dirancang untuk menjadi murah, efisien daya, dan fleksibel, sangat cocok untuk pendidikan, hobi, maupun aplikasi industri ringan.

Raspberry Pi Pico adalah papan rangkaian elektronik yang di dalamnya terdapat komponen utama chip mikrokontroler RP2040, yang dirancang dan diproduksi oleh Raspberry Pi Foundatio. Tidak seperti komputer mini raspberry Pi lainnya yang menjalankan sistem operasi seperti Linux, Pico dirancang untuk tugas-tugas yang lebih sederhana dan langsung (embedded system), seperti membaca sensor, mengontrol perangkat, atau melakukan pengolahan data pada tingkat hardware. Adapun spesifikasi dari Raspberry Pi Pico adalah sebagai berikut:


Spesifikasi:


Raspberry Pi Pico bekerja dengan prinsip mikrokontroler, yaitu mengeksekusi program yang telah dimasukkan ke dalam flash memory-nya. Berikut alur kerjanya:

  • Pemrograman: Kode ditulis (dalam MicroPython atau C/C++) di komputer dan diunggah ke Pico via USB.
  • Eksekusi: Pico membaca instruksi dari flash memory dan menjalankannya secara berurutan melalui CPU.
  • Pengendalian Perangkat: Pico dapat mengontrol berbagai komponen (sensor, aktuator) melalui pin GPIO.
  • Interaksi: Melalui komunikasi UART/I2C/SPI, Pico dapat bertukar data dengan perangkat lain, termasuk sesama mikrokontroler.



6. Sensor Touch

Digital Touch Sensor merupakan sebuah modul sensor yang berfungsi seperti tombol/saklar, namun cara penggunaanya hanya perlu dengan menyentuhnya menggunakan jari kita. Pada saat disentuh oleh jari, sensor akan mendeteksi aliran arus listrik pada tubuh manusia karena tubuh manusia dapat mengalirkan listrik. Data akan berlogika 1 (HIGH) saat disentuh oleh jari dan akan berlogika 0 (LOW) saat tidak disentuh.


Spesifikasi:

Pin out:


Grafik respon dari sensor touch:



  • Nilai 1 berarti sensor mendeteksi sentuhan dari pengguna, yang diperlukan untuk verifikasi akses setelah password dimasukkan.
  • Nilai 0 berarti tidak ada sentuhan terdeteksi.
  • Dalam programmu, pengguna diberi waktu hingga 30 detik untuk menyentuh sensor; jika tidak, akses ditolak dan alarm dipicu.



7.  Sensor Infrared


Infrared (IR) detektor atau sensor infra merah adalah komponen elektronika yang mengidentifikasi cahaya infra merah (infrared, IR). Saat ini, ada sensor infra merah yang dibuat khusus dalam satu modul dan disebut sebagai IR Detector Photomodules. IR Detector Photomodules merupakan chip detektor inframerah digital yang mengandung fotodiode dan penguat (amplifier). Sensor inframerah terdiri dari LED inframerah sebagai pemancar, sedangkan pada bagian penerima biasanya terdapat foto transistor, fotodioda, atau modul inframerah yang berfungsi untuk menerima sinar inframerah yang dikirimkan oleh pemancar.



Spesifikasi:

Pin out:

Grafik respon dari sensor infrared:



  • Garis oranye bernilai 1 menunjukkan periode saat gerakan terdeteksi (misalnya orang berada di depan brankas).
  • Saat bernilai 0, berarti tidak ada aktivitas di sekitar sensor.
  • Dalam sistemmu, jika gerakan terdeteksi terus-menerus selama lebih dari 180 detik, maka sistem akan memicu alarm.
  • Grafik ini membantu menggambarkan cara kerja monitoring gerakan secara real-time menggunakan sensor PIR.




8.  Sensor Fiezo


Sensor piezoelektrik (sering disebut piezo sensor) adalah sensor yang bekerja berdasarkan efek piezoelektrik, yaitu kemampuan material tertentu (seperti kristal kuarsa atau keramik piezo) untuk menghasilkan tegangan listrik saat mengalami tekanan atau getaran.
getaran, benturan, atau sentuhan
  • Alarm keamanan
  • Mikrofon
  • Pendeteksi getaran
  • Trigger sensor sentuh

Sensor piezo menghasilkan tegangan AC kecil saat materialnya mengalami tekanan atau getaran mekanis. Besarnya tegangan sebanding dengan intensitas gaya yang diberikan.

Tahapan kerja:

  1. Ketika sensor dalam kondisi diam, tidak ada output (tegangan = 0 atau sangat kecil).

  2. Saat diketuk, ditekan, atau digetarkan, material piezo menghasilkan tegangan listrik sesaat.

  3. Tegangan tersebut dapat diukur dengan pin ADC (Analog to Digital Converter) atau diproses dengan rangkaian penguat.

Spesifikasi:


Pin out:


Grafik respon sensor fiezo:



  • Garis biru menunjukkan nilai ADC yang dibaca dari sensor piezo secara terus-menerus.
  • Garis merah putus-putus menunjukkan ambang batas deteksi alarm (20000).
  • Ketika nilai ADC melampaui ambang ini (seperti pada detik ke-3 dan ke-7), sistem akan memicu alarm.
  • Grafik ini menggambarkan bagaimana sensor mendeteksi getaran besar sebagai lonjakan sinyal, yang menjadi dasar pemicu alarm.



9. Motor Servo


Servo Motor adalah perangkat listrik yang digunakan pada mesin-mesin industri pintar yang berfungsi untuk mendorong atau memutar objek dengan kontrol yang dengan presisi tinggi dalam hal posisi sudut, akselerasi dan kecepatan, sebuah kemampuan yang tidak dimiliki oleh motor biasa. Jika Anda ingin memutar dan mengarahkan objek pada beberapa sudut atau jarak tertentu, maka Anda harus menggunakan Servo Motor. Hal ini dimungkinkan dengan kombinasi motor biasa dan tambahan sensor dalam hal ini berupa encoder untuk umpan balik posisi.


Prinsip kerja motor servo yaitu motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar dibawah ini.

Pulse Width Modulation

Lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya.

Berdasarkan jenis supply arus listriknya Motor servo terdiri dari dua jenis yaitu motor servo AC dan motor servo DC.
1. Motor servo DC diaplikasikan ke mesin yang ringan seperti mainan elektronik, printer dan beberapa perangkat elektronik rumah.
2. Motor servo AC sering digunakan untuk mesin-mesin di industri karena spesifikasinya yang bisa menerima arus tinggi maupun beban berat.
Pada project kali ini kami menggunakan jenis Motor Servo DC SG90s.

Spesifikasi:


Pin out:




10. Buzzer


Buzzer merupakan komponen elektronik yang mampu menghasilkan getaran suara dalam bentuk gelombang bunyi. Getaran suara diproduksi saat buzzer menerima tegangan listrik yang sesuai dengan spesifikasi dan karakteristiknya. Buzzer sering digunakan sebagai alarm karena cara penggunaannya yang sederhana: cukup berikan tegangan input untuk menghasilkan getaran suara yang dapat didengar.

Pada dasarnya prinsip kerja buzzer hampir sama dengan loud speaker, jadi buzzer juga terdiri dari kumparan yang terpasang pada diafragma dan kemudian kumparan tersebut dialiri arus sehingga menjadi elektromagnet, kumparan tadi akan tertarik ke dalam atau keluar, tergantung dari arah arus dan polaritas magnetnya, karena kumparan dipasang pada diafragma maka setiap gerakan kumparan akan menggerakkan diafragma secara bolak-balik sehingga membuat udara bergetar yang akan menghasilkan suara.
 
Spesifikasi:


Pin out:




11. OLED LCD


OLED (Organic Light Emitting Diode) adalah teknologi layar yang menggunakan bahan organik untuk menghasilkan cahaya saat dialiri arus listrik. Berbeda dengan LCD yang membutuhkan backlight, OLED memancarkan cahaya sendiri, sehingga:

  • Lebih hemat daya

  • Kontras lebih tinggi (karena warna hitam benar-benar gelap)

  • Sudut pandang lebih luas

Modul OLED 0.96” dengan resolusi 128x64 piksel merupakan layar kecil monokrom yang banyak digunakan pada proyek mikrokontroler (seperti Arduino, ESP32, Raspberry Pi Pico) karena ringan, hemat energi, dan mudah diprogram.

Modul OLED ini biasanya menggunakan protokol komunikasi I2C (dua kabel: SDA dan SCL). Data yang dikirim oleh mikrokontroler akan dikonversi oleh driver IC SSD1306 menjadi piksel yang menyala di layar.

Langkah kerjanya:

  1. Mikrokontroler mengirimkan data karakter/grafik ke driver OLED (SSD1306).

  2. Driver mengatur tegangan ke piksel OLED berdasarkan data tersebut.

  3. Piksel akan menyala/mati untuk membentuk tampilan.

Spesifikasi:


Pin out:




12. Baterai


Baterai merupakan alat listrik-kimiawi yang menyimpan energi serta mengeluarkan tenaganya dalam bentuk listrik. Baterai ialah perangkat yang mampu menghasilkan tegangan DC, yaitu dengan cara mengubah energi kimia yang terkandung di dalamnya menjadi energi listrik melalui suatu reaksi elektrokimia, Redoks (Reduksi – Oksidasi). Baterai yang biasa dijual (disposable/sekali pakai) ini mempunyai tegangan listrik 1,5 volt. Baterai ada yang berbentuk tabung ataupun kotak.

Spesifikasi:




13. Keypad
Keypad adalah sekumpulan tombol atau sakelar yang disusun dalam kisi-kisi atau pola lainnya, biasanya ditemukan pada perangkat elektronik seperti telepon, kalkulator, dan sistem keamanan. Keypad memungkinkan pengguna untuk memasukkan data, perintah, atau informasi numerik ke dalam perangkat.

Spesifikasi:


Pin out:



13. Breadboard


Breadboard adalah papan tempat merakit rangkaian elektronik secara sementara tanpa perlu menyolder komponen. Breadboard memungkinkan pengguna untuk dengan mudah menyusun, menguji, dan memodifikasi rangkaian sebelum dibuat secara permanen di PCB (Printed Circuit Board). Karena sifatnya yang reusable dan fleksibel, breadboard sering digunakan dalam kegiatan pembelajaran, pengujian, dan pengembangan proyek elektronika.

Breadboard bekerja berdasarkan koneksi logam di dalam papan yang menghubungkan lubang-lubang tertentu. Ketika sebuah kaki komponen dimasukkan ke dalam lubang, maka kaki tersebut akan terhubung ke koneksi logam internal, dan secara otomatis terhubung dengan semua lubang lain dalam satu baris atau kolom (tergantung bagian breadboard).

Spesifikasi:



14. Kabel Jumper




Kabel jumper adalah kabel pendek yang digunakan untuk membuat koneksi listrik antara dua titik dalam rangkaian elektronik, terutama pada breadboard, modul, dan mikrokontroler seperti Arduino atau Raspberry Pi Pico.

Jenis kabel jumper yang umum digunakan:
  • Male to Male (M-M): Ujung kedua kabel berupa pin (jarum logam), digunakan untuk menghubungkan dua header female, seperti dari breadboard ke breadboard.
  • Female to Male (F-M): Satu ujung berupa lubang (female), satu lagi berupa pin (male), digunakan untuk menghubungkan komponen berpin seperti sensor (male) ke breadboard atau pin header.

Kabel jumper bekerja dengan menghantarkan arus listrik dari satu titik ke titik lain. Bagian konektor pada ujung kabel (male atau female) berfungsi sebagai media fisik untuk menghubungkan pin antar komponen elektronik.
Dalam proyek prototipe:
  • Kabel M-M digunakan saat menghubungkan dua jalur breadboard atau dari header ke breadboard.
  • Kabel F-M digunakan saat menyambungkan pin sensor/module ke breadboard atau mikrokontroler.
  • Kabel F-F (jika diperlukan) digunakan untuk menghubungkan dua pin male, seperti antar header.
Spesifikasi:




15. Kabel USB




USB (Universal Serial Bus) adalah standar kabel dan konektor yang digunakan untuk komunikasi dan suplai daya antara komputer dan perangkat elektronik lainnya. Kabel USB berfungsi sebagai media penghubung untuk mentransfer data dan daya listrik dari satu perangkat ke perangkat lain, seperti antara komputer dan mikrokontroler (misalnya Raspberry Pi Pico, Arduino), ponsel, printer, flashdisk, dan lainnya.

Terdapat berbagai jenis konektor USB, seperti:
  • USB Type-A (umum pada komputer/laptop)
  • USB Type-B (umum pada printer atau perangkat besar)
  • USB Mini dan Micro USB (pada perangkat kecil seperti HP lama, Arduino)
  • USB Type-C (generasi terbaru, reversible)
Kabel USB bekerja berdasarkan protokol komunikasi serial yang memungkinkan transfer data digital antara dua perangkat. Kabel ini memiliki empat hingga lima jalur utama di dalamnya:
  • VCC (5V) – jalur suplai daya
  • GND – ground
  • D+ dan D− – jalur data diferensial (untuk transfer data)
  • (opsional) ID – untuk menentukan mode koneksi pada USB OTG

Proses kerjanya:
  • Saat kabel USB terhubung, terjadi proses enumerasi di mana host (seperti komputer) mengenali perangkat USB yang tersambung.
  • Jika dikenali, host akan mengatur jalur komunikasi dan menyuplai daya ke perangkat.
  • Transfer data atau pengisian daya pun dimulai melalui jalur data dan daya yang tersedia.
Spesifikasi:






a. Prosedur[Kembali]

Langkah pertama dalam merangkai sistem brankas pintar ini adalah menyiapkan seluruh komponen yang dibutuhkan. Sistem terdiri dari dua Raspberry Pi Pico yang berperan sebagai unit input (Pico 1) dan output (Pico 2). Komponen yang digunakan meliputi satu buah keypad 4x3 untuk input sandi, sebuah sensor sentuh untuk verifikasi, sensor PIR untuk mendeteksi gerakan, sensor piezoelektrik untuk mendeteksi getaran, OLED display sebagai penampil status, satu buzzer sebagai alarm, serta sebuah motor servo untuk membuka atau mengunci brankas.

Setelah semua komponen tersedia, langkah selanjutnya adalah menghubungkan komponen-komponen tersebut ke Pico 1. OLED display terhubung menggunakan komunikasi I2C dengan pin GP16 sebagai SDA dan GP17 sebagai SCL. Keypad dihubungkan dengan baris keypad ke pin GP0, GP1, GP2, dan GP3, serta kolom ke pin GP9, GP10, dan GP11. Sensor sentuh dihubungkan ke pin GP6 dan sensor PIR ke pin GP7 sebagai input digital. Untuk sensor piezoelektrik yang bersifat analog, digunakan pin GP26 yang mendukung pembacaan ADC. Selanjutnya, untuk komunikasi antar Pico, pin GP4 pada Pico 1 digunakan sebagai TX dan GP5 sebagai RX.

Pada sisi Pico 2, komponen yang dikendalikan meliputi motor servo dan buzzer. Servo motor dihubungkan ke pin GP3 dan dikendalikan menggunakan sinyal PWM dengan frekuensi 50 Hz. Buzzer aktif dihubungkan ke pin GP2 dan dikendalikan secara digital. Untuk menerima perintah dari Pico 1, pin GP9 digunakan sebagai RX UART dan GP8 sebagai TX (jika diperlukan komunikasi dua arah). Penting untuk memastikan bahwa semua ground (GND) dari kedua Pico dan seluruh komponen terhubung satu sama lain untuk menjaga kestabilan sistem dan komunikasi UART.

Setelah koneksi hardware selesai, program kemudian diunggah ke masing-masing Raspberry Pi Pico. File main.py, ssd1306.py, dan keypadlib.py diunggah ke Pico 1 melalui Thonny IDE, sedangkan Pico 2 hanya memerlukan file main.py untuk mengontrol buzzer dan servo berdasarkan perintah yang diterima melalui UART. Setelah program berjalan, sistem akan menampilkan instruksi pada OLED, meminta pengguna memasukkan sandi lewat keypad, dan melakukan verifikasi melalui sensor sentuh. Jika sandi benar dan sentuhan terdeteksi, servo akan membuka kunci. Jika sandi salah atau tidak ada verifikasi sentuhan, sistem akan menangguhkan atau mengaktifkan alarm. Sensor PIR dan piezoelektrik juga berjalan secara paralel untuk memantau adanya gerakan mencurigakan atau upaya paksa.

Sebelum sistem digunakan secara penuh, penting untuk melakukan uji coba menyeluruh dan kalibrasi sensitivitas sensor, terutama sensor piezoelektrik dan PIR. Apabila semua komponen berfungsi, sistem brankas pintar siap digunakan dengan tingkat keamanan berlapis melalui kombinasi input sandi, verifikasi sentuhan, dan deteksi lingkungan secara otomatis.



b. Hardware[Kembali]







c. Rangkaian Simulasi dan Prinsip Kerja[Kembali]





Prinsip Kerja Rangkaian:

Menginisialisasi komunikasi UART, OLED I2C, sensor (PIR, touch, piezoelektrik), serta keypad. Sensor PIR terus memantau gerakan. Jika mendeteksi gerakan lebih dari 180 detik terus-menerus, sistem mengirimkan perintah ALARM melalui UART ke Pico 2. Sensor piezoelektrik dimonitor dalam thread terpisah:
  • Jika getaran melebihi ambang batas (nilai ADC > 20000), alarm berbunyi selama 10 detik dan menampilkan pesan getaran terdeteksi di OLED.
  • Jika sistem tidak dalam masa penundaan atau alarm timeout Layar OLED meminta pengguna memasukkan password melalui keypad. Tombol # menandakan selesai input, * untuk menghapus input.
  • Jika password salah:Sistem mencatat jumlah kesalahan.
  1. Kesalahan 1–2 kali: tunda akses selama 15 detik.
  2. Kesalahan 3 kali: kirim ALARM, aktifkan penalti 180 detik, dan reset percobaan.
  • Jika password benar: Sistem meminta verifikasi melalui sensor sentuh. Dan selanjutnya brankas terbuka

Tombol “1” sebagai Lock Manual dan saat pengguna menekan tombol “1” sebagai sandi, maka servo bergerak untuk mengunci brankas dan menampilkan status “Brankas Terkunci”.



d. Flowchart[Kembali]



PICO 1
Program:

from machine import Pin, UART, I2C, ADC
from time import sleep, time
import _thread
import keypadlib  # Pastikan file ini tersedia
import ssd1306

# === UART ke Pico 2 ===
uart = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))

# === I2C OLED ===
i2c = I2C(0, scl=Pin(17), sda=Pin(16))  # Sesuaikan jika perlu
oled = ssd1306.SSD1306_I2C(128, 64, i2c)

# === Sensor ===
touch = Pin(6, Pin.IN)
ir = Pin(7, Pin.IN)
piezo_adc = ADC(Pin(26))  # ADC0 untuk piezo analog

# === Keypad ===
keypad = keypadlib.Keypad(rows=[0, 1, 2, 3], cols=[9, 10, 11], keys=[
    ['1', '2', '3'],
    ['4', '5', '6'],
    ['7', '8', '9'],
    ['*', '0', '#']
])

# === Konfigurasi ===
PASSWORD = "1234"
attempts = 0
last_attempt_time = 0
piezo_alert = False  # Flag untuk deteksi piezo

# === Fungsi Tampilan OLED ===
def display(text, line=0):
    oled.fill(0)
    oled.text(text, 0, line)
    oled.show()

# === Fungsi Ambil Sandi dari Keypad ===
def get_password():
    entered = ""
    display("Masukkan Sandi", 0)

    while True:
        key = keypad.get_key()
        if key:
            if key == '#':
                break
            elif key == '*':
                entered = ""
            else:
                entered += key
            display("*" * len(entered), 20)
        sleep(0.1)
    return entered

# === Verifikasi Sentuhan ===
def verify_touch():
    display("Verifikasi Sentuh", 0)
    start = time()
    while time() - start < 30:
        if touch.value() == 1:
            display("Selesai", 20)
            return True
        sleep(2)
    display("Gagal Sentuh", 20)
    return False

# === Monitor PIR (IR Motion) ===
def monitor_ir():
    if ir.value() == 1:
        start = time()
        while ir.value() == 1:
            if time() - start > 180:
                uart.write("ALARM\n")
                display("Alarm PIR Aktif", 0)
                break
            sleep(1)

# === Monitor Piezo di Thread Terpisah ===
def monitor_vibration():
    global piezo_alert
    while True:
        val = piezo_adc.read_u16()
        if val > 20000:  # Threshold getaran
            print("Getaran besar:", val)
            uart.write("ALARM10\n")
            piezo_alert = True
            sleep(1)
        sleep(0.1)

# === Fungsi Utama ===
def main():
    global attempts, piezo_alert
    password_mode = True
    alarm_timeout = 0
    delay_until = 0

    while True:
        now = time()

        # Sensor selalu aktif
        monitor_ir()

        # Tampilkan status piezo jika terdeteksi
        if piezo_alert:
            display("Getaran Terdeteksi", 0)
            piezo_alert = False

        # Jika sedang dalam jeda (penundaan)
        if now < delay_until:
            continue

        # Jika sedang dalam penalti alarm
        if now < alarm_timeout:
            continue

        # Mode input password
        if password_mode:
            pwd = get_password()

            if pwd == "1":
                uart.write("LOCK\n")
                attempts = 0
                display("Brankas Terkunci", 0)
                continue

            if pwd == PASSWORD:
                if verify_touch():
                    uart.write("UNLOCK\n")
                    attempts = 0
                    display("Akses Diberikan", 0)
                else:
                    uart.write("ALARM10\n")
                    display("Touch Gagal!", 0)
            else:
                attempts += 1
                if attempts == 1:
                    display("Salah1x-Tunda15s", 0)
                    delay_until = now + 15
                elif attempts == 2:
                    display("Salah2x-Tunda15s", 0)
                    delay_until = now + 15
                elif attempts >= 3:
                    display("Salah3x - Alarm!", 0)
                    uart.write("ALARM\n")
                    alarm_timeout = now + 180
                    attempts = 0

# === Jalankan Thread Piezo dan Program Utama ===
_thread.start_new_thread(monitor_vibration, ())
main()



PICO 2
Program:

from machine import Pin, UART, PWM
from time import sleep

# UART dari Pico 1
uart = UART(1, baudrate=9600, tx=Pin(8), rx=Pin(9))

# Buzzer dan Servo
buzzer = Pin(2, Pin.OUT)
servo = PWM(Pin(3))
servo.freq(50)

def servo_open():
    servo.duty_u16(6000)  # Sudut 90 derajat (terbuka)

def servo_close():
    servo.duty_u16(2000)  # Sudut 0 derajat (terkunci)

def alarm_sound(duration=60):
    for _ in range(duration * 2):  # 0.5 + 0.5 = 1 detik per loop
        buzzer.value(1)
        sleep(0.5)
        buzzer.value(0)
        sleep(0.5)

def main():
    while True:
        if uart.any():
            cmd = uart.readline().decode().strip()
            if cmd == "UNLOCK":
                servo_open()
            elif cmd == "LOCK":
                servo_close()
            elif cmd == "ALARM":
                alarm_sound(duration=60)
            elif cmd == "ALARM10":
                alarm_sound(duration=10)  # Tambahan untuk alarm 10 detik dari piezo

        sleep(0.1)

main()




e. Video Demo[Kembali]





f. Download File[Kembali]

 Download HTML [klik disini]

Download rangkaian [klik disini]

Download video [klik disini]

Download listing program [klik disini]

Download library keypad [klik disini]

Download library ssd1306 [klik disini]

Download datasheet sensor touch [klik disini]

Download datasheet sensor ir [klik disini]

Download datasheet sensor piezo [klik disini]

Download datasheet buzzer [klik disini]

Download datasheet oled [klik disini]

Download datasheet motor servo [klik disini]

Download datasheet jumper [klik disini]

Download datasheet keypad [klik disini]
    


Tidak ada komentar:

Posting Komentar

  BAHAN PRESENTASI UNTUK MATA KULIAH   ELEKTRONIKA    Oleh : Yuningsih Vebhy Selvania 2210953042 Elektronika (A)     Dosen Pengampu : Dr.  D...