BAB II TINJAUAN PUSTAKA
2.1
Tinjauan Mutakhir Penelitian ini diperuntukan untuk tugas akhir dengan judul ” Rancang
Bangun
Sistem
Aplikasi
Keanggontaan
Konsumen
Berbasis
RFID
Untuk
Pengumpulan Poin Pada Proses Transaksi Retail”. Penelitian ini mengacu pada
beberapa sumber dan tinjauan yang sudah ada dimana masing-masing penulis menggunakan teknologi RFID untuk beberapa permasalahan sehari-hari. Berikut merupakan uraian singkat referensi tersebut: 1.
Penelitian yang dilakukan oleh Muliarsha (2009) tentang alat absensi elektronik dengan bantuan aplikasi RFID, dimana ID yang terdapat pada kartu UEM4100 dibaca oleh RFID Reader yang bekerja pada level tegangan 5V DC dengan frekuensi 125 KHz dan menggunakan koneksi udara (wireless), sehingga pada saat tag RFID didekatkan pada reader, reader akan menmindai data ID. Jika cocok dengan data ID tag yang disimpan dalam database maka lampu LED indikator akan menyala pada hardware, ID yang terbaca ini akan dikeluarkan menuju mikrokontroler AT89S51 kemudian diolah dan akan ditampilkan ke komputer dengan menggunakan bahasa pemrograman C#, dan program akan langsung menampilkan detail data user. Adapun format data keluaran yang digunakan dalam penelitian ini adalah ABA Track2 10 Desimal.
Absensi elektronik dengan aplikasi RFID
diharapkan dapat mempermudah karyawan dalam melakukan absensi harian sebelum melakukan aktivitas pekerjaannya di perusahaan. 2.
Penelitian yang dilakukan oleh Eviriantari (2010) tentang penggunaan kunci elektronik yang didesain untuk membuka dan menutup pintu dengan bantuan aplikasi SMS gateway sebagai penghubung antara ponsel yang terhubung langsung dengan sistem dan ponsel user pengguna kunci. Selain itu kunci elektronik ini dibantu oleh Motor Stepper sebagai penggerak dan Mikrokontroler ATmega8535 sebagai pusat kendali dan penghubung antara komputer dan kunci. Kunci elektronik bekerja dengan cara menerima data
6
7
dari ponsel pengirim yang kemudian diterima oleh ponsel sistem, diproses lebih lanjut oleh sms gateway dan disimpan dalam database, jika format SMS yang dikirim sesuai dengan perintah yang tersimpan maka kunci pintu dapat terbuka atau tertutup sesuai dengan perintah yang dikirm. 3.
Penelitian yang dilakukan oleh Jaya (2009) tentang pemanfaatan RFID dalam sistem parkir. RFID digunakan sebagai penanda tiap kendaraan yang parkir. ID Tag yang masuk ke program billing akan dicocokkan dengan database. Apabila ID Tag cocok dengan database maka program akan dilanjutkan ke langkah selanjutnya yaitu pengisian data parkir dan perhitungan tarif parkir. Tetapi jika data tidak cocok dengan database, maka sistem akan memberi informasi bahwa data yang masuk salah dan sistem akan berhenti. Berdasarkan ketiga penelitian tersebut, maka dirancanglah penelitian
tentang penyimpanan uang kembalian dengan pemanfaatan RFID. RFID yang digunakan pada penelitian pertama sebagai penanda tiap-tiap karyawan pada penelitian ini akan digunakan sebagai penanda tiap-tiap anggota pada outlet ritel. Kemudian cara kerja sistem pada penelitian ini mengacu pada penelitian kedua. Jika pada penelitian di atas kunci yang digunakan untuk membuka pintu ialah format SMS, maka pada penelitian ini format SMS yang merupakan kode unik, digantikan oleh RFID tag yang juga memiliki kode unik pada setiap tag. Pintu yang dibuka, dianalogikan sebagai pintu loker, yang di dalamnya bisa digunakan untuk menyimpan uang. Dalam penelitian ini, loker tersebut dibuat secara virtual, yaitu sebagai rekening yang bisa dibuka dengan password. Karena password yang digunakan adalah ID dari tag yang dimiliki oleh anggota outlet ritel, maka rekening itu pun hanya bisa dibuka dengan RFID tag yang dimiliki oleh pemilik rekening yang bersangkutan. Pada penelitian ketiga, tiap-tiap kendaraan ditandai dengan sebuah RFID tag. Pada saat membayar, akan ditampilkan data tagihan pembayaran retribusi parkir sesuai dengan durasi parkir kendaraan yang bersangkutan. Dalam penelitian ini RFID akan digunakan oleh konsumen untuk menampilkan data rekening konsumen yang bersangkutan pada saat pembayaran di kasir.
8
2.2
Tinjauan Pustaka
2.2.1
RFID RFID merupakan singkatan dari Radio Frequency Identification. Sebuah
tag RFID memiliki identitas berupa nomor seri yang unik, ditransmisikan secara nirkabel menggunakan gelombang radio. Tag ini dapat dibaca hingga beberapa meter jauhnya dari perangkat reader dan tidak membutuhkan area pandangan langsung/line of sight. (Violino, 2005) Sebuah sistem RFID terdiri dari dua bagian, yaitu sebuah tag atau label dan pembaca. Sebuah tag RFID di dalamnya terbagi menjadi dua bagian, yaitu microchip yang menyimpan dan memproses informasi, dan antena untuk menerima dan mengirimkan sinyal. Tag yang memiliki nomor seri khusus ini bekerjasama dengan RFID reader yang memancarkan sinyal ke tag RFID. Tag akan merespon dengan informasi yang tertulis di bank memori. Informasi ini dikirimkan kepada reader yang kemudian akan mengirimkan hasil pembacaan untuk diolah lewat program komputer. (EPC RFID, 2013)
2.2.1.1 Sejarah RFID Dalam sebuah artikel yang dilansir di website www.rfidjournal.com, secara umum dapat dikatakan bahwa sejarah perkembangan RFID bermula dari Perang Dunia II. Pasukan Jerman, Jepang, Amerika, dan Inggris, mereka semua menggunakan radar yang telah ditemukan pada tahun 1935 oleh Sir Robert Alexander Watson-Watt, untuk memperingatkan kedatangan pesawat walaupun masih bermil-mil jauhnya. Namun permasalahannya ialah tidak ada cara untuk mengetahui apakah pesawat itu berasal dari pihak musuh atau bukan. Di bawah Watson-Watt yang mengepalai sebuah proyek rahasia, Inggris mengembangkan sistem aktif pertama: Identify Friend or Foe (IFF). Setiap pesawat Inggris dipasang sebuah transmitter. Ketika transmitter ini menerima sinyal radar, transmitter ini mem-broadcast sinyal yang dapat diidentifikasi oleh pasukan Inggris bahwa itu adalah pesawat milik pasukan Inggris.
9
RFID bekerja dengan konsep dasar yang sama. Sebuah sinyal dikirim kepada transponder yang kemudian merefleksikan sinyal untuk sebuah tag pasif, atau mem-broadcast sinyal untuk sebuah tag aktif. Pengembangan dibidang radar dan komunikasi gelombang radio berlanjut sepanjang dekade 50-60an. Ilmuwan dan akademisi di Amerika, Eropa, dan Jepang melakukan riset dan menunjukkan bagaimana energi gelombang radio dapat digunakan untuk mengidentifikasi objek. Hal ini kemudian digunakan secara komersial dalam sistem anti-pencurian. Sebuah tag 1 bit digunakan untuk mendeteksi status pembayaran sebuah item. Bit tersebut hanya bernilai on atau off. Jika item tersebut sudah dibayar, bit dalam tag yang terdapat pada barang tersebut diset off. Jika bit yang masih on keluar dari area perbelanjaan, reader akan mendeteksinya dan kemudian membunyikan alarm (Roberti, 2005). Pada tanggal 23 Januari 1973, Mario W. Cardullo mendapatkan US Patent untuk tag RFID aktif dengan memori rewritable. Sepuluh tahun kemudian seorang wirausahawan asal California, Charles Walton menerima paten untuk transponder pasif yang digunakan untuk membuka pintu tanpa kunci. Paten inilah yang kemudian menjadi paten pertama yang menggunakan nama RFID. (Roberti, 2005)
2.2.1.2 Jenis-jenis tag RFID Pada dasarnya terdapat dua macam jenis tag RFID menurut sumber tenaganya, yaitu tag aktif, dan tag pasif. 1. Tag aktif RFID Perangkat RFID tag terbagi menjadi dua kelas besar, yaitu tag aktif dan tag
pasif.
Tag
aktif
menggunakan
sumber
daya
tambahan
untuk
pengoperasiannya. Sumber daya tambahan ini bisa didapat dari baterai, bisa juga dari infrastruktur listrik. Penggunaan sumber daya dari baterai menyebabkan tag aktif RFID memiliki masa pakai yang bergantung pada energi yang tersimpan di dalam baterai. Jika energi di dalam baterai telah habis, maka tag tersebut tidak berfungsi sebagaimana biasanya (Want, 2006).
10
Penggunaan tag aktif biasanya dikhususkan pada aset besar, misalnya peti kontainer, kargo, mobil, dan sebagainya. Penggunaan tag aktif pada aset besar dikarenakan jangkauan pembacaannya relatif jauh, bisa mencapai 20 meter, bahkan ada pula yang mencapai 100 meter. Frekuensi yang digunakan oleh tag aktif biasanya beroperasi pada 455MHz, 2.45MHz, atau 5.8MHz (Violino, 2005).
2. Tag pasif RFID Penggunaan baterai menyebabkan tag RFID memiliki ukuran yang besar, biaya produksi yang relatif besar, dan masa pakainya terbatas oleh baterai itu sendiri. Karena itu tag pasif RFID menjadi lebih diminati. Tag pasif tidak membutuhkan sumber daya tambahan untuk pengoperasiannya. Tag pasif juga tidak membutuhkan penanganan khusus. Selain itu, tag pasif memiliki masa operasional yang tidak terbatas, disebabkan tidak adanya penggunaan baterai untuk mengoperasikannya. Dengan ketiadaan baterai, tag pasif menjadi lebih kecil ukurannya sehingga praktis digunakan. Tag pasif hanya terdiri dari tiga bagian utama, yaitu antena, chip semikonduktor, dan materi pembungkus/enkapsulasi. Agar dapat bekerja, RFID reader memancarkan gelombang radio dengan daya tertentu. Daya inilah yang kemudian digunakan oleh tag untuk beroperasi. Tag kemudian akan mengirimkan kembali ID tag tersebut yang tersimpan di dalam chip semikonduktor. Antena berfungsi
menangkap
gelombang
radio,
sedangkan
enkapsulasi
akan
mempertahankan chip dan antena dari kerusakan yang ditimbulkan oleh lingkungan sekitar (Want, 2006).
2.2.1.3 RFID reader RFID reader berkomunikasi dengan tag melalui gelombang radio untuk mendapatkan identitas dari tag tersebut. Dalam lingkungan dengan banyak tag, reader bisa saja melakukan kesalahan. Untuk itu RFID reader biasanya akan menjalankan protokol anti-collision untuk memastikan konflik komunikasi tidak terjadi. Protokol ini memungkinkan RFID reader untuk berkomunikasi dengan tag secara berurutan dengan cepat (Weiss, 2007).
11
Lebih lanjut dikatakan oleh Weiss (2007) bahwa reader bertanggung jawab untuk mengoperasikan tag pasif. Menggunakan antena, tag akan menangkap gelombang radio yang dipancarkan oleh reader. Karena tag pasif tidak memiliki “on-board power”, maka tag pasif hanya akan mengandalkan energi dari gelombang radio yang dipancarkan reader untuk merespon komunikasi dan mengirimkan identitasnya.
1.
RFID Reader RDM6300 Salah satu jenis RFID reader adalah RDM6300. Bentuk fisik dan deskripsi
pin dari RDM6300 adalah seperti gambar 2.1 dan gambar 2.2 di bawah ini.
Gambar 2.1 RFID Reader RDM6300 Sumber: http://www.seeedstudio.com/depot/datasheet/RDM630-Spec.pdf
Dalam datasheet RDM6300, deskripsi pinnya adalah sebagai berikut
Gambar 2.2 Deskripsi pin RDM6300 Sumber: http://www.seeedstudio.com/depot/datasheet/RDM630-Spec..pdf
12
Penjelasan lebih lengkap mengenai pin dari RDM6300 tercantum dalam tabel 2.1 hingga tabel 2.3.
P1: Tabel 2.1 Tabel Pin 1
PIN 1
TX
PIN 2
RX
PIN 3
PIN 4
GND
PIN 5
+5V(DC)
P2: Tabel 2.2 Tabel Pin 2
PIN 1
ANT1
PIN 2
ANT2
P3 Tabel 2.3 Tabel Pin 3
2.2.2
PIN 1
LED
PIN 2
+5V(DC)
PIN 3
GND
Mikrokontroler Sejarah mikrokontroler bermula dari mikroprosesor di tahun 1969. Pada
tahun tersebut Intel memproduksi mikroprosesor Intel P4004. Mikroprosesor ini merupakan mikroprosesor pertama di dunia, dibuat oleh Intel dengan Ted Hoff dan Federico Faggin sebagai desainer utamanya. Intel P4004 merupakan semikonduktor pertama yang memberikan fungsi komputer dalam kelas chip, sementara saat itu semikonduktor dan sirkuit terpadu atau IC (Integrated Circuit) diproduksi berdasarkan fungsi khusus. Walaupun Intel P4004 dibuat untuk
13
penggunaan pada kalkulator, namun mikroprosesor ini juga dapat ditemui dalam banyak aplikasi yang lain. Mikroprosesor yang telah dikembangkan tersebut kemudian dirasakan memiliki keterbatasan. Oleh kerena itu, Intel kemudian terus mengembangkan mikroprosesornya. Berkat pengembangan tersebut, kinerja mikroprosesor semakin meningkat di setiap pengembangannya. Bukan hanya itu, bahkan keterbatasan dari mikroprosesor
mengantarkan
pada
penemuan
mikrokontroler.
(Udayashankara, 2009) Istilah mikrokontroler berbeda dengan mikroprosesor. Mikroprosesor membutuhkan memori eksternal untuk dapat menjalankan program. Disamping itu, mikroprosesor tidak dapat secara langsung dihubungkan dengan perangkat input/output. Dibutuhkan peripheral chips untuk menghubungkan mikroprosesor dengan perangkat input/output. Sedangkan mikrokontroler mengandung sebuah mikroprosesor dan satu atau lebih dari komponen berikut: -
Memory
-
Analog to Digital Converter
-
Digital to Analog Converter
-
Parallel I/O interface
-
Serial I/O interface
-
Timers and counters
Gambar 2.3 berikut menunjukkan diagram blok sebuah mikrokontroler yang merupakan “komputer dalam sebuah chip”.
Gambar 2.3 Diagram Blok Mikrokontroler Sumber: Udayashankara, 2009
14
Dengan demikian, mikrokontroler dapat dianggap sebagai sistem mandiri dengan prosesor, memori dan peripheral (Heath, 2002). Dengan kata lain mikrokontroler dapat dikatakan sebagai sebuah komputer kecil dalam sirkuit terpadu yang biasa disebut chip, yang di dalamnya terkandung sebuah inti prosesor, memori (sejumlah kecil RAM, memori program, atau keduanya), dan perlengkapan input output. Lebih lanjut Heath menjelaskan bahwa chip tersebut, karena merupakan sistem mandiri dengan prosesor, memori, dan peripheral, dalam banyak kasus yang dibutuhkan untuk menggunakannya dalam embedded system adalah hanya dengan menambahkan perangkat lunak. Prosesor mikrokontroler biasanya didasarkan pada arsitektur 8 bit stackbased seperti keluarga MC6800. Ada juga tersedia arsitektur versi 4 bit seperti seri National COP yang tentu saja kekuatan pemrosesannya lebih kecil dan karena itu biayanya juga lebih kecil.
2.2.2.1 Mikrokontroler ATmega 328P Vendor mikrokontroler selain Intel ialah Atmel. Perusahaan ini memperkenalkan mikrokontroler 8 bit pertama pada tahun 1993. Generasi pertama flash microcontroller ini didasarkan pada standar industri 8051 core, dan menggunakan suplai tegangan tinggi terpisah untuk pemrograman. Keuntungan yang didapatkan pengguna dari flash microcontroller adalah bahwa perangkat mikrokontroler dapat diprogram sebelum perangkaian sistem. Jika ditemukan bug pada sistem, atau jika dibutuhkan beberapa perubahan, perangkat mikrokontroler dapat dilepaskan dan diprogram ulang. (Svendsli, 2003) Salah satu produk flash microcontroller dari Atmel adalah ATmega 328P. mikrokontroler ini mempunyai arsitektur RISC (Reduce Instruction Set Computer) yang dimana setiap proses eksekusi data lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). Dalam datasheet ATmega328P, disebutkan fitur-fitur yang dimiliki mikrokontroler ATmega328P adalah sebagai berkut : 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.
15
32 x 8-bit register serba guna. Kecepatan hingga 16 MIPS pada frekuensi 16MHz. Memiliki 512 Bytes EPROM (Electically Erasable Programmable Read Only Memory) sebagai tempat penyimpanan data meskipun catu daya dimatikan dan 1 KB SRAM (Static Random Access Memory). 32 KB Flash Memory dan pada arduino memiliki bootloader yang menggunakan 2 KB dari flash memori sebagai bootloader. Memiliki pin I/O digital sebanyak 14 pin, 6 diantaranya PWM (Pulse Width Modulation) output. Tegangan pada saat operasi sekitar 4.5 – 5.5 V. 2.2.2.2 Konfigurasi pin ATmega328P Gambar 2.4 berikut menunjukkan konfigurasi pin ATmega328P.
Gambar 2.4 Konfigurasi pin ATmega328P Sumber: Datasheet ATmega328P
16
2.2.2.3 Pin Descriptions 1. VCC Suplai digital tegangan 2. GND Ground. 3. Port B Tabel 2.4 Konfigurasi Pin Port B
Port Pin PB7
Alternate Function XTAL2 (Chip Clock Oscillator pin 2) TOSC2 (Timer Oscillator pin 2) PCINT7 (Pin Change Interrupt 7)
PB6
XTAL1 (Chip Clock Oscillator pin 1 or External clock input) TOSC1 (Timer Oscillator pin 1) PCINT6 (Pin Change Interrupt 6)
PB5
SCK (SPI Bus Master clock Input) PCINT5 (Pin Change Interrupt 5)
PB4
MISO (SPI Bus Master Input/Slave Output) PCINT4 (Pin Change Interrupt 4)
PB3
MOSI (SPI Bus Master Output/Slave Input) OC2A (Timer/Counter2 Output Compare Match A Output) PCINT3 (Pin Change Interrupt 3)
PB2
SS (SPI Bus Master Slave select) OC1B (Timer/Counter1 Output Compare Match B Output) PCINT2 (Pin Change Interrupt 2)
PB1
OC1A (Timer/Counter1 Output Compare Match A Output) PCINT1 (Pin Change Interrupt 1)
PB0
ICP1 (Timer/Counter1 Input Capture Input) CLKO (Divided System Clock Output) PCINT0 (Pin Change Interrupt 0)
17
4. Port C Tabel 2.5 Konfigurasi Pin Port C
Port Pin PC6
Alternate Function RESET (Reset pin) PCINT14 (Pin Change Interrupt 14)
PC5
ADC5 (ADC Input Channel 5) SCL (2-wire Serial Bus Clock Line) PCINT13 (Pin Change Interrupt 13)
PC4
ADC4 (ADC Input Channel 4) SDA (2-wire Serial Bus Data Input/Output Line) PCINT12 (Pin Change Interrupt 12)
PC3
ADC3 (ADC Input Channel 3) PCINT11 (Pin Change Interrupt 11)
PC2
ADC2 (ADC Input Channel 2) PCINT10 (Pin Change Interrupt 10)
PC1
ADC1 (ADC Input Channel 1) PCINT9 (Pin Change Interrupt 9)
PC0
ADC0 (ADC Input Channel 0) PCINT8 (Pin Change Interrupt 8)
18
5. Port D Tabel 2.6 Konfigurasi Pin Port D
Port Pin PD7
Alternate Function AIN1 (Analog Comparator Negative Input) PCINT23 (Pin Change Interrupt 23)
PD6
AIN0 (Analog Comparator Positive Input) OC0A (Timer/Counter0 Output Compare Match A Output) PCINT22 (Pin Change Interrupt 22)
PD5
T1 (Timer/Counter 1 External Counter Input) OC0B (Timer/Counter0 Output Compare Match B Output) PCINT21 (Pin Change Interrupt 21)
PD4
XCK (USART External Clock Input/Output) T0 (Timer/Counter 0 External Counter Input) PCINT20 (Pin Change Interrupt 20)
PD3
INT1 (External Interrupt 1 Input) OC2B (Timer/Counter2 Output Compare Match B Output) PCINT19 (Pin Change Interrupt 19)
PD2
INT0 (External Interrupt 0 Input) PCINT18 (Pin Change Interrupt 18)
PD1
TXD (USART Output Pin) PCINT17 (Pin Change Interrupt 17)
PD0
RXD (USART Input Pin) PCINT16 (Pin Change Interrupt 16)
6. AVCC AVCC merupakan suplai tegangan untuk A/D Converter, PC3:0, dan ADC7:6. Pin ini harus dihubungkan secara eksternal ke VCC, walaupun ADC tidak digunakan. Jika ADC digunakan, pin ini harus dihubungkan ke VCC melalui low-pass filter.
19
7. AREF AREF merupakan pin referensi jika menggunakan A/D Converter.
2.2.3
Arduino Arduino adalah kit elektronik atau papan rangkaian elektronik open
source yang
didalamnya
terdapat
komponen
utama
yaitu
sebuah
chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino bersifat open source, tidak hanya software-nya yang bersifat opensource melainkan hardware arduino pun bersifat open source. Diagram rangkaian elektronik arduino digratiskan kepada semua orang. Semua orang bisa bebas mengunduh gambar rangkaian arduino, membeli komponen-komponennya, membuat PCB-nya dan merangkainya sendiri tanpa harus membayar kepada para pembuat Arduino. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi arduino merupakan kombinasi dari hardware, bahasa pemrograman dan Integrated Development Environment (IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis program, meng-compile menjadi kode biner dan meng-upload ke dalam memori mikrokontroler. Mikrokontroler ada pada perangkat elektronik sehari-hari. Misalnya handphone, MP3 player, DVD, televisi, AC, dll. Mikrokontroler juga dipakai untuk keperluan mengendalikan robot, baik robot mainan, maupun robot industri. Komponen utama arduino adalah mikrokontroler, maka arduino juga dapat diprogram menggunakan komputer sesuai kebutuhan. 2.2.3.1 Instalasi Software Arduino Langkah-langkah instalasi software arduino adalah sebagai berikut : 1. Download software arduino Halaman
ini
dapat
diakses
dengan
alamat
web
“http://arduino.cc/en/Main/Software”, seperti ditunjukkan pada gambar 2.5 berikut.
20
Gambar 2.5 Halaman download software Arduino.
2. Instalasi software File yang diunduh berupa file berekstensi .exe, kemudian lakukan proses instalasi dengan cara klik dua kali pada file tersebut. File instalasi tersebut ditunjukkan pada gambar 2.6 di bawah ini.
Gambar 2.6 File instalasi software.Arduino
Setelah itu akan muncul jendela seperti gambar 2.7 berikut. Setelah license agreement dibaca dan disetujui, klik pada pilihan I Agree.
Gambar 2.7 License Agreement.
21
Jendela berikutnya yang akan muncul adalah seperti gambar 2.8 berikut. Pilih komponen yang akan di-install pada komputer, kemudian pilih Next.
Gambar 2.8 Pilihan instalasi komponen Arduino.
Tentukan lokasi instalasi software Arduino, kemudian pilih Install. Akan muncul jendela instalasi software Arduino. gambar 2.9 dan 2.10 merupakan proses instalasi.
Gambar 2.9 Lokasi instalasi software Arduino.
Gambar 2.10 Jendela instalasi.
22
Sistem operasi akan meminta persetujuan untuk instalasi Arduino USB Driver. Pilih Install seperti ditunjukkan pada gambar 2.11.
Gambar 2.11 Permintaan persetujuan instalasi Arduino USB Driver.
Jika proses instalasi sudah selesai. Akan muncul tampilan seperti gambar 2.12 di bawah ini. Pilih Close, dan software Arduino siap digunakan.
Gambar 2.12 Instalasi software Arduino sudah selesai.
3. Buka software Arduino.exe Setelah proses instalasi selesai, software Arduino sudah dapat digunakan. Tampilan software Arduino adalah seperti gambar 2.13 berikut.
23
Gambar 2.13 Tampilan software Arduino.
4. Pilih board yang digunakan Pada software Arduino, harus diatur terlebih dahulu board yang akan digunakan, karena ada cukup banyak jenis board Arduino. Gambar 2.14 berikut menampilkan cara memilih board pada software Arduino.
Gambar 2.14 Memilih board Arduino.
24
5. Pilih serial port Pemilihan serial port pada software Arduino perlu dilakukan agar program yang telah di buat dapat diupload pada board Arduino. Gambar 2.15 berikut menampilkan pemilihan serial port pada software Arduino.
Gambar 2.15 Memilih serial port.
2.2.3.2 Bahasa Pemrograman Arduino Bahasa pemrograman Arduino menggunakan bahasa C yang sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga pemula pun bisa
mempelajarinya
dengan
cukup
mudah.
Software
Arduino
IDE
(Integrated Development Enviroment) dibutuhkan untuk membuat program Arduino dan mengupload ke dalam board Arduino.
1. Struktur Pemrograman Struktur dasar dari bahasa pemrograman Arduino terdiri dari dua bagian yaitu setup() dan loop(). Setup() berfungsi untuk inisialisasi program yang hanya dijalankan sekali di awal program, sedangkan loop() berfungsi untuk
25
menjalankan bagian program yang akan di jalankan berulang-ulang untuk selamanya. void setup( ) { // Statement; } void loop( ) { // Statement; }
Fungsi setup() hanya dipanggil satu kali diawal program dijalankan. Fungsi setup() biasaya digunakan untuk inisialisasi, menentukan mode pada pin, memulai komunikasi serial dan fungsi-fungsi lainnya. Fungsi setup() harus di terdapat pada program walaupun tidak ada statement yang di jalankan. void setup() { pinMode (5, INPUT); // Berfungsi mengatur pin 5 // pada arduino sebagai input }
Setelah fungsi setup() di jalankan maka secara langsung akan di lanjutkan ke fungsi loop(). Fungsi loop() di jalankan berurutan dari statement awal sampai akhir dan kemudian akan terus-menerus diulang. void loop() { digitalWrite(3, HIGH); // menyalakan pin 3 arduino delay(2000); // pause selama 2 detik digitalWrit(3, LOW); //mematikan pin 3 arduino delay(500); // pause selama 1/2 detik }
Kurung kurawal (Curly brace, {}) berfungsi untuk mendefinisikan awal dan akhir dari sebuah blok fungsi. Ketika suatu blok fungsi tidak berisi kurung kurawal maka akan terjadi laporan error ketika di compile.
26
Semicolon (;) berfungsi untuk memberikan batas antara statement program dan statement program lainnya.
2. Function Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai statement yang akan di jalankan ketika fungsi di panggil. Void setup()
dan void loop() juga merupakan fungsi pada pemrograman Arduino.
Adapun fungsi lain dapat dibuat sesuai dengan keperluan. Adapun cara pendeklarasian fungsi adalah sebagai berikut : type functionName(parameters) { //statement; }
Contoh: int jumlah() { int a; // membuat variabel ‘a’ bertipe integer a = analogRead(1); // baca nilai pada pin 1 return a; // return nilai a }
Pada contoh di atas merupakan fungsi yang memiliki nilai balik int (integer). Jika suatu fungsi tidak membutuhkan adanya nilai balik maka type function harus void. 3. Comment Pada pemrograman Arduino ada dua jenis comment yaitu blok comment dan line comment. Semua statement yang terdapat pada blok comments tidak akan di jalankan dan tidak di compile pada board Arduino sehingga tidak mempengaruhi besar program yang di masukkan ke dalan board Arduino. Line comment mempunyai fungsi yang sama seperti blok comment hanya pada line comment semua statement yang berada setelah garis miring (/) tidak akan dijalankan dan di compile pada board Arduino.
27
/* block comment */ // line comment
4. Variabel Variabel berfungsi sebagai penyimpan nilai yang digunakan pada program. Variabel dapat dirubah nilainya sesuai dengan statement yang dijalankan. Variabel dapat dideklarasikan dengan menentukan tipe variabel dan nilai awal variabel. Type variableName = 0;
Variabel yang dideklarasikan pada awal program sebelum void setup() disebut dengan variabel global. Variabel global dapat digunakan pada semua blok fungsi dan statement dalam program. Sedangkan variabel lokal dapat dideklarasikan secara lokal di dalam sebuah fungsi ataupun di dalam suatu blok pengulangan. Variabel lokal hanya dapat digunakan pada blok yang bersangkutan. 5. Tipe Data Tipe data yang digunakan pada bahasa pemrograman Arduino dapat dilihat pada tabel 2.7.
28
No.
Tabel 2.7 Tipe data bahasa pemrograman Arduino. Penulisan Keterangan
1
Tipe Data Byte
2
Integer
int
2
Long
long
3
Float
float
4
Word
word
5
Short
short
6
Double
double
7
Array
tipeData x[]
8
Boolean
boolean
9
Void
void
10
Char
char
11
String
String
byte
Tipe data yang dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Tipe data yang dapat menyimpan 16-bit nilai bilangan bulat tanpa koma. Tipe data yang lebih besar dari integer, dapat menyimpan 32-bit nilai bilangan bulat tanpa koma. Tipe data yang dapat menyimpan 32-bit nilai angka bilangan desimal. Tipe data yang dapat menyimpan 16-bit nilai bilangan bulat tanpa koma. Tipe data yang dapat menyimpan 16-bit nilai bilangan sama seperti tipe data int. Tipe data yang dapat menyimpan 32-bit nilai angka bilangan decimal sama seperti tipe data float. Tipe data array merupakan kumpulan nilai yang dapat di akses dengan indeks number dan perlu dideklarasikan tipe datanya terlebih dahulu. Nilai array dapat di panggil dengan cara menuliskan nama array dan index numbernya. Indeks pada array dimulai dari 0. Tipe data yang hanya mempunyai dua nilai, yaitu true atau false (benar atau salah). Tipe data yang hanya digunakan pada deklarasi fungsi. Tipe data yang dapat menyimpan nilai karakter. Tipe data yang berfungsi untuk memanipulasi data teks.
Range 0-255 -32.768 s/d 32.767 -2.147.483.648 s/d 2.147.483.647 -3.4028235E+38 s/d 3.4028235E+38 0 s/d 65535 -32.768 s/d 32.767 -3.4028235E+38 s/d 3.4028235E+38
6. Operator Aritmatika Operator aritmatika pada bahasa pemrograman Arduino terdiri dari penjumlahan (+), pengurangan(-), pengkalian(*), dan pembagian(/). Pemilihan tipe data harus diperhatikan dalam pemilihan operator aritmatika agar tidak terjadi overflow range data. Pada bahasa pemrograman Arduino terdapat kombinasi operator aritmatika yang biasanya digunakan pada pengulangan. Berikut operator kombinasi pada bahasa pemrograman Arduino : 1. x++; memiliki fungsi menaikan nilai x sebesar 1.
29
2. x--; memiliki fungsi mengurangi nilai x sebesar 1. 3. x += y; memiliki fungsi sama seperti x = x + y. 4. x -= y; memiliki fungsi sama seperti x = x – y. 5. x *= y; memiliki fungsi sama seperti x = x * y. 6. x /= y; memiliki fungsi sama seperti x = x / y.
Pada bahasa pemrograman Arduino terdapat operator perbandingan seperti pada bahasa pemrograman yang lain. Operator perbandingan pada bahasa pemrograman Arduino membandingkan dua variabel dan apabila terpenuhi akan bernilai 1 atau true. Operator perbandingan ini banyak digunakan dalam operator bersyarat. Berikut operator perbandingan pada bahasa pemrograman Arduino : 1. x == y; membandingkan nilai x sama dengan y. 2. x != y; membandingkan nilai x tidak sama dengan y. 3. x < y; membandingkan nilai x lebih kecil dari y. 4. x > y; membandingkan nilai x lebih besar dari y. 5. x <= y; membandingkan nilai x lebih kecil dari sama dengan y. 6. x >= y; membandingkan nilai x lebih besar dari sama dengan y.
Pada bahasa pemrograman Arduino terdapat 3 operator logika yaitu : AND, OR, dan NOT. Operator logika digunakan untuk membandingkan 2 ekspresi dan mengembalikan nilai balik baik benar ataupun salah. Operator logika biasanya digunakan pada if statement. a. Logika AND Logika AND bernilai benar jika kedua operator perbandingan terpenuhi. Contoh : If ( x > 0 && x < 3)
b. Logika OR Logika OR bernilai benar jika salah satu operator perbandingan terpenuhi. Contoh : If (x < 5 || x = 0)
30
c. Logika NOT Logika NOT bernilai benar jika ekspresi operator salah. Contoh : If (x != 0)
7. Konstanta Arduino
mempunyai
beberapa
variabel
konstanta.
Konstanta
diklasifikasikan berdasarkan group. a. TRUE / FALSE Merupakan konstanta boolean yang mendefinisikan logika TRUE/FALSE. False mendifinisikan 0 dan True mendifinisikan 1. Contoh : If (
x == TRUE );
{ //statement }
b. HIGH / LOW Konstanta HIGH/LOW biasanya digunakan pada saat membaca dan menulis ke pin digital. HIGH di definisikan sebagai 1 sedangkan LOW sebagai 0. digitalWrite( 3, HIGH );
c. INPUT / OUTPUT Konstanta INPUT/OUTPUT biasanya digunakan pada fungsi pinMode() untuk mendifinisikam mode pin digital sebagai input ataupun sebagai output. pinMode( 3, INPUT );
8. Flow Control a. If Operator if akan menjalankan statement yang ada di dalamnya jika kondisi pada operator if sudah terpenuhi dan jika kondisi if tidak terpenuhi maka statement yang berada di dalam if akan diabaikan.
31
Contoh : If ( variabel == value ) { //statement }
b. If... else Operator if .. else akan menjalankan statement yang ada di dalamnya apabila kondisi pada operator if sudah terpenuhi dan jika kondisi if tidak terpenuhi maka akan menjalankan statement yang berada di dalam operator else. Contoh : If ( variabel == value ) { // statement } Else { // statement }
c. For Operator for berfungsi untuk melakukan pengulangan statement yang berada di dalam kurung kurawal, sampai kondisi pengulangan terpenuhi. For ( initialization; condition; expression ) { // statement; }
d. While Operator berfungsi mengulang statement yang berada di dalam kurung kurawal terus-menerus apabila kondisi terpenuhi. Operator while akan berhenti dijalankan apabila kondisi pengulangan bernilai salah. While ( variabel == value ) { // statement; }
32
e. Do... while Operator do…while mempunyai fungsi yang sama dengan operator while, tetapi pada operator do…while pengecekan dilakukan diakhir, jadi pengulangan akan tetap dijalankan walaupun kondisi awalnya tidak terpenuhi. Do { // statement; } While ( variabel == value );
9. Digital dan Analog I/O a. Digital I/O Input / output digital pada board Arduino mempunyai jumlah berbedabeda tergantung jenis board Arduino yang digunakan. Pada fungsi void setup() digunakan mengkonfigurasi pin sebagai input atau output. Pin digital Arduino pada konfigurasi awal diatur sebagai input sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode). pinMode (pin, OUTPUT); // mengset pin sebagai output digitalWrite(pin, HIGH); // pin ditulis HIGH digitalRead(pin); //membaca nilai dari pin
b. Analog I/O Input / ouput analog pada board Arduino mempunyai jumlah berbedabeda tergantung jenis board Arduino yang digunakan. Pada board Arduino Uno terdapat 6 pin analog, pengalamatnya mulai A0 – A5. Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin (A0 - A5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023. analogRead(pin); // membaca nilai analog pin analogWrite(pin, value);
// menulis ke pin analog
33
10. Time a. Delay(ms) Delay berfungsi menghentikan program dalam waktu tertentu dengan satuan millisecond. delay(2000);
// menunggu selama dua detik
b. Millis() Millis berfungsi mengembalikan nilai dalam millisecond dihitung sejak Arduino board menyala. Penapungnya harus long integer. x = millis();
// set ‘x’ equal to millis()
11. Math a. Min(x,y) Min(x,y) berfungsi mengembalikan nilai yang paling kecil dengan membandingkan kedua variabel. b. Max(x,y) Max(x,y) merupakan kebalikan dari min, berfungsi mengembalikan nilai yang paling kecil dengan membandingkan kedua variabel.
12. Serial a. Serial.begin(rate) Statement yang berfungsi untuk mengaktifkan komunikasi serial dan mengeset baudrate. Contoh : void setup() { Serial.begin(9600); //mengatur baudrate 9600 bps }
//mengaktifkan
b. Serial.prinln(x) Berfungsi mengirimkan x ke serial port. Contoh : Serial.println(25);
// mengirimkan 25
serial
port
dan
34
2.2.3.3 Hardware Board Arduino Hardware pada Arduino adalah seperangkat sistem komponen yang telah terkombinasi dengan mikrokontroler sebagai otak dari sistem dan antarmuka (interface) yang akan menghubungkan sistem mikrokontroler dengan sistem komputer. Komponen utama di dalam board Arduino adalah sebuah mikrokontroler dengan merek ATmega yang dibuat oleh perusahaan Atmel Corporation. Arduino memiliki 15 jenis board yaitu Arduino Uno, Arduino Leonardo, Arduino Due, Arduino Esplora, Arduino Mega 2560, Arduino Mega ADK, Arduino Ethernet, Arduino Mini, Lilypad Arduino, Lilypad Arduino USB, Arduino Micro, Arduino Nano, Arduino Pro, Arduino Pro Mini, dan Arduino Flo. Jenis-jenis Arduino ini dibedakan sesuai fungsi dan juga jumlah pin yang terdapat pada board, karena terdapat jenis Arduino yang dapat melakukan fungsi khusus seperti Arduino Mega ADK dapat berkoneksi terhadap handphone android, dan Arduino Ethernet dapat melakukan komunikasi melalui kabel LAN. Jenis Arduino yang umum digunakan oleh pengguna adalah Arduino Uno.
1. Arduino Uno Arduino Uno adalah board
berbasis mikrokontroler ATmega 328,
memiliki 20 pin yaitu 6 pin input analog, dan 14 pin I/O digital yang 6 diantaranya dapat digunakan sebagai output PWM, dilengkapi koneksi USB, jack listrik, header ICSP, dan tombol reset. Arduino Uno memiliki flash memory 32KB, SRAM 2 KB dan EEPROM 1KB. Gambar 2.16 menunjukkan board Arduino Uno.
Gambar 2.16 Board Arduino Uno. Sumber : http://arduino.cc/en/Main/ArduinoBoardUno.
35
2.2.3.4 Keunggulan Arduino Keunggulan dari board Arduino adalah sebagai berikut: a. Bahasa pemrograman Arduino relatif mudah karena dilengkapi dengan kumpulan library yang cukup lengkap. b. Pada board Arduino terdapat boatloader yang berfungsi untuk upload program dari komputer sehingga tidak memerlukan perangkat chip programmer. c. Arduino memiliki sarana komunikasi USB sehingga tidak memerlukan port serial (RS323). d. Arduino memiliki modul siap pakai yang dapat langsung dipasang pada board Arduino seperti : modul GPS, modul Ethernet, modul SD Card, dll.
2.2.4
Bahasa Pemrograman Sebuah perangkat keras/hardware tidak dapat bekerja tanpa ada perintah.
Sebuah perangkat lunak/software dibutuhkan untuk memberikan sejumlah perintah kepada hardware, sehingga hardware tersebut akan bekerja sebagaimana fungsinya. Software dibangun dari sekumpulan perintah-perintah. Kumpulan perintah inilah yang disebut bahasa pemrograman. Delphi
adalah
sebuah
bahasa
pemrograman
dan
lingkungan
pengembangan perangkat lunak. Produk ini dikembangkan oleh Borland. Dengan menggunakan Free Pascal yang merupakan proyek opensource, bahasa ini dapat pula digunakan untuk membuat program yang berjalan di sistem operasi Mac OS X dan Windows CE. Keunggulan bahasa pemrograman ini terletak pada produktivitas, kualitas, pengembangan perangkat lunak, kecepatan kompilasi, pola desain yang menarik yang menarik serta diperkuat dengan pemrogramannya yang terstruktur.
2.2.4.1 IDE (Integrated Development Environment) Delphi Lingkungan pengembangan terpadu atau Integrated Development Environment (IDE) adalah bagian dari Delphi yang digunakan untuk memungkinkan pemrograman secara visual merancang tampilan untuk para user
36
(antarmuka pemakai) dan menuliskan kode program. Gambar 2.16 di bawah ini memperlihatkan tampilan utama IDE Delphi 7
Gambar 2. 17 Tampilan Utama IDE Delphi
1. Menu Bar Berfungsi untuk memilih tugas-tugas tertentu , seperti memulai, membuka, dan menyimpan project, mengompilasi project menjadi file executable (EXE), dan lain-lain seperti ditunjukkan gambar 2.18 di bawah ini.
Gambar 2.18 Menu bar pada Delphi
37
2. Tool Bar Tool bar merupakan sekumpulan ikon yang terkumpul dalam grup tertentu yang terletak di bawah menu bar. Tool bar berguna untuk dapat mengakses perintahperintah tertentu secara lebih cepat. Gambar 2.19 berikut menunjukkan posisi toolbar.
Gambar 2.19 Toolbar
3. Component Palette Component Palette merupakan salah satu komponen tool bar yang berisi kumpulan ikon yang melambangkan komponen-komponen yang terdapat pada VCL (Visual Component Library). Pada Component Palette, akan ditemukan beberapa page control, seperti Standard, Additional, Win32, System, Data Access dan lain-lain. Ikon tombol pointer terdapat di setiap page control. Pada gambar 2.20 berikut merupakan posisi component palette.
38
Gambar 2.20 Compponent Palette pada Delphi
4. Form Form Designer merupakan suatu objek yang dapat dipakai sebagai tempat untuk merancang program aplikasi. Form berbentuk sebuah meja kerja yang dapat diisi dengan komponen-komponen yang diambil dari Component Palette. Gambar 2.21 berikut ini merupakan jendela form designer.
Gambar 2.21 Form Designer pada Delphi
39
5. Object Inspector Object Inspector digunakan untuk mengubah properti dan karakteristik dari sebuah komponen. Object Inspector terdii dari dua tab, yaitu Properties dan Events. Tab Properties digunakan untuk mengubah properti komponen. Properti dengan tanda + menunjukkan bahwa propeti tersebut mempunyai subproperti. Tab Events, bagian yang dapat diisi dengan kode program tertentu yang berfungsi unuk menangani event-event (kejadian kejadian yang berupa sebuah procedure) yang dapat direspon oleh sebuah komponen. Gambar 2.22 di bawah ini menunjukkan object inspector.
Gambar 2.22 Object Inspector pada Delphi
6. Object Tree View Object Tree View menampilkan diagram pohon dari komponen-komponen yang bersifat visual maupun nonvisual yang telah terdapat dalam form, data module, atau frame. Object Tree View juga menampilkan hubungan logika antar komponen. Gambar 2.23 di bawah ini merupakan object tree view.
40
Gambar 2.23 Object TreeView pada Delphi
7. Code Editor Code Editor merupaka tempat menuliskan kode program atau pernyataanpernyataan dalam Object Pascal. Code Editor dilengkapi dengan fasilitas highlight yang memudahkan pemakai menemukan kesalahan. Title bar yang terletak pada bagian atas jendela code editor menunjukkan nama file yang sedang disunting, serta pada bagian informasi yang perlu untuk diperhatikan, yaitu: nomor baris/kolom yang terletak pada bagian paling kiri. Bagian ini berfungsi untuk menunjukkan posisi kursor di dalam jendela Code Editor. Modified menunjukkan bahwa file yang sedang disunting telah mengalami perubahan tersebut belum disimpan. Teks ini akan hilang jika telah menyimpan perubahan. Insert/Overwrite yang terletak pada bagian paling kanan menunjukkan bahwa modus pengetikan teks dalam jendela Code Editor. Insert menunjukkan bahwa modus penyisipan teks dalam keadaan aktif, sedangkan Overwrite menunjukkan bahwa modus penimpaan teks dalam keadaan aktif. Berikut ini merupakan code editor seperti diperlihatkan pada gambar 2.24.
41
Gambar 2.24 Code Editor pada Delphi
2.2.5
Database Dalam kamus online bahasa Inggris Oxford, disebutkan bahwa database
adalah satu set data yang terstruktur dalam penyimpanan komputer dan biasanya diakses atau dimanipulasi dengan menggunakan perangkat lunak khusus. Biasanya juga dibutuhkan dalam penggunaan yang berkepanjangan. Database digunakan untuk menyimpan data sedemikian rupa sehingga tidak terjadi penduplikatan data. Hal ini sangat berguna untuk efisiensi penyimpanan sehingga ruang penyimpanan dapat dihemat sebisa mungkin. Salah satu database server yang paling popular adalah MySQL. MySQL merupakan sebuah database management system yang dikembangkan oleh perusahaan Oracle. MySQL termasuk jenis RDBMS (Relational Database Management System). Itulah sebabnya istilah seperti tabel, baris, dan kolom digunakan pada MySQL. Pada MySQL, sebuah database mengandung satu atau sejumlah tabel. Tabel terdiri atas sejumlah baris dan seiap baris mengandung satu atau beberapa kolom.