sistem keamanan akses ruang dengan masukan … · door lock sebagai pengunci gerbang, dan 1 buzzer...
TRANSCRIPT
TUGAS AKHIR
SISTEM KEAMANAN AKSES RUANG DENGAN MASUKAN
BARCODE BERBASIS RASPBERRY PI
Diajukan untuk memenuhi salah satu syarat
Memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Jurusan Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
Disusun oleh :
BONIFASIUS KRISTIAWAN
NIM : 145114056
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2017
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
SECURITY ROOM ACCESS SYSTEM WITH BARCODE BASED ON
RASPBERRY PI
In a partial fulfilment of the requirements
For the degree of Sarjana Teknik
Department of Electrical Engineering
Faculty of Science and Technology, Sanata Dharma University
BONIFASIUS KRISTIAWAN
NIM : 145114056
DEPARMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2017
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
LEMBAR PERSETUJUAN
TUGAS AKHIR
SISTEM KEAMANAN AKSES RUANG DENGAN MASUKAN
BARCODE BERBASIS RASPBERRY PI
Oleh :
BONIFASIUS KRISTIAWAN
NIM : 145114056
telah disetujui oleh :
Pembimbing
Djoko Untoro Suwarno, S.Si., M.T. Tanggal :________________
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
LEMBAR PENGESAHAN
TUGAS AKHIR
SISTEM KEAMANAN AKSES RUANG DENGAN MASUKAN
BARCODE BERBASIS RASPBERRY PI
disusun oleh :
BONIFASIUS KRISTIAWAN
NIM : 145114056
Telah dipertahankan di depan tim penguji pada tanggal .. Januari 2017
dan dinyatakan memenuhi syarat
Susunan Tim Penguji
Nama Lengkap Tanda Tangan
Ketua : Martanto, S.T.,M.T.
Sekretaris : Djoko Untoro Suwarno, S.Si.,M.T.
Anggota : Ir. Th. Prima Ari Setiyani, M.T.
Yogyakarta,
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO :
NOTHING TO LOSE …
HARD WORK BEATS TALENT WHEN TALENT DOESN’T
WORK HARD…
Skripsi ini kupersembahkan untuk…..
Yesus Kristus
ST. Mikael Pelindungku
PAPA, MAMA ,ADEK
Sahabat dan Teman-teman Seperjuangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
LEMBAR PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya
atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka
sebagaimana layaknya karya ilmiah.
Yogyakarta, 30 Juni 2016
Bonifasius Kristiawan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Bonifasius Kristiawan
Nomor Mahasiswa : 145114056
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas
Sanata Dharma karya ilmiah saya yang berjudul :
SISTEM KEAMANAN AKSES RUANG DENGAN MASUKAN
BARCODE BERBASIS RASPBERRY PI
beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada
Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk
media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas
dan mempublikasikannya di internet atau media lain untuk kepentingan akademis tanpa
perlu meminta ijin dari saya maupun memberikan royalti kepada saya selama tetap
mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya.
Yogyakarta, 30 Juni 2016
(Bonifasius Kristiawan)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI
Penelitian ini mengembangkan teknologi mikrokontroler dan barcode yang
digunakan untuk security system yaitu membuat sistem keamanan akses suatu ruangan yang
dapat diaplikasikan pada suatu ruangan yang membutuhkan keamanan khusus. Dengan
memanfaatkan teknologi barcode dan sistem penyimpanan database, diharapkan penelitian
ini akan menghasilkan suatu alat prototype berupa akses pintu atau gerbang dan diuji
menggunakan kartu mahasiswa sebagai kuncinya.
Prototype sistem keamanan akses ruang dengan masukan barcode berbasis
raspberry pi menggunakan 1 buah webcam dengan resolusi video VGA sebagai alat
pemindai barcode, 2 buah LED berwarna hijau sebagai penanda sistem, 2 buah solenoid
door lock sebagai pengunci gerbang, dan 1 buzzer sebagai penanda kesalahan sistem.
Berdasarkan pengujian, penelitian ini menghasilkan prototype sistem keamanan
akses ruang dengan masukan barcode dapat mencatat data dalam bentuk satuan waktu.
Sistem database yang sudah dirancang dan dibuat sudah dapat menyimpan, menambah,
mengubah dan menghapus data yang dimasukkan oleh operator. GUI dapat ditampilkan pada
monitor agar operator dapat mengoperasikan secara mudah dengan fitur – fitur yang ada.
Webcam dapat membaca barcode dan menunjukkan nomor barcode beserta jenis barcode.
Kerja dari output yaitu solenoid door lock dan LED sebagai simulasi dari pengunci pintu
ruangan dan penanda bahwa sistem sudah bekerja sesuai dengan perancangan.
Kata Kunci : Sistem Keamanan Akses Ruang, Raspberry Pi, Barcode, Database.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
This research develop microcontroler and barcode technology that use for security
system which is to makes security room access system that can be applied to some rooms
that need to be secure. Using barcode technology and database system, this research can be
expected to produce a prototype access door device and student card as the key.
Prototype security room access with barcode based on raspberry pi made with one
webcam with VGA video resolution device for barcode scanner, 2 green LED to detect
system, two solenoid door lock as gate lock and one buzzer to detect error system.
Based on testing, this research produced security room access with barcode based
on raspberry pi as the key pass that came out in a unit of time. The database system that has
been included before. GUI can be displayed on the monitor so it will perform easily with
existing features. The webcam can read the barcode and shows the barcode number, in
addition it can show the types of barcode. Solenoid door lock and LED performs as an output.
It works as a simulation of the room door lock and a marker which the system could perform
in according with the design that has been created.
Keyword : The Security Room Access, Raspberry Pi, Barcode, Database.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus atas segala rahmat-
Nya. Berkat Kasih dan KaruniaNya selama menjalani proses pembuatan tugas akhir ini,
penulis dapat menyelesaikan tugas akhir dengan judul “Sistem Keamanan Akses Ruang
Dengan Masukan Barcode Bersbasis Raspberry Pi”.
Tugas akhir ini disusun untuk memenuhi salah satu syarat memperoleh gelar Sarjana
Teknik (S.T) bagi mahasiswa program S-1 Jurusan Teknik Elektro Universitas Sanata
Dharma Yogyakarta. Selama proses penyusunan proposal ini, penulis banyak mendapat
bantuan dan dukungan dari berbagai pihak, untuk itu penulis mengucapkan terimakasih
kepada:
1. Bapak Petrus Setyo Prabowo, S.T., M.T., selaku Ketua Program Studi Teknik Elektro
Universitas Sanata Dharma Yogyakarta.
2. Bapak Djoko Untoro Suwarno, S.Si., M.T. selaku Dosen Pembimbing tugas akhir yang
telah banyak meluangkan waktu untuk memberikan bimbingan.
3. Bapak Martanto, M.T., dan Ibu Ir. Th. Prima Ari Setiyani, M.T. yang telah memberikan
saran dan kritik dalam menyelesaikan penulisan tugas akhir.
4. Seluruh dosen Teknik Elektro yang telah memberikan ilmu yang bermanfaat kepada
penulis selama kuliah.
5. Papa, Mama, Adek yang telah memberikan perhatian dan dukungan yang lebih dari
cukup.
6. Keluargaku tercinta Yangti dan Yangkung yang selalu mendoakan dan terus
memberikan semangat dalam mengerjakan.
7. Seluruh teman-teman prodi Teknik Elektro angkatan 2014 atas kerjasama dan
kebersamaannya selama menjalani studi.
8. Teman - teman kost ADZIN dan kost 127 yang selalu menjadi penggembira dan
penyemangat.
9. Semua pihak yang tidak bisa penulis sebutkan satu per satu atas bantuan, bimbingan,
kritik dan saran.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
Dalam penyusunan tugas akhir ini, penulis menyadari masih banyak kekurangan,
karena itu penulis mengharapkan kritik dan saran yang membangun demi kesempurnaan
tugas akhir ini.
Yogyakarta, 30 Juni 2016
Penulis,
Bonifasius Kristiawan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
HALAMAN JUDUL (Bahasa Indonesia) ........................................................................... i
HALAMAN JUDUL (Bahasa Inggris)................................................................................ ii
LEMBAR PERSETUJUAN ............................................................................................... iii
LEMBAR PENGESAHAN ................................................................................................ iv
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ................................................... v
LEMBAR PERNYATAAN KEASLIAN KARYA ........................................................... vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS ......................................................................................... vii
INTISARI ........................................................................................................................ viii
ABSTRACT ....................................................................................................................... ix
KATA PENGANTAR ......................................................................................................... x
DAFTAR ISI .................................................................................................................... xii
DAFTAR GAMBAR ....................................................................................................... xiv
DAFTAR TABEL .........................................................................................................xiviii
BAB I PENDAHULUAN ................................................................................................... 1
1.1 Latar Belakang ................................................................................................................. 1
1.2 Tujuan dan Manfaat ......................................................................................................... 2
1.3 Batasan Masalah .............................................................................................................. 3
1.4 Metodologi Penelitian...................................................................................................... 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
BAB II DASAR TEORI ...................................................................................................... 5
2.1 Raspberry Pi ................................................................................................................... 5
2.2 Bahasa Pemrograman Pyhton .......................................................................................... 7
2.2.1 Modul Tkinter ................................................................................................... 8
2.2.2 Modul MySQLdb .............................................................................................. 8
2.2.3 Modul RPi.GPIO .............................................................................................. 8
2.2.4 Modul Pexpect .................................................................................................. 8
2.3 Elektrik Solenoid ............................................................................................................. 8
2.4 Sistem Database ............................................................................................................... 8
2.4.1 Membuat Database MySQL ............................................................................. 9
2.4.2 Operasi Pembuatan Tabel ............................................................................... 10
2.4.3 Operasi Penambahan Data .............................................................................. 11
2.4.4 Operasi Pemilihan Data .................................................................................. 11
2.4.5 Operasi Memperbarui Data ............................................................................. 12
2.4.6 Operasi Menghapus Data ................................................................................ 13
2.5 Barcode .......................................................................................................................... 14
BAB III RANCANGAN PENELITIAN ............................................................................. 16
3.1 Perancangan Sistem ....................................................................................................... 16
3.2 Perancangan Database .................................................................................................. 17
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
3.3 Perancangan Software.................................................................................................... 18
3.3.1 Diagram Alir Pintu Masuk .................................................................................. 18
3.3.2 Diagram Alir Pintu Keluar .................................................................................. 20
3.4 Perancangan Hardware ................................................................................................. 24
BAB IV HASIL DAN PEMBAHASAN ........................................................................... 25
4.1 Pengujian Keseluruhan Sistem ...................................................................................... 31
4.2 Hasil Perancangan Perangkat Lunak (GUI) .................................................................. 25
4.2.1 Proses Pengunduhan Library Python .................................................................. 33
4.2.2 Halaman Utama Program (GUI) ......................................................................... 33
1 Menu Utama ....................................................................................................... 34
2 Tombol "INPUT" ............................................................................................... 35
3 Menu Detail ........................................................................................................ 35
4.3 Hasil Perancangan Database ......................................................................................... 36
4.4 Hasil Pengujian Pembacaan Barcode Dengan Webcam ................................................ 39
4.4.1 Pengujian Dengan Webcam Genius FaceCam 320 ............................................. 41
4.4.2 Pengujian Dengan Webcam Logitech C170 ........................................................ 42
4.5 Hasil Pengujian Hardware ........................................................................................... 43
BAB V KESIMPULAN DAN SARAN ........................................................................... 44
5.1 Kesimpulan .................................................................................................................... 44
5.2 Saran .............................................................................................................................. 44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
DAFTAR PUSTAKA ........................................................................................................ 45
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR GAMBAR
Gambar 1.1 Diagram blok sistem ............................................................................ 3
Gambar 2.1 Konfigurasi pin pada port GPIO ......................................................... 6
Gambar 2.2 Contoh Door Lock solenoid................................................................. 8
Gambar 2.3 contoh kode Python untuk pembuatan database SQLite ..................... 9
Gambar 2.4 hasil tulisan bahwa database berhasil dibuat ....................................... 10
Gambar 2.5 contoh kode python untuk membuat tabel dalam database ................. 10
Gambar 2.6 hasil tulisan bahwa tabel dalam database sudah terbuat ...................... 10
Gambar 2.7 Contoh kode python untuk menambahkan data kedalam tabel ........... 11
Gambar 2.8 hasil tulisan bahwa tabel berhasil dibuat ............................................. 11
Gambar 2.9 Contoh kode Python untuk memilih suatu data dalam tabel ............... 11
Gambar 2.10 Hasil pemilihan data yang sudah dibuat .............................................. 11
Gambar 2.11 Contoh kode python untuk memperbarui data yang sudah ada ........... 12
Gambar 2.12 Menunjukkan hasil kode python untuk memperbarui data.................. 13
Gambar 2.13 contoh kode python untuk menghapus data......................................... 13
Gambar 2.14 hasil eksekusi program penghapusan data ........................................... 14
Gambar 2.15 Contoh CODE 39 ................................................................................. 15
Gambar 3.1 Diagram blok sistem .............................................................................. 17
Gambar 3.2 Diagram alir pada saat akan masuk ruangan ......................................... 20
Gambar 3.3 Diagram alir pada saat akan keluar ruangan .......................................... 21
Gambar 3.4 Tampilan rencana antar muka (GUI) pada software Python ................. 22
Gambar 4.1 Pengunduhan file - file library untuk Python ........................................ 25
Gambar 4.2 peletakan webcam pada monitor LCD .................................................. 26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 4.3 Rangkaian PCB untuk simulasi hardware ............................................. 27
Gambar 4.4 langkah mengaktifkan webcam untuk pintu masuk .............................. 27
Gambar 4.5 proses pemindaian barcode dengan NIM 145114003 saat pintu masuk 28
Gambar 4.6 hasil pemindaian muncul pada python shell .......................................... 28
Gambar 4.7 NIM 145114003 muncul pada entry box untuk pencatatan database .... 28
Gambar 4.8 muncul peringatan "SELAMAT DATANG" pada layar monitor ......... 28
Gambar 4.9 NIM 145114003 sudah tercatat waktu masuk pada database bagian paling
bawah ........................................................................................................................ 28
Gambar 4.10 simulasi hardware pada pintu masuk pengunci pintu dan led aktif .... 29
Gambar 4.11 langkah mengaktifkan webcam pada pintu keluar............................... 29
Gambar 4.12 proses pemindaian barcode dengan NIM 145114003 saat pintu keluar
............................................................................................................................... 29
Gambar 4.13 hasil pemindaian muncul pada python shell ........................................ 29
Gambar 4.14 NIM 145114003 muncul pada entry box untuk pencatatan database . 30
Gambar 4.15 muncul peringatan "SELAMAT JALAN" pada layar monitor ........... 30
Gambar 4.16 NIM 145114003 sudah tercatat waktu keluar pada database bagian paling
bawah ......................................................................................................................... 31
Gambar 4.17 simulasi hardware untuk pintu keluar pengunci pintu dan led aktif ... 31
Gambar 4.18 Pengunduhan file – file library untuk Python ...................................... 32
Gambar 4.19 Listing program untuk import package pada Python 2.7 ..................... 33
Gambar 4.20 Hasil GUI (Graphical User Interface) ................................................ 34
Gambar 4.21 listing program untuk menubar ............................................................ 34
Gambar 4.22 Menu Bar Utama pada GUI ................................................................. 34
Gambar 4.23 listing program untuk menu "INPUT" ................................................. 35
Gambar 4.24 Tombol INPUT untuk pencatatan pada database ................................ 35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
Gambar 4.25 listing program untuk menu detail ....................................................... 35
Gambar 4.26 Menu Detail untuk menampilkan detail identitas member .................. 36
Gambar 4.27 Tabel identitas pada database roomaccess .......................................... 37
Gambar 4.28 Form pengisian identitas ada tabel identitas ........................................ 37
Gambar 4.29 Isi tabel History pada database roomaccess ........................................ 38
Gambar 4.30 Editor untuk pengujian penambahan data waktu pada tabel History .. 39
Gambar 4.31 EER-Diagram Perancangan Database ................................................. 39
Gambar 4.32 Kode Python yang digunakan untuk pembacaan barcode ................... 40
Gambar 4.33 Pengujian jarak terdekat pada webcam Genius FaceCam 320 ............ 41
Gambar 4.34 pembacaan barcode oleh webcam tertampil pada LCD monitor......... 41
Gambar 4.35 Hasil pembacaan barcode tertampil pada Pyton Shell ........................ 41
Gambar 4.36 Pengujian pembacaan barcode pada jarak terdekat ............................. 42
Gambar 4.37 Pengujian pembacaan barcode pada jarak terjauh ............................... 42
Gambar 4.38 Hasil dari pembacaam webcam Logitech C170 ................................... 43
Gambar 4.39 Kode python untuk pengujian hardware ............................................. 44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xix
DAFTAR TABEL
Gambar 3.1 Perancangan database identitas .............................................................. 17
Gambar 3.2 Perancangan database History ............................................................... 18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Perkembangan teknologi pada masa kini sangat pesat khususnya di bidang
komputerisasi dan elektronika. Teknologi yang dikembangkan salah satunya bertujuan untuk
membantu memberikan keamanan, baik keamanan diri maupun keamanan terhadap barang
– barang berharga contohnya laptop, dokumen – dokumen perusahaan dan lain sebagainya.
Agar suatu barang berharga terhindar dari tindak kriminalitas khususnya pencurian, barang
– barang berharga tadi biasanya disimpan dalam suatu ruangan khusus agar tidak diambil
oleh orang – orang yang tidak berhak. Keamanan suatu ruang menjadi faktor penting dalam
pengamanan suatu barang.
Berdasar pada ide pembuatan sistem keamanan ruang, maka pada penelitian kali ini
akan dibuat prototipe sistem keamanan akses ruang menggunakan barcode. Pada penelitian
sistem keamanan akses ruang menggunakan salah satu mikrokontroler yang sedang
berkembang yaitu Raspberry Pi. Raspberry pi adalah salah satu mikrokontroler berbasis
SBC (System Board Chip). Raspberry Pi atau yang sering disingkat dengan nama Raspi,
adalah komputer papan tunggal (Single Board Circuit/SBC) yang berukuran sebesar kartu
kredit. Bisa dikatakan Raspi adalah PC(Personal Computer) karena fungsinya dapat
menggantikan komputer desktop jaman sekarang dan ukurannya yang kecil sehingga praktis
dibawa ke mana saja.
Pada penelitian yang dilakukan oleh Bambang ( Bambang Tri Atmojo, 2013)
berjudul “Model Sistem Kendali Pintu Otomatis Menggunakan Barcode Berbasis PC Pada
Gerbang Laboratorium Teknik Elektro Unila” menjelaskan bahwa sistem dibuat untuk
menjaga keterriban dan kenyamanan laboratorium. Pada penelitian tersebut dibuat
pemodelan pintu otomatis menggunakan barcode. Selain itu model tersebut akan
mempunyai data dokumentasi kehadiran secara digital agar lebih mudah dalam proses
monitoring data mahasiswa yang melakukan kegiatan diluar jam kerja.
Pada penelitian yang dilakukan oleh Hendi (Hendi Handian Rachmat, 2014) berjudul
“Pemanfaatan Sistem RFID Sebagai Pembatas Akses Ruangan” dijelaskan bahwa sistem
RFID (Radio Frequency Identification) dimanfaatkan sebagai kartu identifikasi personal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
pada sistem akses ruangan. Keberadaan sistem tersebut ditujukan untuk menjaga keamanan
dan privasi ruangan dari seseorang yang tidak memiliki otoritas untuk memasuki ruangan
tersebut.
Pada penelitian yang dilakukan oleh Mulki (Mulki Syahputra Muharram, 2015) yang
berjudul “Implementasi Kunci Pintu Otomatis Dengan RFID Berbasis Raspberry Pi Sebagai
Sub Sustem Dari Kunci Otomatis Pada Ruang Dosen Universitas Telkom” dijelaskan bahwa
pengamanan ruangan menggunakan suatu perangkat yaitu RFID (Radio Frequency
Identification) sebagai kunci pembuka pintu. RFID menjadi pemicu fungsi – fungsi yang
terkait yaitu fungsi solenoid (buka/tutup kunci), fungsi buzzer (alarm), dan fungsi sensor
magnetik (deteksi pergerakan pintu). Terdapat juga pencatatan RFID tag pada log sistem.
Sistem ini akan digunakan untuk mengamankan suatu ruangan dari tindak kriminal
khususnya pencurian. Dengan menggunakan barcode sebagai syarat untuk membuka pintu
ruangan. Raspberry Pi sendiri berfungsi sebagai otak dari pemrosesan sistem keamanan yang
terdiri dari GUI (Graphical User Interface) atau tampilan pada layar LCD, GPIO (General
Purpose Input Output) sebagai pengendali kunci pintu dan sensor pintu, dan SQLite3
sebagai manajemen database. Seseorang yang akan memasuki ruangan tersebut harus
memiliki kartu yang terdapat barcode.
Raspberry Pi dan akan digunakan monitor LCD sebagai output nya yaitu berupa
tampilan menggunakan program Python.
1.2. Tujuan dan Manfaat
Tujuan penelitian ini yaitu menghasilkan sebuah sistem keamanan akses ruang yang
dapat diaplikasikan di lingkungan kampus. Sistem keamanan akses ruang ini diharapkan
mampu meningkatkan keamanan akses ruang di lingkungan kampus.
Manfaat dari penelitian ini :
a. Manfaat bagi masyarakat
Masyarakat kampus dapat mengaplikasikan sistem keamanan akses ruang ini di
lingkungan kampus yang memiliki ruangan yang membutuhkan keamanan yang khusus.
b. Manfaat bagi ilmu pengetahuan
Penelitian ini akan menambah aplikasi penggunaan Raspberry Pi. Pada saat
penelitian ini dibuat, Raspberry Pi merupakan perangkat yang baru dikembangkan. Hasil
penelitian ini diharapkan dapat lebih dikembangkan dengan menambah fitur yang lain yang
belum terdapat pada penelitian ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1.3. Batasan Masalah
Perancangan sistem keamanan akses ruang dengan masukan barcode berbasis
Raspberry Pi ini mencakup batasan – batasan masalah sebagai berikut :
a. Alat ini akan berupa prototipe.
b. Menggunakan Raspberry Pi 3.
c. Masukan data berupa scan dari barcode scanner yang ada di kartu mahasiswa.
d. Terbatas hanya 20 data atau identitas (Kartu mahasiswa).
e. Menggunakan elektrik solenoid sebagai pengunci pintu.
f. Menggunakan bahasa pemrograman Python.
g. Terdapat catatan waktu masuk dan keluar ruangan.
h. Perangkat lunak dapat ditampilkan pada monitor.
1.4. Metodologi Penelitian
a. Studi Pustaka
Studi pustaka dilakukan dengan pengumpulan informasi dari berbagai literatur.
Literatur tersebut antara lain berupa buku, jurnal, datasheet. Selain itu, informasi
dikumpulkan dari berbagai artikel dari internet. Informasi yang dikumpulkan mencakup
informasi mengenai datasheet Raspberry Pi, bahasa pemrograman Python, dan datasheet
barcode scanner.
b. Perancangan dan Pembuatan Alat
Gambar 1.1 Diagram blok sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
Perancangan dan pembuatan alat dimulai dari pembuatan hardware. Hardware yang
dibuat berupa rangkaian elektronik pada port GPIO. Perancangan selanjutnya yaitu
perancangan program pengolahan data pada Raspberry Pi yaitu pembuatan antar muka.
Diagram blok sistem bisa dilihat pada gambar 1.1
c. Pengujian alat dan Pengambilan data
Pengambilan data alat dimulai dari pengujian sistem apakah sudah sesuai dengan
tujuan seperti pencatatan identitas apakah sudah sesuai atau belum, fungsi dari tiap
komponen apakah sudah sesuai tugasnya masing – masing atau belum.
d. Pembuatan Analisa dan Kesimpulan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB II
DASAR TEORI
2.1. Raspberry Pi
Pada penelitian ini akan digunakan salah satu mikrokontroler yaitu Raspberry Pi.
Jenis Raspberry pi yang akan digunakan yaitu Raspi versi 3, dikarenakan versi ini sudah
dilengkapi dengan fitur wifi dan bluetooth serta memiliki kapasistas ram yang lebih besar
dari yang sebelumnya yaitu sebesar 1 gigabyte. Raspberry Pi merupakan komputer dalam
satu singleboard.. Chip mengintegrasikan sebuah prosesor (CPU), graphics processing unit
(GPU), dan memori pada suatu unit tunggal [1]. Bagian – bagian Raspberry pi adalah
sebagai berikut :
1. Prosesor
Prosesor berupa chip 32 bit, 1.2 GHz System on a Chip (SOC) dengan merk Broadcom
BCM2837. Menggunakan empat inti merk ARM Cortex-A53 dengan kecepatan 1,2
GHz. Raspberry Pi model 3 mempunyai RAM sebesar 1 GB[1].
2. Slot Secure Digital Card (SD Card)
Raspberry Pi menggunakan SD Card sebagai media penyimpanan seluruh data (hard
drive).
3. Port USB
Raspberry Pi Model 3 mempunyai 4 port USB sedangkan Raspberry Pi Model A hanya
mempunyai sebuah Port USB.
4. Port Ethernet, Wifi, dan Bluetooth
Raspberry Pi model 3 mempunyai port ethernet dengan standar RJ45 dan antena
berkecepatan 2.4 GHz 802.11n untuk penangkap sinyal wifi. Raspberry model 3 juga
terdapat bluetooth untuk transfer data dan koneksi dengan sebuah hardware yang
menggunakan koneksi tersebut.
5. Konektor HDMI (High-Definition Multimedia Interface)
Port HDMI digunakan sebagai penyedia keluaran video dan audio digital. Sinyal HDMI
mampu dikonversi menjadi DVI (Digital Visual Interface) sehingga dapat digunakan
untuk berbagai monitor.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
6. Output Audio Analog
Port audio analog digunakan sebagai penyedia keluaran audio analog untuk speaker
dengan jack standar 3,5 mm mini analog audio jack.
7. Keluaran Composite Video
Jack standar tipe RCA menyediakan keluaran untuk sinyal video NTSC dan PAL [2].
8. Port GPIO
Selain itu terdapat port General Purpose Input/Output (GPIO) digunakan untuk
berhubungan dengan suatu hardware eksternal. Raspberry Pi mempunyai 26 pin GPIO.
Gambar 2.1. menunjukkan konfigurasi pin pada port GPIO.
Gambar 2.1. Konfigurasi pin pada port GPIO [3]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Basis Operating System (OS) pada Raspberry Pi yaitu Linux. Prosesor Broadcom
[1][2]mempunyai device driver dan kode yang tidak terdapat dalam standar Linux
distribution. Ukuran RAM (Read Access Memory) pada Raspberry Pi berbeda dengan
ukuran RAM komputer desktop. Linux distribution khusus untuk Raspberry pi
dikembangkan dalam mengatasi ketidaksesuaian Raspberry Pi dengan standar Linux. Linux
distribution yang dibuat di antaranya Raspbian (direkomendasikan secara resmi), Adafruit
Raspberry PI Educational Linux, Arch Linux, Xbian, Qton Pi.
Raspi ini nantinya berfungsi untuk menyimpan database yang berisikan identitas
dari pemilik kartu ruangan. Untuk mempermudah pengecekan data yang masuk maupun
keluar, akan dibuat sebuat antar muka (interface) yaitu dengan menggunakan perangkat
lunak (software) dengan python.
2.2. Bahasa Pemrograman Python
Python ditemukan oleh Guido van Rossum. Bahasa Python merupakan bahasa
pemrograman yang dikategorikan highlevel language . Berbeda dengan lowlevel language,
highlevel language tidak dapat langsung dijalankan oleh mesin, perlu diproses terlebih
dahulu agar dapat dijalankan oleh mesin. Pada sisi interface, digunakan modul Tkinter yang
merupakan interface standar yang biasa digunakan pada pemrograman Python [2].
Program atau script Python dapat langsung dieksekusi, tidak perlu proses
compiling ke kode mesin. Dalam Python, pemrograman tidak perlu menegaskan sebuah
variabel berupa number, list, atau string [2]. Python merupakan open source software.
Bahasa pemrograman python masih dikembangkan dan diperbaiki[2].
2.2.1. Modul Tkinter
Tkinter merupakan modul Python untuk pembuatan tampilan atau biasa disebut
Graphical User Interface. Modul mempunyai widget atau komponen yang dapat diatur
dengan kode – kode tertentu untuk menghasilkan tampilan yang dapat dikendalikan dari
layar monitor LCD.
2.2.2. Modul MySQLdb
Merupakan paket modul yang disediakan python untuk dapat membuat dan
mengakses database. Paket modul ini dapat menyimpan data – data transaksi yang telah
dilakukan dalam satuan waktu dan tipe data yang lain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
2.2.3. Modul RPi.GPIO
GPIO merupakan modul untuk membaca dan mengendalikan port GPIO pada
Raspberry Pi [2].
2.2.4. Modul Pexpect
Pexpect merupakan modul Python untuk mengendalikan suatu aplikasi secara
otomatis.
2.3. Elektrik Solenoid
Elektrik solenoid ini adalah salah satu solenoid pengunci otomatis yang difungsikan
khusus sebagai solenoid untuk pengunci pintu yang biasa disebut Door Lock Solenoid. Alat
ini membutuhkan tegangan supply 12v. Prinsip kerja dari elektrik solenoid adalah
elektromagnet dimana arus listrik yang berasal dari sumber DC maupun AC menimbulkan
medan magnet sehingga dapat menggerakan batang besi yang ada pada solenoid. Sistem
kerja solenoid ini adalah NC (Normally Close). Katup solenoid akan tertarik jika ada
tegangan dan sebaliknya katup solenoid akan memanjang jika tida ada tegangan. Contoh
gambar bisa dilihat pada gambar 2.2.
Solenoid yang akan digunakan adalah Door Solenoid 12v, dengan material metal.
Solenoid ini mempunyai panjang langkah sepanjang 10mm dan gaya sebesar 50gr. Ukuran
totalnya 6,6 x 4 x 2,7 cm dengan panjang kabel 24 cm dan berat kotornya 147gr. Solenoid
ini membutuhkan suplai daya 650 mA pada tegangan 12V dan 500 mA pada 9V.
Gambar 2.2 Contoh Door Lock solenoid
2.4. Sistem Database
Bagi sebagian besar programmer istilah “database” pada umumnya mengacu ke
model database relasional (Relational Database Management System, atau RDBMS). Dalam
model ini, data tersimpan di dalam suatu tabel yang terdiri dari baris dan kolom. Data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
tersebut kemudian dapat dimanipulasi dan diatur menggunakan statement – statement yang
ditulis dalam bahasa SQL (Structured Query Language). Python telah menyediakan MySQL
sebagai RDBMS standar yang dapat digunakan untuk pemrograman database. Artinya, kita
tidak perlu melakukan instalasi software atau driver tambahan untuk bekerja dengan modul
MySQL sudah disediakan di dalam pustaka standar Python. Meskipun demikian Python juga
memiliki dukungan penuh terhadap RDBMS lain seperti, MySQL, Oracle, PostgreSQL,
DB2 dan lain sebagainya.
MySQL merupakan sebuah sistem manajemen basisdata relasional yang dirancang
untuk mengelola data pada sebuah aplikasi dengan cara yang nyaman dan tanpa biaya yang
mahal [11]. Kelebihan dari MySQL adalah mudah digunakan, efisien dan dapat diandalkan
[12].
Selain MySQL, Python juga menyertakan dukungan terhadap jenis database
manager (DBM) di dalam pustaka standar. DBM sering digunakan di lingkungan
UNIX/Linux, yang merupakan jenis database dengan data berupa pasangan kunci – nilai,
(key – value pair). DBM sangat mirip dengan struktur data dictionary di dalam Python.
Perbedaannya ada pada DBM datanya di simpan ke dalam disk sedangkan dictionary
datanya hanya disimpan di dalam memori komputer.
2.4.1. Membuat Database MySQL
Pembuatan database MySQL dapat dilakukan dengan mudah menggunakan kode
Python. Caranya dengan menyertakan nama pada saat kita membuat objek koneksi. Jika
nama yang kita sertakan ke dalam parameter connect() belum ada di direktori kerja, maka
secara otomatis file baru yang merupakan file database MySQL akan terbuat. Jika file sudah
ada sebelumnya, maka database tersebut akan dibuka. Berikut adalah contoh gambar
pembuatan database MySQL dengan metode kode python sqlite yang diberi nama test.db
[7].
Gambar 2.3 contoh kode Python untuk pembuatan database SQLite
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Jika database SQLite sudah terbuat maka akan muncul tulisan “Opened database
successfully”, yang berarti database berhasil dibuat dan disimpan dalam direktori kerja.
Berikut ini adalah contoh gambar jika database berhasil dibuat.
Gambar 2.4 hasil tulisan bahwa database berhasil dibuat
2.4.2. Operasi Pembuatan Tabel (Create a Table)
Selanjutnya akan dibuat tabel pada database SQLite yang sudah terbuat tadi.
Berikut adalah contoh kode Pythonnya yang ditunjukkan pada gambar 2.5 [7].
Gambar 2.5 contoh kode python untuk membuat tabel dalam database
Jika sudah terbuat maka akan muncul tulisan “Table created successfully” seperti
ditunjukkan pada gambar 2.6.
Gambar 2.6 hasil tulisan bahwa tabel dalam database sudah terbuat
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
2.4.3. Operasi Penambahan Data (Insert Operation)
Berikut ini adalah kode python yang berfungsi untuk menambahkan suatu data di
dalam tabel yang sudah kita buat, bisa dilihat pada gambar 2.7 [7].
Gambar 2.7 Contoh kode python untuk menambahkan data kedalam tabel
Jika tabel sudah terbuat, maka akan muncul tulisan “Records created successfully”
yang bisa dilihat pada gambar 2.8.
Gambar 2.8 hasil tulisan bahwa tabel berhasil dibuat
2.4.4. Operasi Pemilihan Data (Select Operation)
Jika diinginkan memilih dan memunculkan suatu data yang ada di dalam tabel, bisa
digunakan perintah cursor = conn.execute(). Bisa dilihat pada gambar 2.9 [7].
Gambar 2.9 Contoh kode Python untuk memilih suatu data dalam tabel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Jika kita sudah memilih salah satu data yang ada pada tabel, maka akan muncul
data yang kita inginkan yaitu nomor ID, Name, Address, dan Salary. Bisa dilihat pada
gambar 2.10.
Gambar 2.10 Hasil pemilihan data yang sudah dibuat
2.4.5. Operasi Memperbarui Data (Update Operation)
Berikut adalah cara untuk mengganti data yang sudah ada dengan data yang baru.
Misalnya kita menginginkan data ID nomor 1 dengan salary 25000 yang sebelumnya 20000.
Bisa dilihat pada gambar 2.11 [7].
Gambar 2.11 Contoh kode python untuk memperbarui data yang sudah ada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Jika pembaruan data sudah terbuat, maka akan muncul data yang ada pada database
beserta pembaruannya yaitu Salary nomor ID 1 yang sebelumnya 20000 menjadi 25000.
Bisa dilihat pada gambar 2.12.
Gambar 2.12 menunjukkan hasil kode python untuk memperbarui data
2.4.6. Operasi Menghapus Data (Delete Operation)
Berikut adalah cara untuk menghapus data yang ada pada tabel database SQL,
misalnya saja menghapus data dengan nomor ID 2. Bisa dilihat pada gambar 2.13 [7].
Gambar 2.13 contoh kode python untuk menghapus data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
Ketika program diatas dieksekusi, maka akan muncul data yang tersisa pada tabel
database SQL. Bisa dilihat pada gambar 2.14.
Gambar 2.14 hasil eksekusi program penghapusan data
2.5. Barcode
Barcode atau kode batang adalah suatu kumpulan data optik berbentuk sebuah blok
persegi paralel bar . Kode batang ini mengumpulkan suatu data dalam bentuk garis lebar dan
spasi garis paralel atau simbologi linear atau 1D (1 dimensi) [8]. Kode batang juga memiliki
bentuk persegi, titik, heksagon da nbentuk geometri lainnya yang disebut juga kode matriks
atau 2D (2 dimensi).
Barcode atau kode batang ini berisikan data atau suatu informasi penting
contohnya seperti informasi tentang harga, informasi tentang identitas suatu barang atau
orang, dan lain sebagainya sesuai kebutuhan dan jenis kode batangnya. Dengan merubah
sebuah data menjadi suatu kode batang agar dapat dibaca oleh sistem komputer dengan
mudah.
Pada pembuatan barcode akan digunakan software yaitu Inkscape yang dimana
nantinya merubah angka menjadi gambar barcode. Fungsi dari inkscape sendiri adalah
untuk membuat barcode atau kode batang yang nantinya menjadi inputan bagi raspi.
Barcode yang akan digunakan yaitu tipe Code 39.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
Inkscape adalah perangkat lunak editor gambar vektro yang bersifat perangkat
lunak bebas dibawah lisensi GNU GPL. Fungsi utama Inkscape adlah menjadi perangkat
grafik mutakhir yang memenuhi standar XML, SVG, dan CSS [6].
Inkscape dirintis pada 2003 sebagai sebuah fork dari proyek Sodipodi. Sodipodi
sendiri, yang dikembangkan sejak 1999, didasarkan pada Gill (Gnome Illustration
Application), buah karya dari Raph Levien [6].
Seperti program menggambar lainnya, Inkscape menawarkan pembuatan bentuk
dasar (seperti elips, persegi panjang, bintang, poligon, dan spiral) serta kemampuan untuk
mengubah dan memanipulasi bentuk – bentuk dasar oleh rotasi, peregangan, dan skewing.
Inkscape juga memungkinkan pengguna untuk memanipulasi objek secara tepat
dengan menyesuaikan titik simpul dan kurva. Seniman canggih menemukan fungsi – fungsi
ini sangat diperlukan dalam menggambar software untuk bebas menciptakan apa yang
mereka bayangkan.
Pada penelitian kali ini akan digunakan kode batang bertipe Code 39 yang dimana
barcode tersebut tertera pada kartu masuk ruangan. Ada banyak jenis dari kode batang
tersebut, misalnya saja EAN-13, Code 39, EAN-8, UPC-E. Bisa dilihat pada gambar 2.15
Gambar 2.15 Contoh CODE 39
Tipe barcode atau kode batang yang banyak di Indonesia adalah EAN-13, yaitu
kode batang dengan 13 digit. Dimana 3 kode awalnya merupakan kode negara Indonesia
yaitu 899. Kemudian empat angka berikutnya menunjukkan kode perusahaan. Selanjutnya
lima angka berturut – turut merupakan kode produk dan angka terakhir berupa validasi atau
cek digit [8].
Berikut adalah cara membaca barcode atau kode batang :
1. Barcode terdiri dari garis hitam dam putih. Ruang putih di antara garis garis hitam
adalah bagian dari kode.
2. Ada perbedaan ketebalan garis. Garis paling tipis = “1”, yang sedang = “2”, yang
lebih tebal = “3”, dan yang paling tebal = “4”.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
3. Setiap digit angka terbentuk dari urutan empat angka. 0 = 3211, 1 = 2221, 2 = 2122,
3 = 1411, 4 = 1132, 5 = 1231, 6 = 1114, 7 = 1312, 8 = 1213, 9 = 3112
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
BAB III
RANCANGAN PENELITIAN
3.1. Perancangan Sistem
Sistem ini terdiri dari 3 subsistem yaitu Database, Mikrokontroler, dan Software
seperti yang ditunjukkan pada gambar 3.1. Subsistem database akan diolah dalam Raspberry
Pi. Subsistem database akan berisi tentang informasi – informasi pemilik kartu mahasiswa
seperti nama, nomor induk mahasiswa (NIM), dan pencacatan waktu masuk dan keluar
ruangan yang berasal dari masukan barcode yang terdapat pada kartu. Sistem database akan
menggunakan MySQL. Database tersebut akan dibagi menjadi dua yaitu database pemilik
kartu dan database pencatatan waktu atau data logger dalam jangka waktu 1 hari.
Subsistem mikrokontroler sendiri yaitu Raspberry Pi itu sendiri yang berfungsi
sebagai prosesor. Raspberry Pi akan menerima inputan dari barcode scnanner melalui port
USB yang ada pada Raspberry Pi dan mengolah database yang nantinya akan mengeluarkan
sinyal pada port GPIO (General Purpose Input/Ouput) Raspberry Pi untuk gerakan buka
dan tutup solenoid pada pintu. Elektrik solenoid dihubungkan pada port GPIO Raspberry
Pi. Barcode scanner dihubungkan melalui usb port pada Raspberry Pi yang berfungsi
sebagai inputan data. Keyboard dan mouse dihubungkan melalui USB port pada Raspberry
Pi sebagai alat untuk pembuatan program pada raspberry. Monitor LCD dihubungkan
melalui port HDMI untuk tampilan GUI (Graphical User Interface).
Subsistem software atau perangkat lunak akan menggunakan program Python 2.7.
Pada Software, yang berhak untuk mengubah data – data dalam database adalah operator.
Operator berfungsi sebagai pembuat program, pembuat database identitas dan monitoring
database seperti siapa saja yang telah masuk dan keluar ruangan beserta waktunya. Software
akan dibuat dengan pemrograman Python. Python akan dibuat sebuah sistem antar muka
atau GUI (Graphical User Interface) untuk memudahkan pengecekan data – data yang akan
diolah. Dalam GUI akan tertampil identitas seseorang yang menggunakan ruangan tersebut
yang terdiri dari foto , nama, nomor induk mahasiswa (NIM), dan waktu masuk dan keluar
ruangan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
Gambar 3.1 Diagram blok sistem
3.2. Perancangan Database
Perancangan database menggunakan software Python 2.7 yang sudah ada dalam
OS Raspbian. Software Python nantinya akan mengunduh paket – paket aplikasi untuk
membuat database. Database yang akan digunakan pada Python yaitu SQLite3 yang
tentunya sudah kompatibel dengan Python 2.7.
Database dibagi menjadi dua yaitu database identitas yang berisikan nama, dan
nomor induk mahasiswa serta database history atau pencatatan waktu pengguna ruangan
baik waktu masuk maupun waktu keluar dengan jangka watu harian. Tabel 3.1 adalah
perancangan database untuk identitas dan Tabel 3.2 perancangan database untuk History.
Tabel 3.1 Perancangan database identitas
ID Tipe Data
Nama Text
NIM Text
Prodi Text
Jabatan Text
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Tabel 3.2 Perancangan database History
ID Tipe Data
NIM (Nomor Induk
Mahasiswa)
Text
Nama Text
Waktu Masuk Datetime
Waktu Keluar Datetime
3.3. Perancangan Software
Perangkat lunak yang ada pada sistem Raspberry Pi mengggunakan bahasa Python
2 yang nantinya akan dibuat antar muka untuk memudahkan operator dalam merancang dan
memantau apakah sistem sudah berjalan dengan benar atau belum. Operator mempunyai hak
akses penuh untu dapat menambahkan dan menghapus database sistem. Rancangan
tampilan atau GUI bisa dilihat pada gambar 3.4.
Pada sisi database digunakan MySQL, dimana akan terdapat database identitas
pemilik kartu, dan database pencatatan waktu masuk. Pada database identitas akan dibuat
tabel yang berisikan nama, nomor induk mahasiswa. Database tersebut berfungsi untuk
pencocokan data dengan masukan dari barcode apakah benar pemilik kartu tercatat pada
database. Jika benar, maka raspberry akan mengeluarkan sinyal untuk membuka solenoid
agar pintu bisa terbuka. Jika masukan barcode tidak tercatat pada database maka muncul
peringatan pada monitor dan solenoid tidak menerima inputan yang menyebabkan pintu
tidak terbuka.
3.3.1. Diagram Alir Pintu Masuk
Program dimulai dari input barcode yang berasal dari barcode scanner yang
terdapat pada kartu mahasiswa. Lalu dari barcode tersebut dicocokan dengan database yang
ada pada database sistem, jika tidak ada maka buzzer akan berbunyi dan muncul peringatan
pada GUI, jika ada maka akan muncul nama, NIM, dan tercatat waktu masuknya. Lalu
Raspberry Pi mengirimkan sinyal ke port GPIO 19 untuk mengaktifkan solenoid agar pintu
masuk dapat dibuka. Setelah beberapa detik maka solenoid tidak aktif. Diagram alir pintu
masuk bisa dilihat pada gambar 3.2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
3.3.2. Diagram Alir Pintu Keluar
Hampir sama dengan proses pintu masuk, seseorang yang akan keluar dari ruangan
harus dipindai terlebih dahulu barcode nya agar dapat membuka kunci pintu. Masukan
barcode yang ada pada kartu mahasiswa akan dicocokan dengan database yang ada pada
sistem. Jika tidak ada maka buzzer akan berbunyi dan muncul peringatan pada GUI, jika ada
maka akan muncul nama, NIM, dan tercatat waktu keluar ruangan. Lalu Raspberry pi akan
mengirimkan sinyal ke port GPIO 26 untuk mengaktifkan solenoid agar pintu keluar dapat
terbuka. Setelah beberapa detik solenoid kembali ke posisi awal atau OFF dan pintu keluar
terkunci. Diagram alir pintu keluar bisa dilihat pada gambar 3.3.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Gambar 3.2 Diagram alir pada saat akan masuk ruangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Gambar 3.3 Diagram alir pada saat keluar ruangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Gambar 3.4 Tampilan rencana antar muka (GUI) pada software Python
3.4. Perancangan Hardware
Pada perancangan hardware, akan dibuat miniatur pintu akses ruangan yang dimana
terdapat barcode scanner dan monitor LCD pada sisi dalam pintu. Sedangkan pada sisi
dalam terdapat raspberry sebagai otak dari pemrosesan database, adaptor sebagai suplai daya
dan juga UPS sebagai antisipasi jika terjadi listrik padam.
Untuk buzzer dihubungkan pada port GPIO nomor 13 untuk keluaran. Pada port
GPIO nomor 19 dan 26 digunakan untuk keluaran menuju relay yang nantinya berfungsi
untuk pengaktifan solenoid.
Keyboard dan Mouse dipasang pada Raspberry Pi melalui USB Port. Untuk
melihat tampilan dipasang juga LCD monitor yang dihubungkan dengan kabel HDMI yang
ada pada Raspberry Pi.
Akan dibuat juga hardware untuk simulasi yang menjelaskan bagaimana sistem ini
bekerja dalam bentuk PCB dan terdapat komponen – komponen yang dibutuhkan seperti
LED, solenoid door lock, dan buzzer.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Orang yang akan masuk maupun keluar ruangan harus memindai kartunya sebagai
kunci untuk membuka pintu ruangan dengan memberikan kartu mahasiswa kepada operator.
Solenoid door lock digunakan sebagai pengunci pintu. Sebagai penanda bahwa proses
pemindaian dan pencatatan data berhasil, maka LED berwarna hijau akan menyala dan
solenoid door lock aktif. Apabila proses pemindaian gagal, maka buzzer akan berbunyi
beberapa kali untuk memberi tahu bahwa telah terjadi kesalahan pada sistem dan orang yang
akan masuk ruangan tidak dapat membuka pintu masuk.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
BAB IV
HASIL DAN PEMBAHASAN
Bab ini menjelaskan tentang pengamatan implementasi sistem keamanan ruangan
berbasis raspberry pi 3 dengan barcode sebagai inputan. Suatu program dapat diakatan
bekerja dengan baik apabila disertai dengan pembuktian terhadap hasil kerja sesuai dengan
yang dikenhendaki. Hasil implementasi dan pembahasan dibagi menjadi dua topik yaitu
perancangan pada perangkat lunak, hasil perancangan database yang terdiri dari informasi
pengguna hingga perekaman data inputan yang ada pada database (history).
Hasil dari pengujian berfungsi untuk mengetahui sejauh mana keberhasilan suatu
perancangan serta dapat mengetahui kelebihan dan kekurangan sistem yang telah dibuat,
sehingga hasil pengujian tersebut dapat digunakan sebagai acuan dalam penyempurnaan
kinerja dan dapat digunakan untuk pengembangan selanjutnya.
4.1. Pengujian Keseluruhan Sistem
Hasil perancangan prototype dari sistem keamanan ruangan dengan masukan
barcode berbasis raspberry pi dilihat pada gambar 4.1. Terdapat monitor LCD, webcam,
rangkaian hardware untuk simulasi, dan juga raspberry pi itu sendiri.
Gambar 4.1 gambar posisi komponen keseluruhan sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Pada input sistem terdapat webcam yang bisa diletakkan pada monitor LCD yang
berfungsi untuk menerima masukan data berupa barcode yang bersasal dari kartu
mahasiswa. Terdapat juga keyboard dan mouse yang berfungsi untuk pengontrolan program
pada sistem operasi raspbian Pixel . Gambar peletakan webcam bisa dilihat pada gambar 4.2.
Gambar 4.2 peletakan webcam pada monitor LCD
Pada pengolah sistem, terdapat Raspberry Pi yang berfungsi sebagai pemroses data
– data yang ada dalam database baik itu untuk pencatatan, penambahan dan pengurangan
data. Data tersebut antara lain data identitas, data waktu masuk dan waktu keluar, dan juga
data perintah untuk mengeluarkan output raspberry pi yang sudah dibuat melalui perangkat
lunak python 2.7.
Pada output sistem, terdapat rangkaian PCB yang terdiri dari relay, pin – pin GPIO,
LED, pin solenoid, solenoid doorlock, buzzer, resistor, transistor BC547 dan pin power
supply 12v. Relay berfungsi untuk driver dari solenoid door lock agar pengunci pada pintu
terbuka jika ada data yang sesuai masuk. Pin – pin GPIO berfungsi untuk jalur keluaran yang
berasal dari pin – pin GPIO yang berasal dari raspberry Pi. LED berfungsi untuk memberikan
tanda bahwa sistem berjalan dengan benar. Terdapat dua LED berwarna hijau yang masing
– masing untuk pintu masuk dan pintu keluar. Pin – pin solenoid berfungsi untuk input power
yang berasal dari relay yaitu 12v agar solenoid door lock dapat aktif jika raspberry pi
memberikan sinyal keluaran. Buzzer berfungsi untuk memberikan tanda berupa bunyi jika
terjadi kesalahan pada sistem. Pin power supply berfungsi penyuplai daya yang dibutuhkan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
oleh solenoid door lock yaitu sebesar 12v. Gambar hasil rangkaian bisa dilihat pada gambar
4.3 dibawah ini.
Gambar 4.3 Rangkaian PCB untuk simulasi hardware
Mekanisme kerja dari prototype adalah Pada awalnya operator harus mengaktifkan
webcam melalui menu Utama dan memilih tombol Aktifkan Webcam, setelah itu akan
muncul jendela webcam yang artinya webcam siap untuk digunakan. Proses pemindaian
dilakukan dengan cara mendekatkan kartu mahasiswa yang terdapat barcode ke arah
webcam dengan jarak sekitar 5 – 10 cm. Setelah webcam berhasil membaca barcode maka
akan muncul pada python shell yaitu value atau nilai yang terdapat pada barcode, lalu
webcam bisa dimatikan dengan cara menekan tombol X atau close pada jendela webcam.
Setelah itu maka nilai barcode tadi akan muncul pada entry box lalu tekan tombol INPUT
untuk mencatat waktu masuk. Lalu muncul peringatan berupa “SELAMAT DATANG”
yang menandakan bahwa data berhasil ditambahkan. Gambar proses ditunjukkan pada
gambar 4.4, 4.5, 4.6, 4.7, 4.8, 4.9 dan 4.10 dibawah ini.
Gambar 4.4 langkah mengaktifkan webcam untuk pintu masuk
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Gambar 4.5 proses pemindaian barcode dengan NIM 145114003 saat pintu masuk
Gambar 4.6 hasil pemindaian muncul pada python shell
Gambar 4.7 NIM 145114003 muncul pada entry box untuk pencatatan database
Gambar 4.8 muncul peringatan “SELAMAT DATANG” pada layar monitor
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Gambar 4.9 NIM 145114053 sudah tercatat waktu masuk pada database bagian paling
bawah
Gambar 4.10 simulasi hardware pada pintu masuk pengunci pintu dan led aktif
Untuk pencatatan waktu keluar prosesnya hampir sama dengan proses waktu
masuk, yang membedakan adalah pencatatan pada database saja. Jika seseorang akan keluar
ruangan maka harus memindai barcode yang ada pada kartu mahasiswa dan operator harus
mengaktifkan webcam melalui menu Utama dan memilih tombol Aktifkan Webcam, setelah
itu akan muncul jendela webcam yang artinya webcam siap untuk digunakan. Proses
pemindaian dilakukan dengan cara mendekatkan kartu mahasiswa yang terdapat barcode ke
arah webcam dengan jarak sekitar 5 – 10 cm. Setelah webcam berhasil membaca barcode
maka akan muncul pada python shell yaitu value atau nilai yang terdapat pada barcode, lalu
webcam bisa dimatikan dengan cara menekan tombol X atau close pada jendela webcam.
Setelah itu maka nilai barcode tadi akan muncul pada entry box lalu tekan tombol INPUT
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
untuk mencatat waktu keluar. Gambar proses ditunjukkan pada gambar 4.11, 4.12, 4.13,
4.14, 4.15, 4.16 dan 4.17 dibawah ini.
Gambar 4.11 langkah mengaktifkan webcam pada pintu keluar
Gambar 4.12 proses pemindaian barcode dengan NIM 145114003 saat pintu keluar
Gambar 4.13 hasil pemindaian muncul pada python shell
Gambar 4.14 NIM 145114003 muncul pada entry box untuk pencatatan database
Gambar 4.15 muncul peringatan “SELAMAT JALAN” pada layar monitor
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Gambar 4.16 NIM 145114003 sudah tercatat waktu keluar pada database bagian paling
bawah
Gambar 4.17 simulasi hardware untuk pintu keluar pengunci pintu dan led aktif
Pada saat kondisi tertentu perangkat lunak akan muncul suatu bug seperti jika ada
nim yang belum terdaftar pada database, sistem akan menganggap nim tersebut ada akan
tetapi database tidak akan mencatat nim yang tidak terdaftar kedalam tabel history. Hal ini
disebabkan oleh miss komputasi pada bagian pengondisian database yang menyebabkan
tidak munculnya peringatan “TIDAK ADA NAMA DALAM DATABASE” sehingga perlu
diteliti lebih lanjut untuk penyelesaian dari bug tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
4.2. Hasil Perancangan Perangkat Lunak (GUI)
Pada hasil perancangan perangkat lunak akan dijelaskan tentang penggunaan
software Python 2.7 dan software MySQL. Perangkat lunak dapat berisikan informasi untuk
melihat daftar pengguna akses ruangan dan dapat melihat riwayat (history) siapa saja yang
telah menggunakan suatu ruangan berdasarkan pada pencatatan nomor induk mahasiswa,
pencatatan waktu masuk dan waktu keluar.
4.2.1 Proses Pengunduhan Library Python
Sebelum dapat digunakan fungsi –fungsi yang dibutuhkan pada Python, maka harus
mengunduh file – file library dari internet. File –file library yang dibutuhkan yaitu library
database MySql, library Zbar untuk pembacaan barcode, library OpenCv untuk pencitraan
pada webcam. Pengunduhan file –file library melalui Terminal yang ada di Raspberry
dengan menggunakan perintah sudo apt-get install. Contoh pengunduhan bisa dilihat pada
gambar 4.18.
Gambar 4.18 Pengunduhan file – file library untuk Python
Install update berfungsi untuk memperbarui sistem pada raspberry pi yang dapat
meningkatkan kegunaan dan kinerja sistem sedangkan upgrade berfungsi untuk menginstall
versi terbaru paket – paket yang sudah terinstall pada sistem. Install pip-opencv2 berfungsi
untuk menginstall paket – paket pada sistem yang berfungsi untuk pengolahan citra pada
raspberry pi, misalnya untuk pendeteksian gerakan melalui kamera. Install zbarcam untuk
menginstall paket pada sistem yang berfungsi untuk pengolahan citra dengan masukan
barcode yang menggunakan webcam atau Raspicam. Install python-mysql untuk menginstall
paket pada sistem yang berfungsi untuk penggunaan database pada penelitian kali ini.
Sebelum membuat GUI, penulis mengunduh paket – paket library yang nantinya
akan digunakan untuk menjalankan fungsi –fungsi yang dibutuhkan seperti library
pembacaan barcode, library MySql untuk koneksi database, library Tkinter untuk
pembuatan GUI, library time untuk menunjukkan waktu secara real-time pada GUI.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Dengan menggunakan perintah khusus yang sudah ditentukan seperti sudo apt-get
install update oleh Raspbian OS kita dapat mengunduh file – file library yang dibutuhkan.
Sebaiknya dilakukan update library Raspbian OS agar tetap up to date dengan sistem
terbaru yang telah dikembangkan oleh developer Linux karena basis utama dari Raspbian
OS adalah software Linux.
Pada gambar 4.19 dituliskan program untuk mengimport suatu fungsi –fungsi pada
program agar dapat digunakan fitur – fitur library pada Python 2.7. Listing program bisa
dilihat pada gambar 4.19. Berikut adalah program (coding) dari graphical user interface
(GUI) dengan menggunakan program Python 2.7.
Gambar 4.19 Listing program untuk import package pada Python 2.7
4.2.2 Halaman Utama Program (GUI)
Pada perangkat lunak atau GUI (Graphical User Interface), dapat terlihat siapa saja
yang telah terdaftar dan memiliki hak akses ruangan dalam database. Terdapat informasi
detail daftar identitas pengguna ruangan diantaranya adalah nama pengguna, nomor induk
mahasiswa (NIM), prodi (program studi), dan jabatan pengguna ruangan.
Pada kolom input nantinya muncul hasil dari pembacaan barcode yaitu nomor induk
mahasiswa (NIM), menjadi trigger untuk pencatatan pada database. Pada kolom nomor 2
menunjukkan isi daftar member pengguna ruangan. Pada kolom detail terdapat informasi
rincian dari identitas member pengguna ruangan. Pada kolom nomor 3 terdapat tabel yang
berisikan history dari pengguna siapa saja yang telah mengakses ruangan. Gambar 4.20
menunjukkan tampilan GUI pada monitor. Tampilan GUI pada gambar 4.20 tidak sesuai
dengan perancangan awal, seperti penampil foto member pengguna ruangan tidak dapat
muncul dikarenakan sistem database tidak dapat menyimpan file gambar, penambahan detail
informasi identitas tidak hanya nama dan nomor induk mahasiswa (NIM) saja akan tetapi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
ditambahkan progam studi dan jabatan. Tertampil juga daftar nama - nama pengguna yang
telah terdaftar dalam database.
Gambar 4.20 Hasil GUI (Graphical User Interface)
Terdapat beberapa fitur yang dapat digunakan pada GUI. Pengoperasian fitur
program dijelaskan sebagai berikut :
1. Menu Utama
Pada menu Utama terdapat 2 tombol yaitu tombol Aktifkan Webcam dan EXIT
seperti yang ditunjukkan pada gambar 4.22. Tombol Aktifkan Webcam berfungsi
untuk mengaktifkan tampilan webcam untuk mendeteksi barcode. Sedangkan
Tombol EXIT digunakan untuk keluar dari program GUI. Sedangkan listing
program untuk membuat fitur tersebut ada pada gambar 4.21.
Gambar 4.21 listing program untuk menubar
Gambar 4.22 Menu Bar Utama pada GUI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
2. Tombol “INPUT”
Pada halaman utama GUI terdapat tombol INPUT yang berfungsi sebagai tombol
untuk mencatat NIM yang berasal dari barcode yang ada di kartu mahasiswa,
mencatat waktu masuk serta waktu keluar seperti yang ditunjukkan pada gambar
4.24. Sedangkan listing program untuk membuat fitur tersebut ada pada gambar 4.23.
Gambar 4.23 listing program untuk menu “INPUT”
Gambar 4.24 Tombol INPUT untuk pencatatan pada database
3. Menu Detail
Menu ini akan menampilkan detail identitas member pengguna ruangan. Terdapat
detail nomor induk mahasiswa, nama, program studi, jabatan seperti yang
ditunjukkan pada gambar 4.26. Sedangkan listing program untuk membuat fitur
tersebut ada pada gambar 4.25.
Gambar 4.25 listing program untuk menu detail
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
Gambar 4.26 Menu Detail untuk menampilkan detail identitas member
4.3. Hasil Perancangan Database
Pada hasil perancangan database sudah dibuat data – data yang berisikan informasi
– informasi yang berhubungan dengan penggunaan akses ruangan dan diberi nama database
”roomaccess”. Dalam database ini terdapat dua buah tabel, yaitu tabel identitas dan tabel
history.
Agar GUI bisa terkoneksi dengan database, diperlukan connector dengan cara
mengunduh library MySql connector pada terminal Raspi, menggunakan perintah sudo apt-
get install mysql-server terlebih dahulu, lalu gunakan perintah sudo apt-get install mysql-
connector-python.
Tabel identitas berisikan identitas dari semua daftar pengguna ruangan yang terdiri
dari nama, nomor induk mahasiswa (NIM), program studi (prodi), dan jabatan (mahasiswa
atau dosen). Pada tabel identitas terdapat 4 kolom terdiri dari ididentitas, nama, program
studi (prodi), dan jabatan. Pada kolom ididentitas yaitu nomor induk mahasiswa (NIM)
dengan tipe data varchar(15). Kolom ididentitas dijadikan sebagai Primary Key karena
nantinya digunakan untuk pencatatan pada tabel History. Kolom kedua terdapat nama
dengan tipe data tinytext, kolom ketiga terdapat program studi (prodi) dengan tipe data
varchar(45), dan kolom keempat yaitu jabatan dengan tipe data tinytext. Isi dari
identitas dapat dilihat pada gambar 4.27.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
Gambar 4.27 Tabel identitas pada database roomaccess
Pengujian database pada tabel identitas yaitu dengan menambah jumlah member
dengan cara mengisi informasi – informasi yang sesuai pada setiap kolom dan untuk
eksekusinya tinggal menekan tombol GO pada editor database yaitu PHPMyAdmin. Form
pengisian identitas bisa dilihat pada gambar 4.28 dibawah ini.
Gambar 4.28 Form pengisian identitas ada tabel identitas
Pada tabel history terdapat 4 kolom yang terdiri dari kolom idhistory, kolom
waktu_masuk, kolom waktu_keluar, dan kolom member. Pada kolom idhistory yang bertipe
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
data int(11) berisikan nomor urutan pencatatan pengguna ruangan. Pada kolom
waktu_masuk yang bertipe data datetime berisikan pencatatan waktu masuk penggunaan
ruangan. Pada kolom waktu_keluar yang bertipe data datetime berisikan pencatatan waktu
keluar ruangan. Pada kolom member yang bertipe data varchar(45) berisikan nomor induk
mahasiswa (NIM) yang akan dicatat pada tabel history, kolom ini mengacu pada tabel
ididentitas. Kolom member dijadikan sebagai primary key pada tabel History. Apabila
nomor induk mahasiswa tidak ada pada tabel ididentitas maka tidak akan tercatat pada tabel
history. Isi tabel history bisa dilihat pada gambar 4.29.
Untuk pengujian pada tabel history, digunakan perintah – perintah query pada
editor database yaitu INSERT INTO `history`(`idhistory`, `waktu_masuk`, `waktu_keluar`,
`member`) VALUES ([value-1],[value-2],[value-3],[value-4]). Untuk pengujian kolom
waktu masuk pada tabel history digunakan query SQL INSERT INTO, begitu juga untuk
waktu keluar dengan query INSERT INTO `history`(`idhistory`, `waktu_masuk`,
`waktu_keluar`, `member`) VALUES ([value-1],[value-2],[value-3],[value-4]) dan untuk
mengeksekusi query tersebut tinggal menekan tombol GO pada editor seperti pada gambar
4.30.
Gambar 4.29 Isi tabel History pada database roomaccess
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Gambar 4.30 Editor untuk pengujian penambahan data waktu pada tabel History
Hasil pembuatan database ditampilkan dengan EER-Diagram seperti pada gambar
4.31 yang menunjukkan hubungan atau relasi setiap tabel dan data – data apa saja yang akan
disimpan dalam sistem database yang sudah dibuat.
Gambar 4.31 EER-Diagram Perancangan Database
Agar GUI Python bisa berinteraksi dengan database diperlukan koneksi database
ke GUI. Dengan menggunakan connector, maka python dengan GUI dapat berinteraksi
untuk melakukan fungsinya yaitu membaca isi database dan mencatat waktu pada tabel
history.
4.4. Hasil Pengujian Pembacaan Barcode Dengan Webcam
Pada perancangan di bab III pembacaan barcode menggunakan sebuah alat
pemindai, maka digunakanlah USB webcam sebagai alat pembaca barcode dan akan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
dilakukan pengujian pada webcam untuk mengetahui kemampuan webcam mana yang lebih
akurat dan lebih cepat pembacaannya. Webcam pertama dengan merk webcam GENIUS
FaceCam 320 yang beresolusi VGA 640 x 480 pixel (video) dengan manual focus dan
webcam kedua dengan merk Logitech C170 yang beresolusi VGA 640 x 480 pixel (video)
dengan fixed focus. Agar dapat barcode pada kartu mahasiswa terbaca oleh webcam
diperlukan library Zbarcam. Kode python juga disertakan agar dapat diolah dalam satu
program utama. Hasil pengamatan pembacaan barcode pada kartu mahasiswa dan kode
Python ditunjukkan pada gambar 4.33, gambar 4.34 dan gambar 4.35 berurutan.
Sebuah kode python dibutuhkan untuk mengaktifkan webcam. Dengan memanggil
library Zbarcam dan pada alamat /dev/video0, maka webcam akan aktif dan siap digunakan.
Jika barcode terbaca pada webcam, maka perintah print ‘Got Barcode :’, code akan muncul
pada python shell sesuai dengan jenis barcode yang tertera pada kartu mahasiswa. Kode
python bisa dilihat pada gambar 4.32.
Gambar 4.32 Kode Python yang digunakan untuk pembacaan barcode
4.4.1. Pengujian Pembacaan Barcode Dengan Webcam Genius FaceCam
320
Percobaan pertama menggunakan webcam Genius FaceCam 320 dengan sedikit
penyesuaian pada webcam yaitu dengan mengatur pada fokus pada lensa webcam. Pada
gambar 4.34 jenis barcode yang tertera pada kartu mahasiswa tersebut yaitu berjenis
CODE39 dan berisi 145114056 dengan jarak 13 - 19 cm. Pengujian dengan webcam Genius
FaceCam 320 bisa dilihat pada gambar 4.33 4.34 dan 4.35 dibawah ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Gambar 4.33 Pengujian jarak terdekat pada webcam Genius FaceCam 320
Gambar 4.34 pembacaan barcode oleh webcam tertampil pada LCD monitor
Gambar 4.35 Hasil pembacaan barcode tertampil pada Pyton Shell
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
4.4.2. Pengujian Pembacaan Barcode Dengan Webcam Logitech C170
Pada percobaan kedua menggunakan webcam Logitech C170. Hasil pemindaian
barcode dapat didapatkan akan tetapi sedikit lebih lama dikarenakan lensa tidak dapat diatur
atau fixed focus. Webcam Logitech C170 dapat mendeteksi barcode dengan jarak 10 – 15,5
cm. Gambar pengujian bisa dilihat pada gambar 4.36, 4.37 dan gambar 4.38 dibawah ini.
Gambar 4.36 Pengujian pembacaan barcode pada jarak terdekat
Gambar 4.37 Pengujian pembacaan barcode pada jarak terjauh
Pengujian kedua menggunakan kartu dengan nomor barcode 145114053. Hasil dari
pembacaan pada webcam Logitech C170 tertampil pada python shell dengan bertuliskan
‘Got Barcode : CODE-39 145114053’. Gambar pengujian bisa dilihat pada gambar 4.38
dibawah ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
Gambar 4.38 Hasil dari pembacaam webcam Logitech C170
Dari hasil kedua pengujian tersebut dapat disimpulkan bahwa kedua webcam
mempunyai kemampuan pembacaan yang berbeda walaupun dengan resolusi yang sama
yaitu 640 x 480 atau kualitas VGA. Hanya saja yang membedakan kedua webcam tersebut
adalah kemampuan untuk mendapatkan titik fokus yang tepat. Pada webcam Genius
FaceCam 320 titik fokusnya dapat diatur secara manual sehingga kecepatan dalam
menangkap dan membaca barcode lebih cepat dibandingkan dengan webcam Logitech C170
yang mempunyai titik fokus yang fixed focus atau fokus tetap.
Hasil pembacaan barcode pada webcam akan tertampil di GUI pada bagian entry
“INPUT”, yang nantinya entry tersebut menjadi trigger untuk pencatatan waktu masuk dan
waktu keluar pada database.
4.5 Hasil Pengujian Hardware
Untuk mengetahui proses kerja apakah sudah sesuai dengan perancangan pada
penelitian kali ini, dibuat juga proses keluaran dari sistem ini. Seperti yang sudah dibahas
pada bab III, keluaran dari sistem ini adalah pada pin – pin GPIO pada raspberry pi. Keluaran
pada raspberry pi yaitu solenoid door lock yang berfungsi untuk membuka pintu gerbang,
light-emitting diode (LED) berwarna hijau yang berfungsi untuk menunjukkan pengguna
bisa mengakses ruangan dan pintu gerbang terbuka. Masing – masing LED nantinya bisa
diletakkan pada pintu masuk dan pintu keluar. Keluaran yang terakhir adalah buzzer yang
berfungsi untuk memberi tanda bahwa ada kesalahan pada input pada webcam yaitu data
tidak ada dalam database.
Pada program utama, dibutuhkan paket – paket library python agar raspberry pi
dapat mengeluarkan sinyal keluaran pada aktuator. Paket –paket library python tersebut
diantara lain adalah port GPIO dengan cara menambahkan kode python yaitu import
Rpi.GPIO as gpio. Fungsi import tersebut berfungsi untuk menginisialisasi pin – pin pada
raspberry pi agar dapat mengeluarkan sinyal pada akatuator. Pada penelitian kali ini pin –
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
pin yang digunakan yaitu pin 5, 6, 13, 19 dan 26 dengan menyeting port GPIO dengan kode
gpio.setmode(gpio.BCM) yang berarti port ini menggunakan inisialisasi dari Broadcom
SOC. Pin 5 dan 6 digunakan untuk keluaran LED, pin 19 dan 26 digunakan untuk keluaran
solenoid dan pin 13 digunakan untuk keluaran buzzer.
Dari skematik tersebut sudah dibuat sebuah PCB yang nantinya terdapat LED,
buzzer dan solenoid door lock.
Kode python juga diperlukan untuk pengujian hardware. Kode python ini berfungsi
untuk menghidupkan LED, solenoid door lock, dan buzzer.
Pada subprogram pintu masuk, berisikan kode untuk memberikan sinyal keluaran
pada port GPIO Raspberry Pi pin 5, 6, 19, dan 23 yang nantinya sinyal tersebut akan
mengaktifkan LED dan solenoid lock door. Begitu juga dengan subprogram pintu keluar.
Subprogram buzzer berfungsi untuk memberikan sinyal keluaran pada port GPIO pin 13
yang nantinya buzzer akan berbunyi ketika subprogram tersebut dipanggil. Kode python bisa
dilihat pada gambar 4.39.
Gambar 4.39 Kode python untuk pengujian hardware
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
BAB IV
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Setelah melakukan perancangan, pembuatan, dan pengujian sistem keamanan
Raspberry Pi dengan masukan barcode kesimpulan sebagai berikut :
1. GUI pada monitor dapat tertampil dan tombol – tombol fitur dapat bekerja sesuai
dengan fungsinya.
2. Database dapat mencatat waktu masuk dan keluar.
3. Webcam dapat membaca barcode dan dapat menunjukkan nomor dari barcode
beserta jenis barcodenya pada jarak 13 – 19 cm.
4. Masih terdapat bug pada program yaitu pada pengondisian jika tidak ada nama
dalam database.
5. Database dapat menyimpan data identitas lebih dari 20 data.
6. Simulasi hardware dapat bekerja untuk menunjukkan bahwa sistem sudah
bekerja sesuai dengan perancangan.
5.2. Saran
Berdasarkan hasil implementasi yang diperoleh, untuk pengembangan lebih lanjut
terdapat beberapa saran agar alat ini dapat bekerja lebih baik, yaitu :
1. Penggantian webcam dengan spesifikasi yang lebih baik seperti tingkat resolusi
gambar HD (High Definition) dan autofocus sehingga pendeteksian barcode
dapat lebih cepat pembacaannya.
2. Pembuatan hardware agar sistem dapat di implementasikan pada ruangan yang
sebenarnya.
3. Penggantian tampilan pada GUI agar tampilan lebih baik dan user-friendly.
4. Pembenahan bug pada program pengondisian jika tidak ada nama dalam
database agar sistem dapat berfungsi dengan sempurna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
DAFTAR PUSTAKA
[1] Schmidt, M., 2012, Raspberry Pi: A Quick-Start Guide, The Pramatic Programmers,
United States of America.
[2] Richardson, M., Wallace S., 2012, Getting Started with Raspberry Pi, O’Reilly Media,
United States of America.
[3] McManus, Sean., Mike Cook, 2013, Raspberry Pi For Dummies, Wiley Brand, United
States of America.
[4] Bresert, E., 2013, SciPy and NumPy, 2nd ed, O’Reilly Media, United States of America.
[5] ----, ----, Motor Servo,
http://elektronika-dasar.web.id/teori-elektronika/motor-servo/ ,
diakses pada tanggal 2 Mei 2016
[6] Facemyer, Joshua, Inkscape E-Book, Free Software Foundation, Inc., United States of
America.
[7] Raharjo, Budi, 2015, Mudah Belajar Python Untuk Aplikasi Desktop dan Web, Penerbit
Informatika, Indonesia.
[8] ----, ----, Bar Coding for Books E-Book
http://www.barcodefaq.com/ , diakses pada tanggal 13 Juni 2016.
[9] Downey, Allen, 2012, Think Python, Green Tea Press, United States of America.
[10] Lundh, Fredrik, 1999, An Introduction to Tkinter, ----, United States of America.
[11] http://www.tutorialspoint.com/sqlite/sqlite_python.htm diakses pada tanggal 12 Juni
2016.
[12] Owens, M., 2006, The Definitve Guide To SQLite, Apress, United States of America.
[13] ----, ----, Raspberry Pi Forum
http://raspberrypi.stackexchange.com/, diakses pada tanggal 20 September 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
[14] ----, ----, Python Coding Forum
http://stackoverflow.com/, diakses pada tanggal 3 November 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 1
LISTING PROGRAM PYTHON 2.7
from Tkinter import *
from tkMessageBox import *
import tkMessageBox as mb
import MySQLdb
import sys
import ttk
import time
import zbar
import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(16, GPIO.OUT) #LED Masuk
GPIO.setup(20, GPIO.OUT) #LED Keluar
GPIO.setup(13, GPIO.OUT) #Buzzer
GPIO.setup(19, GPIO.OUT) #Solenoid Masuk
GPIO.setup(26, GPIO.OUT) #Solenoid Keluar
judul_kolom = ("WAKTU MASUK", "WAKTU KELUAR", "NIM")
class Data(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.parent.geometry("900x500")
self.parent.resizable(False, False)
self.teksJam = StringVar()
self.initUI()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 2
self.koneksi()
self.isiidentitas(self.sql)
self.isiTabel()
self.detail()
self.listboxData.bind('<ButtonRelease>', self.klik)
self.closecam()
def initUI(self):
self.update() # memanggil def update dan menjalankanya
self.teksJam = StringVar()
self.datJam_menu = time.strftime("SECURITY ROOM ACCESS BASED ON RASPI
WITH BARCODE - BONIFASIUS KRISTIAWAN", time.localtime())
# atur ukuran window
# menempatkan window di tengah layar PC/Laptop
lebar = 850
tinggi = 500
# ************************* penggunaan fungsi winfo_screenwidth()
************************ #
setTengahX = (self.parent.winfo_screenwidth() - lebar) // 2
# ************************* penggunaan fungsi winfo_screenheight()
setTengahY = (self.parent.winfo_screenheight() - tinggi) // 2
self.parent.geometry("%ix%i+%i+%i" % (lebar, tinggi, setTengahX, setTengahY))
# ****************************************************************
mainFrame = Frame(self.parent, bg='blue', relief=RIDGE, bd=7)
mainFrame.pack(fill=BOTH, expand=YES)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 3
self.main = mainFrame
self.parent.title(self.datJam_menu)
# *********************** tampilan menubar ********************* #
self.menubar = Menu(self.parent)
self.parent.config(menu=self.menubar)
self.menu = Menu(self.menubar)
self.menu.add_command(label="Aktifkan Webcam 1", command=self.runscan)
self.menu.add_command(label="EXIT", command=quit)
self.menubar.add_cascade(label="Utama", menu=self.menu)
self.fr_inti = Frame(mainFrame, bg='black')
self.fr_inti.pack(expand=YES)
# ************************* Fitur Entry ********************** #
fr_c = Frame(self.fr_inti, bg='black')
fr_c.pack(expand = YES)
self.button1 = Button(fr_c, text='INPUT :', bg='gray', fg='black', relief=RAISED, bd=2,
command=self.masuk)
self.button1.pack(side=LEFT)
self.entryc = Entry(fr_c, relief=RIDGE, bd=2)
self.entryc.pack(side=LEFT, ipadx=20, expand=YES)
# *********************** BUAT TABEL *********************** #
# buat frame untuk tabel beserta scrollbar-nya
fr_data = Frame(self.fr_inti, bd=2)
fr_data.pack(side=LEFT, fill=BOTH, expand=NO)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 4
# buat tabel dengan Treeview
self.trvTabel = ttk.Treeview(fr_data, columns=judul_kolom,
show='headings')
# buat scrollbar
sbVer = Scrollbar(fr_data, orient='vertical',
command=self.trvTabel.yview)
sbVer.pack(side=LEFT, fill=BOTH)
self.trvTabel.pack(side=RIGHT, fill=Y, expand=NO)
# ************************* fitur listbox n scroll *************************
self.listboxData = Listbox(self.fr_inti, bg='black', fg='white', width=25, height=3)
self.listboxData.pack(side=TOP, expand=NO)
s = ttk.Style()
s.theme_use('default')
# ************************* fitur detail identitas ************************* #
self.fr_kanan = LabelFrame(self.fr_inti, text='DETAIL', fg='white', bg='black')
self.fr_kanan.pack(side=RIGHT, padx=2, pady=2 , expand=NO )
fr_hdr = Frame(self.fr_kanan, bg='black')
fr_hdr.pack(side=BOTTOM , expand=YES, pady=10)
# ************************* fitur detail nama, nim dan jabatan
*************************
fr_nn=Frame(self.fr_kanan, bg='black')
fr_nn.pack(fill=X, expand=YES, padx=50, pady=50)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 5
self.entrynn4 = Entry(fr_nn, relief=RIDGE, bd=4)
self.entrynn4.pack(side=BOTTOM, fill=X, expand=YES, pady=3)
self.entrynn3 = Entry(fr_nn, relief=RIDGE, bd=4)
self.entrynn3.pack(side=BOTTOM, fill=X, expand=YES, pady=3)
self.entrynn2 = Entry(fr_nn, relief=RIDGE, bd=4)
self.entrynn2.pack(side=BOTTOM, fill=X, expand=YES, pady=3)
self.entrynn1 = Entry(fr_nn, relief=RIDGE, bd=4)
self.entrynn1.pack(side=BOTTOM, fill=X, expand=YES, pady=3)
# ************************* label untuk jam() *************************
self.fr_out = LabelFrame(mainFrame, bg='grey')
self.fr_out.pack(side=RIGHT , expand=YES)
self.jam = Label(self.fr_out, bg='black', textvariable=self.teksJam
, compound='right', fg='white', font=('Comic Sans MS', 10))
self.jam.pack(side=BOTTOM)
#***********************Fungsi-Fungsinya*************************
# *********************** Koneksi Database *****************************#
def koneksi(self):
self.conn = MySQLdb.connect("localhost", "root", "raspberry", "roomaccess")
self.cur = self.conn.cursor()
self.sql = "SELECT * FROM identitas"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 6
def eksekusi(self, sql):
self.cur.execute(self.sql)
result = self.cur.fetchall()
totData = len(result)
return result, totData
# ******************************* Menampilkan Isi tabel identitas
*********************** #
def isiidentitas(self, sql=None):
self.listboxData.delete(0, END)
sql = self.sql + "ORDER BY ididentitas"
baris, jumData = self.eksekusi(sql)
if jumData == 0:
print("from isiidentitas")
mb.showwarning("Perhatian!",
"Tidak Ada Nama Dalam Database!")
else:
for data in range(jumData):
teks = "%s" %(baris[data][1])
self.listboxData.insert(END, teks)
self.listboxData.selection_set(0)
self.baris = baris
self.jumData = jumData
# ****************************** Fungsi Untuk menampilkan Detail Nama
********************* #
def detail(self):
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 7
index = self.listboxData.curselection()
kode = self.listboxData.get(index)
sql ="SELECT * FROM identitas WHERE nama = '%s'"%kode
#print 'kode: ', kode
self.cur.execute(sql)
result = self.cur.fetchall()
#print 'result :', result
self.entryKosong()
self.entrynn1.insert(END, result[0][0])
self.entrynn2.insert(END, result[0][1])
self.entrynn3.insert(END, result[0][2])
self.entrynn4.insert(END, result[0][3])
#print sql
# ************************** Isi Tabel *********************** #
def isiTabel(self):
sql = "SELECT history.*, identitas.ididentitas FROM history LEFT JOIN identitas ON
history.member = identitas.ididentitas ORDER BY idhistory ASC"
self.cur.execute(sql)
result = self.cur.fetchall()
c = 0
for kolom in result:
self.trvTabel.insert('', 'end', text=str(c), values=(kolom[1], kolom[2], kolom[3]))
c += 1
# isi judul tabel
for kolom in judul_kolom:
self.trvTabel.heading(kolom, text=kolom)
# ************************* Fungsi Kejadian Untuk Klik Detail Nama
*************************** #
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 8
##
def masuk(self):
ididentitas = str(self.entryc.get())
joinSQL = "SELECT identitas.ididentitas FROM history LEFT JOIN identitas ON
identitas.ididentitas = history.member WHERE identitas.ididentitas = '%s'"%(ididentitas)
self.cur.execute(joinSQL)
cekIdentitas = len(self.cur.fetchall()) == 0
if cekIdentitas:
historySQL = "SELECT * FROM history WHERE member = '%s' AND
waktu_keluar = '0000-00-00 00:00:00'"%(ididentitas)[:9]
self.cur.execute(historySQL)
cekHistory = len(self.cur.fetchall()) == 0
if cekHistory:
SQL = "INSERT INTO history(waktu_masuk, waktu_keluar, member) VALUES
(NOW(), '0000-00-00 00:00:00', '%s')"%(ididentitas)[:9]
mb.showwarning("Perhatian!", "SELAMAT DATANG")
self.pintuMasuk()
else:
SQL = "UPDATE history SET waktu_keluar = Now() WHERE member = '%s'
AND waktu_keluar = '0000-00-00 00:00:00'"%(ididentitas)[:9]
mb.showwarning("Perhatian!", "SELAMAT JALAN")
self.cur.execute(SQL)
self.conn.commit()
self.isiTabel()
self.pintuKeluar()
else:
mb.showwarning("Perhatian!", "Tidak Ada Nama Dalam Database!")
self.buzzer()
# ********************************** Aktifkan barcode scanner dari webcam
**************#
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 9
def runscan(self):
try:
p = os.popen('LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so zbarcam /dev/video','r')
print('Scanning')
data = p.readline()
print(data)
qrcode = str(data)[8:]
self.entryc.insert(END, qrcode)
if(qrcode):
test = qrcode
print(test)
finally:
p.close()
def closecam(self):
ididentitas = str(self.entryc.get())[8:]
# ************************* OUTPUT *************************** #
def pintuMasuk(self):
##coding LED & Solenoid
for i in range(0, 1):
GPIO.output(16, GPIO.HIGH)
GPIO.output(19, GPIO.HIGH)
time.sleep(1.5)
GPIO.output(16, GPIO.LOW)
GPIO.output(19, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
root.update()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 10
def pintuKeluar(self):
for i in range (0, 1):
GPIO.output(20, GPIO.HIGH)
GPIO.output(26, GPIO.HIGH)
time.sleep(1.5)
GPIO.output(20, GPIO.LOW)
GPIO.output(26, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
root.update()
def buzzer(self):
for i in range (0, 2):
GPIO.output(13, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(13, GPIO.LOW)
time.sleep(0.1)
GPIO.output(13, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(13, GPIO.LOW)
time.sleep(0.1)
GPIO.output(13, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(13, GPIO.LOW)
time.sleep(1)
GPIO.cleanup()
root.update()
# ************************* Fungsi Kejadian Untuk Klik Detail Nama
*************************** #
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 11
def klik(self, event):
self.detail()
def dblklik(self, event):
self.entrynn1.configure(state=NORMAL)
self.entrynn2.configure(state=NORMAL)
self.entrynn3.configure(state=NORMAL)
self.entrynn4.configure(state=NORMAL)
self.listboxData.configure(state=DISABLED)
self.entrynn1.focus_set()
self.klik()
def entryKosong(self):
self.entrynn1.delete(0, END)
self.entrynn2.delete(0, END)
self.entrynn3.delete(0, END)
self.entrynn4.delete(0, END)
# **************************** Insert Hasil Input Ke Tampilan Grid GUI
******************** #
def update(self):
# strftime() berfungsi untuk merubah data waktu secara lokal
# menjadi bentuk string yang kita inginkan.
datJam = time.strftime("%d / %m / %Y %H : %M : %S %p ",
time.localtime())
# mengubah teks jam sesuai dengan waktu saat ini
self.teksJam.set(datJam)
# perubahan teks jam dalam selang waktu 1 detik (1000 ms)
self.timer = self.parent.after(1000, self.update)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L A M P I R A N | 12
if __name__ =='__main__':
root = Tk()
app = Data(root)
root.mainloop()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI