BAB III PERANCANGAN SISTEM
3.1 Perancangan Sistem Dalam perancangan sistem ini dimulai dari sistem utama yaitu perancangan dan penempatan komponen-komponen elektronika (sensor/transducer/actuartor) di port board arduino. Adapun komponen tersebut adalah sebagai berikut : 1. RFID-reader, digunakan untuk membaca RFID-tag di kartu 2. LCD1602 digunakan untuk segala menampilkan aktivitas yang terjadi dalam bentuk tulisan di LCD baik dari proses inisialisasi kartu hingga respon dari server database. 3. Servo, digunakan untuk membuka dan menutup palang pintu berdasarkan output respon dari server database. 4. Phototransistor dan IR-Led, digunakan untuk mendeteksi dan menahan palang pintu jika mobil masih melintas di area palang pintu. 5. Shield
Ethernet
(Arduino),
digunakan
untuk
melakukan
proses
“handshaking” dengan database server baik dari inisialisasi kartu hingga respon server terhadap pemilik kartu tersebut.
23
Selain perancangan hardware di atas, penulis juga menggunakan pemrograman rekayasa perangkat lunak berbasis web dalam prosesnya. Pemrograman web ini tidak mampu berdiri sendiri, sehingga membutuhkan aplikasi pendukung berupa web server dan database server. Dikarenakan alasan lisensi dalam penggunaan aplikasi server, disini penulis menggunakan aplikasi server bersifat opensource yang terkenal handal dan memiliki sistem keamanan yang kuat. Aplikasi opensource tersebut adalah
Apache untuk Web Server dan MySQL untuk
Database Server. Apache dan MySQL merupakan salah satu aplikasi yang sering digunakan dalam dunia Internet, bahkan hampir rata-rata situs-situs perusahaan besar menggunakan aplikasi
tersebut
dalam
websitenya.
Salah
satunya
adalah
website
http://www.mercubuana.ac.id yang juga menggunakan Apache dan Mysql dalam web dan database servernya. Disamping itu, hampir setip forum IT aplikasi ini selalu membahas baik celah maupun parameter tips untuk meningkatkan performansi server terhadap segala kemungkinan serangan dari luar. Faktor kedua inilah selain lisensi di atas yang membuat penulis tertarik untuk mencoba menggabungkan antara arduino dan komponennya dengan aplikasi web dan database server berbasis opensource. Aplikasi web dalam perancangan sistem ini terdiri dari file-file utama yang digunakan untuk proses interaksi antara hardware dan database server. File tersebut adalah sebagai berikut :
24
1. File verifikasi_rfid.php, peranan file verifikasi_rfid.php sangat penting karena dalam implementasinya file ini digunakan untuk : a. Menerima paket data dari shield-ethernet arduino yang berisikan data RFID-tag kartu (hasil pembacaan RFID reader). b. Melakukan proses query kedalam database dengan data rfid yang diterima sebagai pernyataan(if). Jika data rfid tersebut ditemukan dalam database, file verifikasi_rfid.php akan memberikan respon ke arduino untuk membuka palang pintu, dan sebaliknya jika tidak ditemukan atau data tidak valid, file verifikasi_rfid.php akan memberikan respon ke arduino untuk tidak membuka palang pintu. c. Mencatat (log) jam dan tanggal kapan pintu palang terbuka berdasarkan “no polisi kendaraan” ke dalam database. 2. File login.html, digunakan untuk mengakses ke dalam database server. 3. File entry_data_mobil.php, form isian yang digunakan untuk memasukkan data mobil ke dalam database. 4. File entry_data_kartu.php, form isian yang digunakan untuk memasukkan data kartu rfid yang kolerasi dengan “no polisi kendaraan” dari data mobil. Selain memasukkan data kartu, form ini juga memberikan masa aktif kartu yang terhitung secara otomatis selama setahun dari tanggal aktivasi kartu. 5. File query_log.php, digunakan untuk menampilkan banyaknya akses terhadap palang pintu berdasarkan no polisi kendaraan, tanggal, bulan dan tahun.
25
Disamping file-file di atas, terdapat file-file pendukung yang bersifat membantu ke empat file utama di atas dalam proses komunikasi dengan database server, seperti : 1. tambah_data_mobil.php, 2. tambah_data_kartu.php, 3. hapus_data_mobil.php, 4. hapus_data_kartu.php, Dari fungsi dan penggunaaan tiap komponen hardware dan software di atas dapat digambarkan secara ringkas dalam blok diagram sebagai berikut :
LCD Output
Arduino Server :
RFID‐ Reader
+
Ethernet Shield
Phototransistor
APACHE MySQL
Servo
Gambar 3.1 Diagram Blok Perancangan Sistem
26
Dengan berdasarkan diagram blok di atas, jika penulis terangkan secara diagram alur (flowchart) akan seperti di bawah ini :
S T A R T
User Menempelkan kartu
RFID‐reader membaca tag kartu ?
tidak
terbaca
RFID‐reader mengirimkan data output ke arduino dan diberi nama variable “rfid”
gagal
Arduino login ke Database Server?
berhasil
Arduino mengirimkan variable “rfid” ke server
Menampilkan di LCD “Connection Failed”
gagal
Menampilkan di LCD
Query database dengan variable “rfid”?
berhasil
Database me‐log aktivitas akses pintu
“Access Denied” B A
27
A
B
Menampilkan di LCD
Arduino Memerintahkan Servo untuk membuka & menahan palang masih di area palang pintu Kendaraan sudah melewati palang ?
melewati palang pintu Arduino Memerintahkan Servo untuk menutup palang
E N D
Gambar 3.2 Diagram Alur Perancangan Sistem Dari diagram alur di atas, LCD berperan penting dalam menginformasikan segala aktivitas yang dilakukan Arduino terhadap kartu RFID-tag. Selain menggunakan LCD, penulis juga menuliskan script ke dalam arduino, agar segala aktivitas bisa terbaca melalui port USB Arduino jika dihubungkan dengan menggunakan aplikasi terminal (seperti hyperterminal) yang berfungsi sama seperti fungsi LCD yaitu memonitor tahapan alur aktivitas arduino.
28
Gambar 3.3 Informasi Aktivitas Sistem Melalui LCD
Gambar 3.4 Informasi Aktivitas Sistem Melalui Port USB
29
3.2
Perancangan Hardware
Dalam perancangan hardware ini, penulis hanya menggunakan port-port digital dari Board Arduino untuk dihubungkan ke sensor,transducer dan actuator. Penggunaan port-port tersebut antara lain : Tabel 3.1 Penggunaan Port Digital Arduino No. Digital Port
Komponen
0
RFID-reader (ID-12)
1
Not Used
2
Servo Parallax 1800
3
Shield Ethernet Arduino
4
LCD1602 – 74HS595
5
Shield Ethernet Arduino
6
Shield Ethernet Arduino
7
LCD1602 – 74HS595
8
LCD1602 – 74HS595
9
Shield Ethernet Arduino
10
Shield Ethernet Arduino
11
Shield Ethernet Arduino
12
Phototransistor
13
Not Used
30
Gambar 3.5 Arduino Duemilanove Untuk memudahkan dalam penulisan perancangan hardware, di laporan ini penulis memecah bagian-bagian rangkaian beserta script untuk pemrograman arduino-nya. Sedangkan keseluruhan script arduino untuk sistem perancangan terlampir dalam lampiran di laporan ini. Rangkaian – rangkaian tersebut terdiri dari : 1. Perancangan rangkaian LCD 2. Perancangan rangkaian palang pintu 3. Perancangan rangkaian RFID 4. Konfigurasi Shield-Ethernet Arduino. 5. Perancangan PCB-board rangkaian
31
3.2.1 Perancangan Rangkaian LCD
Gambar 3.6 Perancangan Rangkaian LCD Dari rangkaian di atas, penulis menggunakan IC shift register 74HC595 untuk menghemat penggunaan port digital yang akan dihubungkan dengan komponen LCD.
32
Tabel 3.2 Perbandingan Penggunaan Port Digital untuk LCD dengan Shift-Register dan tanpa Shift-Register Not using SR Port LCD
Digital Port
Using SR Port SR
Arduino
Digital Port Arduino
LCD RS
12
6
-
LCD Enable
11
10
-
LCD D4
5
3
-
LCD D5
4
2
-
LCD D6
3
1
-
LCD D7
2
15
-
-
-
14
4
-
-
12
8
-
-
11
7
Secara pemrograman arduino untuk LCD dengan menggunakan komponen shift register 74HC595 hampir sama dengan pemrograman arduino untuk LCD tanpa menggunakan komponen shift register. Perbedaannya adalah penggunaan library C, seperti gambar dibawah ini .
33
Gambar 3.7 Script Arduino untuk LCD tanpa Shift-Register
Gambar 3.8 Script Arduino untuk LCD dengan Shift-Register
34
Output Program dari kedua program di atas adalah
Gambar 3.9 Output Script Arduino di LCD 3.2.2 Perancangan Rangkaian Palang Pintu
Gambar 3.10 Perancangan Rangkaian Palang Pintu
35
Gambar 3.11 Script Arduino untuk Rangkaian Palang Pintu Output dari sample program di atas adalah palang pintu akan membuka selama 5 detik, jika dalam 5 detik tersebut sensor phototransistor mendeteksi benda/mobil berada di area palang
pintu yang mengakibatkan terhalangnya penerimaan
pancaran sinar infra merah maka palang pintu akan ditahan hingga benda/mobil tersebut melewati palang tersebut.
36
3.2.3 Perancangan Rangkaian RFID
Gambar 3.12 Perancangan Rangkaian RFID
Gambar 3.13 Script Arduino untuk Rangkaian RFID
37
Output dari program di atas dapat dilihat dengan menggunakan aplikasi terminal di operating system, seperti hyperterminal/ZOC di Microsoft Windows dengan menggunakan parameter baudrate 9600/8/N seperti di bawah ini :
Gambar 3.14 Output Script Arduino untuk RFID di Terminal 3.2.4
Konfigurasi Shield-Ethernet Arduino
3.2.4.1 Sistem Pengalamatan IP Untuk komunikasi data dalam jaringan komputer, ada beberapa aspek yang perlu diperhatikan mengenai sistem pengalamatan IP atau yang dikenal dengan istilah IP Address. Beberapa aspek tersebut antara lain : Kelas Jaringan, untuk IPV4 kelas jaringan dibagi menjadi 3 kelas, dimana : Tabel 3.3 Kelas IPV4 Kelas
Default Subnet Mask
Range IP-Address
A
255.0.0.0
1.x.x.x – 126.x.x.x
B
255.255.0.0
128.x.x.x - 191.x.x.x
C
255.255.255.0
192.x.x.x – 223.x.x.x
Nilai x : 0 hingga 255
38 Topologi jaringan LAN atau WAN, jika menggunakan LAN umumnya dalam
sebuah Network Address yang sama, namun jika menggunakan WAN bahkan internet pasti akan berbeda network-address dan diperlukan perangkat Router sebagai gateway/penghubung antara kedua network-address tersebut.
Web Server & Database Server
IP Address : 192.168.69.110
IP Address : 192.168.69.120
Mask Address : 255.255.255.0
Netmask : 255.255.255.0
IP Gateway : 192.168.69.33
Protocol HTTP (80)
Gambar 3.15 Perencanaan Sistem Pengalamatan IP
39
Gambar 3.16 Script Arduino untuk Shield Ethernet Dalam perancangan sistem ini, penulis menggunakan kelas C dengan Network Address 192.168.69.x dan topologi LAN. Seperti yang terlihat dalam potongan script arduino di atas, untuk sistem pengalamatan IP yang digunakan seperti yang terlihat dalam tabel di bawah ini : Tabel 3.4 Perencanaan Sistem Pengalamatan IP IP Address
Alokasi untuk
192.168.69.120
Server (Database dan Web)
192.168.69.110
Shield Ethernet Arduino
40
3.2.4.2 Proses Handshaking Paket Data
Gambar 3.17 Proses Handshaking Paket Data Proses handshaking : Proses dimana pertukaran paket data antar host yang digunakan untuk mengawali komunikasi data dengan host lain, memelihara komunikasi ketika masih digunakan, dan kemudian menutup komunikasi bila tidak digunakan. Berdasarkan alur
di atas, proses pengiriman data hasil
pembacaan RFID-reader dikirim ke server dengan menggunakan protokol HTTP (80). Seperti halnya sebuah komputer yang sedang meminta tampilan website dari web server, Arduino juga menggunakan perintah sintak yang sama dalam mengakses webserver.
Gambar 3.18 Cara Arduino Memanggil Webserver
41
Gambar 3.19 Script Arduino untuk Proses Handshaking dengan Webserver
42
Hasil Output dari Script Arduino di atas adalah :
Gambar 3.20 Output Script Arduino dari Proses Handshaking Sample script Arduino di atas mengirim data pembacaan RFID-tag 00007A79BE dengan variable IDString, ke webserver 192.168.69.120, IDString ini yang nantinya akan digunakan webserver untuk melakukan query ke dalam database server. Jika database menemukan data RFID-tag, webserver akan merespon”Y” yang berarti ACCESS-Granted untuk perintah membuka palang pintu, sebaliknya jika tidak ditemukan, webserver akan merespon “N” berarti ACCESS-DENIED
43
untuk tetap menutup palang pintu. Untuk proses query database, penulis membahasa dalam subbab tersendiri 3.2.5
Perancangan PCB-Board Rangkaian
Dalam perancangan hardware, beberapa rangkaian memerlukan PCB-Board tersendiri untuk menempatkan komponen dalam rangkaian di atas. Penulis membagi rangkaian ke dalam 3 PCB-Board sebagai berikut : 1
PCB-Board I, untuk rangkaian LCD dan RFID
Gambar 3.21 PCB-Board I Tampak Depan
44
Gambar 3.22 PCB-Board I Tampak Belakang
45
2
PCB-Board II, untuk rangkaian Palang Pintu (Sensor dan Phototransistor)
Servo
Phototransistor
Gambar 3.23 PCB-Board II Tampak Belakang
46
3
PCB-Board III, untuk rangkaian Palang Pintu (LED)
220 Ω
Gambar 3.24 PCB-Board III Tampak Belakang
47
Penghubung antara PCB-Board I dan PCB-Board II penulis menggunakan kabel serupa seperti kabel straight untuk jaringan data dengan antar muka konektor RJ45, dimana pin-pinnya mempunyai susunan sebagai berikut :
Gambar 3.25 Pin-Assignment Konektor RJ-45 Tabel 3.5 Alokasi Pin RJ-45 Pin
Alokasi
1
GND
2
NOT USED
3
PORT 4 ARDUINO
4
PORT 7 ARDUINO
5
PORT 0 ARDUINO
6
NOT USED
7
PORT 8 ARDUINO
8
VCC
48
Gambar 3.26 Maket Perancangan Sistem
3.3 Perancangan Rekayasa Perangkat Lunak Dalam perancangan rekayasa perangkat lunak ini penulis membagi 2 sistem perancangan, yaitu :
Perancangan Database Men-design tabel sederhana yang berisikan data mobil dan data kartu yang akan digunakan dalam proses verifikasi kartu.
Perancangan File Web Server Men-design tampilan form entri yang digunakan untuk memasukkan data kartu dan data mobil ke dalam tabel-tabel database yang sudah dirancang.
49
3.3.1 Perancangan Database Untuk perancangan database server, penulis menggunakan aplikasi server berbasis opensource yang sudah banyak digunakan, yaitu aplikasi MySQL. Aplikasi MySQL ini hampir sama dengan aplikasi Microsoft ACCESS baik dari struktur tabel maupun penggunaan SQL (Structure Query Language). Alasan penulis memilih MySQL adalah karena reliabilitas/ketahanan aplikasi jika diterapkan dalam jaringan data, terlebih jika database yang digunakan sudah sangat besar dan kompleks. Faktor inilah, hampir perusahaan skala nasional dan multinasional menggunakan MySQL sebagai aplikasi database utama untuk menyimpan datadata perusahaan yang bersifat rahasia. Dalam perancangan database, penulis menggunakan hanya 3 tabel yang akan digunakan untuk menyimpan data kartu dan mobil, tabel-tabel inilah yang nantinya yang akan digunakan untuk menerima proses query dari data rfid yang dkirim oleh Shield Ethernet Arduino. Adapun tabel-tabel tersebut terdiri- dari :
Tabel data_mobil : menyimpan data mobil berisi no polisi kendaraaan, merk, dan tipe kendaraan.
Tabel data_kartu : menyimpan data kartu berisi no polisi kendaraan, rfid, tanggal aktivasi, tanggal kadaluarsa, akses portal.
Tabel data log : menyimpan kapan dan tanggal portal terakses berdasarkan dari no polisi kendaraan.
50
Gambar 3.27 Perencanaan Field Tabel Database Langkah – langkah dalam perancangan database adalah sebagai berikut :
1
Membuat Database Setelah membuat rancangan database, langkah berikutnya dalam pembuatan suatu database dapat dilakukan dengan memberikan perintah SQL berikut : Mysql> create database perusahaan; Untuk memastikan apakah perintah tersebut berhasil dilakukan, diberikan perintah SQL berikut: Mysql> show databases;
51
2
Memilih Database Sebelum dapat membuat tabel diperlukan pemilihan database yang telah dibuat sebelumnya dengan perintah sebelumnya . mysql> use perusahaan;
3
Membuat Tabel Kemudian baru membuat tabel sesuai dengan bagan perancangan di gambar 3.26, dengan perintah :
Tabel data_mobil
Mysql> create tabel data_mobil( > no_polisi varchar(10), > merk_kendaraan(10), > tipe_kendaraan(30));
Tabel data_kartu
Mysql> create tabel data_mobil( > no_polisi varchar(10), > rfid(10), > tanggal_aktivasi date, > tanggal_kadaluarsa date);
Tabel data_log
mysql> create tabel data_log( > tanggal date, > jam text, > no_polisi varchar(10), > record text);
52
3.3.2 Perancangan File Web Server Aplikasi web dalam perancangan sistem ini terdiri dari file-file utama yang digunakan untuk proses interaksi antara hardware dan database server. File tersebut adalah sebagai berikut : 1. File verifikasi_rfid.php, peranan file verifikasi_rfid.php sangat penting karena dalam implementasinya file ini digunakan untuk a. Menerima paket data dari shield-ethernet arduino yang berisikan data RFID-tag kartu (hasil pembacaan RFID reader). b. Melakukan proses query kedalam database dengan data rfid yang diterima sebagai pernyataan (if). Jika data rfid tersebut ditemukana dalam database, file verifikasi_rfid.php akan memberikan respon ke arduino untuk membuka palang pintu, dan sebaliknya jika tidak ditemukan atau data tidak valid, file verifikasi_rfid.php akan memberikan respon ke arduino untuk tidak membuka palang pintu. c. Mencatat (log) jam dan tanggal kapan pintu palang terbuka berdasarkan “no polisi kendaraan” ke dalam database. 2. File login.html, digunakan untuk mengakses ke database server. 3. File entry_data_mobil.php dan tambah_data_mobil.php, form isian yang digunakan untuk memasukkan data mobil kedalam database. Script program terlampir dalam LAMPIRAN.
Gambar 3.28 Entri Data Mobil
53
4. File entry_data_kartu.php dan tambah_data_kartu.php, form isian yang digunakan untuk memasukkan data kartu rfid yang kolerasi dengan “no polisi kendaraan” dari data mobil. Selain memasukkan data kartu, form ini juga memberikan masa aktif kartu yang terhitung secara otomatis selama setahun dari tanggal aktivasi kartu. Script program terlampir dalam LAMPIRAN.
Gambar 3.29 Entri Data Kartu 5. File query_log.php, digunakan untuk menampilkan banyaknya akses terhadap palang pintu berdasarkan no polisi kendaraan, tanggal, bulan dan tahun. cript program terlampir dalam LAMPIRAN.
Gambar 3.30 Form Query Total Pengangkutan
54
3.3.2.1 Sistem Kerja File verikasi_rfid.php
2a
3
4
Gambar 3.31 Sistem Kerja File verifikasi_rfid.php
55
Dari gambaran di atas dapat disimpulkan sebagai berikut : 1. RFID reader membaca RFID-tag kartu yang kemudian mengirimkan data hasil pembacaan ke Arduino dengan ditampung dalam variable IDString. 2. Arduino melakukan komunikasi ke webserver dengan mengirimkan perintah menggunakan
protocol
http
http://192.168.69.120/verifikasi_rfid.php?rfid=IDString,
(80) yang
kemudian
webserver akan menampung IDstring yang berisi data RFID tersebut ke dalam variable $rfid. 3. Dengan variabel $rfid inilah yang kemudian menjadi kunci query ke tabel data_kartu
dengan
perintah
"SELECT
tanggal_kadaluarsa
FROM
data_kartu WHERE rfid='$rfid'. 4. Hasil query inilah akan dikembalikan ke webserver berupa karakter “N” atau “Y”. 5. Karakter-karakter tersebut dikirim ke Arduino sebagai respon dari verifikasi RFID-tag. Arduino membaca karakter tersebut dengan sebuah kondisi pernyataan,
karakter
“N”
berarti
“ACCESS
DENIED”
(Arduino
memerintahkan palang pintu untuk tetap tertutup) dan “Y” berarti “ACCESS GRANTED” (Arduino memerintahkan palang pintu untuk terbuka beberapa detik)
File verifikasi_rfid di samping mengecek status kartu RFID-tag, file ini juga akan melakukan pencatatan (log) jika data RFID ditemukan dalam database di tabel kartu dengan perintah query “INSERT INTO data_log(tanggal, jam, no_polisi, record) VALUES (‘$tanggal’, ’$jam’, ’$no_polisi’,’Akses Portal)”.