BAB III PERANCANGAN ALAT
3.1
Diagram Blok Rangkaian Pada perancangan sistem keamanan kendaraan bermotor ini yaitu dengan
menggunakan board raspberry pi tipe B sebagai pemroses data dan gambar secara kontinyu, serta menggunakan kamera standar yang digunakan pada raspberry pi sebagai pengkondisi sinyal yang bekerja untuk menangkap gambar wajah yang selanjutnya di proses sebagai nilai masukan ke dalam sistem. Untuk lebih jelasnya dapat dilihat pada gambar 3.1, yang merupakan gambaran dari blok sistem secara keseluruhan.
Gambar 3.1. Diagram Blok Sistem
42
43
3.2
Perancangan Perangkat Keras (Hardware) Pada perancangan perangkat keras ini terdapat beberapa rangkaian yang
digunakan dan disusun agar dapat berkomunikasi antara satu rangkaian dengan rangkaian yang lainnya, sehingga terjadi kekompakan dalam menjalankan proses sistem secara utuh dan menyeluruh. Untuk lebih jelas tentang masing-masing rangkaian yang digunakan pada sistem ini dapat dilihat pada masing-masing perancangan rangkaian yang mengacu pada diagram blok gambar 3.1. 3.2.1 Catu Daya (Power Supply) Rangkaian ini digunakan untuk memberikan suplai tegangan kerja pada masing-masing rangkaian, sehingga dapat bekerja sesuai dengan fungsi dari masingmasing komponen. Adapun rangkaian yang membutuhkan suplai catu daya antara lain : Rangkaian Raspberry pi, Rangkaian pengendali relay, alarm, Serta Kamera yang tidak secara langsung mendapatkan tegangan kerja dari catu daya, akan tetapi melalui modul Raspberry pi. Rangkaian catu daya ini dibuat sesuai dengan kebutuhan dari sistem rangkaian keseluruhan sistem yang masing-masing rangkaian berbeda nilai tegangan yang digunakan. Atas dasar alasan tersebut, maka dibuat rangkaian catu daya dengan keluaran terdiri dari +5V dan +12V. Tegangan kerja untuk rangkaian Raspberry pi menggunakan tegangan sebesar +5V, dan untuk rangkaian relay serta alarm yaitu menggunakan tegangan kerja sebesar +12V. Untuk lebih jelas pada rangkaian catu daya ini dapat dilihat pada gambar 3.2 berikut.
44
Gambar 3.2. Skematik Rangkaian Catu Daya Pada rangkaian catu daya ini menggunakan dua buah elco yang digunakan sebagai filter tegangan dan backup tegangan sementara pada saat proses charge sehingga dapat mengatasi ketidak stabilan tegangan atau lebih dikenal dengan ripple tegangan. Sedangkan untuk menghasilkan tegangan +5V digunakan IC1 yaitu LM7805 sebagai IC regulator tegangan. 3.2.2 Rangkaian Raspberry Pi Rangkaian Raspberry pi merupakan modul yang siap untuk digunakan hanya dengan menambahkan instalasi sistem operasi berbasis linux yang tertanam pada memori SDHC class 10 sebesar 16GB. Pada bagian perancangan perangkat keras ini akan lebih membahas antarmuka pin masukan dan keluaran yang terhubung dengan modul Raspberry pi. Masing-masing rangkaian akan lebih banyak dihubungkan pada pin GPIO (General Purpose Input Output) dan kamera terhubung pada socket yang telah tersedia untuk kamera. Untuk lebih jelas masing-masing koneksi pin GPIO dapat dilihat pada gambar 3.3.
45
Gambar 3.3 Koneksi pin GPIO Pada rangkaian Raspberry pi ini terdapat komponen yang dijadikan sebagai masukan (input) dan keluaran (output) pada tabel 3.1 berisi tentang koneksi pada masing-masing pin GPIO yang digunakan. Tabel 3.1 Koneksi Pin GPIO Raspberry pi Pin GPIO
Terhubung
Status
7
Relay (Pengapian)
Output
8
Alarm/sirine
Output
24
Sensor Kunci Kontak
Input
46
3.2.3 Rangkaian Pengendali Relay Rangkaian pengendali relay digunakan sebagai sakelar, akan tetapi sistem pengontrolan berdasarkan masukan logika yang dikirimkan dari rangkaian raspberry pi. Logika yang masuk pada masing-masing pin yaitu logika “0” untuk mematikan kontak relay atau lebih dikenal dengan istilah NC (Normally Close) sedangkan logika “1” digunakan untuk mengaktifkan relay sehingga kontak pada relay terhubung atau NO (Normally Open). Untuk mengamankan rangkaian raspberry pi maka pada rangkaian pengendali relay ini menggunakan komponen optocoupler sebagai sebagai pengendali relay, sehingga ketika terjadi short pada komponen relay rangkaian raspberry pi tidak akan terkena imbas dari tegangan balik relay yang dapat menyebabkan kerusakan pada rangkaian raspberry pi.
Gambar 3.4. Rangkaian Pengendali Relay Rangkaian relay pada sistem ini digunakan sebagai kontak untuk mematikan dan menghidupkan pengapian sebanyak 1 buah relay. Untuk pengontrolan pada rangkaian ini dihubungkan dengan pin GPIO 7 pada board raspberry pi, yang
47
sebelumnya diinisialisasi sebagai “OUTPUT” pada pin tersebut. Prinsip kerja dasar dari rangkaian ini adalah transistor NPN akan terjadi proses saturasi/jenuh ketika pada pin GPIO 7 diberikan logika “1” yang terhubung sehingga IR Led yang berada didalam IC U1 (Optocoupler), seiring dengan itu maka phototransistor pada IC optocoupler tersebut akan saturasi dan memicu kaki basis pada transistor Q1 sehingga relay akan aktif dan menyebabkan kaki “COM” terputus dengan kaki “NC” dan terhubung dengan kaki “NO”. 3.2.4 Rangkaian Alarm Rangkaian alarm digunakan untuk mengendalikan suara alarm pada posisi aktif atau non aktif sesuai dengan kontrol logika yang diberikan oleh raspbberry pi.
Gambar 3.5. Rangkaian pengendali Alarm Alarm ini akan aktif jika sistem mendeteksi kondisi tidak normal (illegal condition), sedangkan dalam kondisi normal alarm ini akan dalam kondisi mati atau tidak mengeluarkan suara. Tujuan dari bunyi alarm ini adalah untuk memberitahukan ataupun untuk memberikan efek kejut bagi maling ataupun siapa saja yang akan
48
berusaha mengambil dan menghidupkan dengan paksa kendaraan tersebut. Sehingga dapat menggagalkannya. Bunyi dari alarm ini di set dengan rentang waktu tertentu setelah mendeteksi ketidak normalan pada kendaraan tersebut. 3.2.5 Instalasi Kamera Kamera digunakan sebagai jembatan pada sistem untuk melakukan proses pemindaian wajah secara acak dan disimpan dalam database sistem. Proses autentikasi melalui proses pengenalan wajah dilakukan dengan membandingkan antara gambar hasil scanning oleh kamera dengan image yang telah tersimpan yang dihasilkan pada saat proses learning atau proses pengenalan. Untuk masing-masing wajah yang akan disimpan adalah sebanyak sepuluh bentuk gambar yang digunakan sebagai pembanding oleh sistem. Untuk proses instalasi kamera tidak begitu sulit, dikarenakan pada board raspberry pi telah tersedia socket yang khusus digunakan untuk kebutuhan koneksi kamera khusus raspberry pi. Pada gambar 3.6 merupakan cara koneksi kamera pada board raspberry pi.
Gambar 3.6 Pemasangan instalasi Kamera
49
3.2.6 Rangkaian Kunci Kontak Rangkaian kunci kontak digunakan untuk mendeteksi kunci kontak pada posisi “ON” atau “OFF” yang digunakan sebagai trigger ke raspberry pi untuk melakukan
proses
pemindaian
wajah
dan
kemudian
melakukan
proses
membandingkan dengan data gambar yang telah tersimpan pada media penyimpanan raspberry pi. Pada rangkaian kunci kontak ini merupakan bagian masukan (input) ke sistem. Pada gambar 3.7 merupakan gambar detail dari rangkaian kunci kontak.
Gambar 3.7 Rangkaian Kunci Kontak Prinsip kerja dari rangkaian ini yaitu jika posisi kontak “ON” maka relay (RY2) akan mendapatkan tegangan dari ACCU sehingga akan terjadi perubahan kontak pada masing-masing terminal keluaran relay yang awalnya kaki “Common” pada relay terhubung dengan kaki keluaran “NC” menjadi terhubung dengan kaki “NO”. Untuk masing-masing koneksi pada keluaran relay ini untuk kaki “Common” dihubungkan dengan pin GPIO “18” pada raspberry pi dan diberikan satu buah resistor pull up yang terhubung dengan tegangan +3.3V pada pin GPIO raspberry pi untuk memastikan logika “1” pada pin GPIO “18” ketika posisi relay tidak aktif,
50
sedangkan untuk keluaran kaki “NO” dihubungkan dengan “GND” sehingga ketika relay dalam kondisi aktif maka pada pin GPIO “18” ini akan menjadi logika “0”, dan pada kondisi tersebut sistem akan mendeteksi bahwa kunci kontak dalam posisi “ON” maka sistem akan melakukan proses pemindaian wajah yang ada didepan kamera. 3.3
Perancangan Perangkat Lunak ( Software) Pada sub bab ini akan membahas tentang perancangan perangkat lunak
(Software), perancangan akan meliputi: perancangan untuk kebutuhan visualisasi dari raspberry pi, perancangan listing program untuk kebutuhan pengontrolan relay dan alarm, pembacaan masukan dari masing-masing sensor atau perangkat masukan (input), konfigurasi kebutuhan sistem, serta proses pemindaian wajah. Untuk lebih lengkap tentang pembahasan dari masing-masing perancangan tersebut dapat dilihat pada masing-masing sub bab sebagai berikut: 3.3.1 Perancangan Computer Vision Computer Vision atau lebih dikenal dengan Proses penglihatan oleh komputer seperti hal nya pada manusia melihat. Untuk kebutuhan raspberry pi melakukan proses penglihatan ini selain perangkat keras (hardware) berupa kamera juga menggunakan perangkat lunak (software). Dalam proses perancangan perangkat lunak untuk computer vision penulis tidak membuat libraray sendiri melainkan dengan memanfaat library yang ada dan dapat digunakan untuk kebutuhan sistem yang akan dibuat.
51
Perangkat lunak yang digunakan adalah OpenCV yang merupakan aplikasi open source yang dapat digunakan secara bebas dan gratis. OpenCV (Open Source Computer Vision) memiliki tiga jenis algoritma yang digunakan untuk melakukan proses pengenalan wajah, yaitu : Eigenfaces, Fisherface, dan Local Binary Pattern Histogram. OpenCV ini juga mendukung beberapa bahasa pemrograman, antara lain: C, C++, python dan android. Untuk dapat menggunakan libarary dari OpenCV harus melakukan beberapa tahapan proses antara lain : A. Mempersiapkan Data Untuk menjalankan aplikasi OpenCV dibutuhkan data gambar hasil dari proses sampling wajah yang sebelumnya di lakukan pada proses learning atau pengenalan sebanyak sepuluh posisi dan bentuk wajah untuk 1 orang yang akan di jadikan referensi oleh sistem untuk menentukan prosentasi kemiripan dengan gambar yang saat ini sedang di ambil (capture). Untuk struktur penyimpanan file pada folder sistem dapat dilihat seperti dibawah ini : ./at/s1/1.pgm;0 ./at/s1/2.pgm;0 ... ./at/s2/1.pgm;1 ./at/s2/2.pgm;1 ... ./at/s40/1.pgm;39 ./at/s40/2.pgm;39
Pada struktur folder diatas terdapat ekstension *.pgm merupakan file gambar wajah yang dihasilkan dari proses training sebelumnya.
52
B. Membuat CSV File Untuk membuat file CSV ini tidak perlu secara manual akan tetapi telah disediakan program kecil python yang diperuntukan membuat file tersebut. Nama program tersebut adalah create_csv.py yang berada pada folder (src/create_csv.py) dan akan secara otomatis menghasilkan CSV file setelah di jalankan program tersebut. Untuk image yang akan disimpan pada hirarki (/basepath/<subject>/
) berikut ini merupakan hirarki folder gambar hasil proses training. |-| | | |-| | | ... |-| | |
s1 |-|-|-s2 |-|-|--
1.pgm ... 10.pgm 1.pgm ... 10.pgm
s40 |-- 1.pgm |-- ... |-- 10.pgm
Sampai dengan tahapan ini proses konfigurasi telah selesai dan OpenCV siap digunakan. 3.3.2 Perancangan Flowchart Pada proses perancangan flowchart ini akan menampilkan proses sistem secara keseluruhan dari sistem mulai bekerja sampai dengan selesai. Penjelasan pada sub bab ini akan dilengkapi dengan pembahasan algoritma dari masing-masing proses sehingga akan lebih jelas dari masing alur proses sistem yang akan dibuat serta mempermudah dalam proses pembuatan program python.
53
Gambar 3.8 Flowchart Sistem
54
Algoritma Sistem: 1. Mulai 2. Cek Kondisi status dari kunci kontak 3. Apakah status kunci kontak dalam posisi “ON” 4. Jika “Ya” maka kamera akan diaktifkan dan sistem akan melakukan proses pengambilan gambar wajah yang ada dihadapan kamera. 5. Membandingkan gambar hasil capture dengan data gambar wajah yang ada dalam database. 6. Jika terdapat kemiripan gambar hasil capture dengan gambar yang ada dalam database, maka sistem akan mengaktifkan relay pengapian dan menonaktifkan alarm. Dan kendaraan siap digunakan. 7. Jika tidak terdapat kemiripan dengan gambar yang ada dalam databse maka sistem akan mengkondisikan kendaraan dalam posisi illegal condition, atau kendaraan dalam kondisi tidak aman, maka sistem akan mematikan sistem pengapian dan mengaktifkan alarm. 8. Jika status kunci kontak pada posisi “OFF” sistem akan melompat kembali ke proses nomor 2. 9. Selesai 3.3.3 Perancangan Listing Program python Proses perancangan listing program dibutuhkan untuk melakukan subrutinsubrutin proses sesuai dengan alur sistem yang disesuaikan denga proses bisnis atau alur dari sistem yang diinginkan. Pada masing-masing proses dari sistem merupakan
55
subrutin-subrutin yang di panggil oleh sistem. Berikut ini merupakan proses-proses awal yang digunakan pada sistem yang akan dibuat: A. Proses Konfigurasi Sistem I/O Pada proses ini program akan melakukan proses inisialisasi pin GPIO yang akan digunakan oleh sistem sebagai masukan (input) ataupun keluaran (output). Berikut merupakan penggalan listing program dengan nama config.py : #Pin GPIO untuk Sensor Kunci LOCK_PIN=24 LOCK_DOWN=False
# Signal Low
LOCK_UP=True
# Signal High
#Pin GPIO untuk kontrol relay pengapian PENGAPIAN_PIN=7 PENGAPIAN_AKTIF=True
#Pengapian Aktif
PENGAPIAN_NONAKTIF=False
#Pengapian Non Aktif
#Pin GPIO untuk kontrol Alarm ALARM_PIN=8 ALARM_AKTIF=True
#Alarm Aktif
ALARM_NONAKTIF=False
#Alarm Non Aktif
#Konfigurasi OpenCV POSITIVE_THRESHOLD = 2000.0 TRAINING_FILE = 'training.xml' POSITIVE_DIR = './training/positive' NEGATIVE_DIR = './training/negative' POSITIVE_LABEL = 1 NEGATIVE_LABEL = 2 FACE_WIDTH
= 92
FACE_HEIGHT = 112
56
HAAR_FACES
= 'haarcascade_frontalface_alt.xml'
HAAR_SCALE_FACTOR
= 1.3
HAAR_MIN_NEIGHBORS = 4 HAAR_MIN_SIZE
= (30, 30)
DEBUG_IMAGE = 'capture.pgm'
def get_camera(): import picam return picam.OpenCVCapture()
#Proses capture dari Cam
B. Proses Pembacaan Sensor Kunci while True: if(GPIO.input(Kunci)==0): value=GPIO.input(22) print value if value==1: Status="0" else: Status="1" print "Kunci ON" else: print "Kunci OFF" if Status=="0": GPIO.output(Pengapian,GPIO.HIGH) GPIO.output(Alarm,GPIO.HIGH) elif Status=="1": GPIO.output(Pengapian,GPIO.LOW) GPIO.output(Alarm,GPIO.LOW)
C. Proses Capture Gambar Wajah Pada proses ini terdapat tiga subrutin yang digunakan, antara lain: 1. Proses deteksi wajah def detect_single(image): faces = haar_faces.detectMultiScale(image, scaleFactor=config.HAAR_SCALE_FACTOR, minNeighbors=config.HAAR_MIN_NEIGHBORS, minSize=config.HAAR_MIN_SIZE, flags=cv2.CASCADE_SCALE_IMAGE) if len(faces) != 1: return None return faces[0]
57
2. Proses Crop gambar def crop(image, x, y, w, h): crop_height = int((config.FACE_HEIGHT / float(config.FACE_WIDTH)) * w) midy = y + h/2 y1 = max(0, midy-crop_height/2) y2 = min(image.shape[0]-1, midy+crop_height/2) return image[y1:y2, x:x+w]
3. Resize (mengubah ukuran) gambar def resize(image): return cv2.resize(image, (config.FACE_WIDTH, config.FACE_HEIGHT), interpolation=cv2.INTER_LANCZOS4)
D. Proses Kontrol Alarm # Kontrol Alarm Aktif def alarm_on(): ALARM_PIN=True Return # Kontrol Alarm Non Aktif def alarm_off(): ALARM_PIN=False Return
E. Proses Kontrol Relay Pengapian # Kontrol Pengapian Aktif def pengapian_on(): PENGAPIAN_PIN =True Return #Kontrol Pengapian Non Aktif def pengapian_off(): PENGAPIAN_PIN =False Return