• Tidak ada hasil yang ditemukan

Model prototyping system pengendali jarak jauh dengan embedded system arduino berbasis webserver HTTP 1.1 - USD Repository

N/A
N/A
Protected

Academic year: 2019

Membagikan "Model prototyping system pengendali jarak jauh dengan embedded system arduino berbasis webserver HTTP 1.1 - USD Repository"

Copied!
147
0
0

Teks penuh

(1)

JAUH DENGAN EMBEDDED SYSTEM ARDUINO BERBASIS

WEBSERVER HTTP 1.1

SKRIPSI

Diajukan Untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Komputer

Program Studi Teknik Informatika

Oleh :

Fendi Dwi Fauzi

075314067

PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA

(2)

ii

ARDUINO EMBEDDED SYSTEM BASE ON

WEBSERVER HTTP 1.1

A THESIS

Presented as Partial Fulfillment of The Requirements to Obtain The Sarjana Komputer Degree in Informatics Engineering Study Program

By :

Fendi Dwi Fauzi

075314067

INFORMATICS ENGINEERING STUDY PROGRAM INFORMATICS ENGINEERING DEPARTMENT

FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY

(3)
(4)
(5)
(6)
(7)

vii ABSTRAK

Arduino merupakan board mikrokontroler yang bersifat opensource. Penggunaan arduino jauh berkembang pesat digunakan berbagai macam proyek teknologi komputer dan elektronika, misalnya server yang dibangun berbasis embedded system arduino. Server yang dibangun dengan board mikrokontroler arduino berfungsi sebagai system pengendali jarak jauh. Ethernet shield wiznet5100 ditambahkan pada arduino sebagai shield agar arduino dapat bekerja dalam jaringan komputer.

Pada proyek tugas akhir ini, dirancang sebuah webserver berbasis arduino yang berfungsi sebagai prototype system pengendali jarak jauh. Prototipe system dikembangkan bertujuan melakukan proses mengolah I/O pada arduino. Input webserver dirancang pada halaman HTML disisi web browser sebagai kontrol perintah dari user. Webserver akan memberikan respon terhadap perintah kontrol user. Pengujian dilakukan dengan teknik tapping pada jaringan untuk menganalisis pertukaran protocol data yang terjadi.

Kata kunci: arduino, webserver arduino, ethernet shield wiznet5100, prototype system

(8)

viii ABSTRACT

Arduino is a opensource microcontroller board. Arduino rapidly growing

used to a variety of computer technology and electronics projects, for an example

server base from Arduino embedded systems. Server based from an Arduino

microcontroller board is able to function as a remote control system. Ethernet shield

wiznet5100 added for Arduino as a shield to running in computer networking.

In this final project, designed a server based on Arduino that serves as a

prototype remote-control system. The prototype system was developed aiming to do

the processing I/O on the Arduino. Input process of websever design in client side

with HTML page. Furthermore, the webserver will provide a response to user control

commands. Testing is by tapping technique on the network to analyze the data

exchange protocol that occurred.

Keywords: arduino, arduino webserver, ethernet shield wiznet5100, remote-control

(9)

ix

Puji syukur kepada Tuhan Yang Maha Esa, atas segala rahmat dan anugerah

yang telah diberikan, sehingga penulis dapat menyelesaikan Tugas Akhir “Model Prototyping System Pengendali Jarak Jauh Dengan Embedded System Arduino Berbasis Webserver HTTP 1.1” ini dengan baik. Dalam menyelesaikan tugas akhir ini, penulis tidak lepas dari bantuan sejumlah pihak, oleh sebab itu penulis

ingin mengucapkan terima kasih kepada:

1. Allah SWT dan Muhammad SAW , tempat dimana penulis memanjatkan doa

untuk diberikan kemudahan dan hidayah dalam mengerjakan karya tulis ini.

2. Henricus Agung Hernawan, S.T., M.Kom., selaku dosen pembimbing I tugas

akhir penulis.

3. Ir. Tjendro, M.Kom., selaku dosen pembimbing II tugas akhir penulis

4. Ibu dan Ayah yang telah memberi dukungan doa, materi, serta semangat.

Tanpa semua itu penulis tidak akan memperoleh kesempatan untuk menimba

ilmu hingga jenjang perguruan tinggi dan akhirnya dapat menyelesaikan

karya ilmiah ini.

5. Elisa Oktaviani yang telah banyak memberikan semangat dan doa untuk

penulis.

6. Untuk pihak-pihak yang tidak dapat penulis sebutkan satu per satu. Penulis

mengucapkan terima kasih atas bantuannya sehingga penulis dapat

menyelesaikan karya ilmiah ini

Akhir kata, penulis berharap karya ilmiah ini dapat bermanfaat bagi kemajuan

dan perkembangan ilmu pengetahuan.

Yogyakarta, 23 Juli 2012

(10)

x

MOTTO

(11)

xi

DAFTAR ISI

Halaman

LEMBAR JUDUL ... i

HALAMAN PERSETUJUAN PEMBIMBING ... iii

HALAMAN PENGESAHAN... iv

PERNYATAAN KEASLIAN HASIL KARYA... v

PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ... vi

ABSTRAK ... vii

ABSTRACT ... viii

KATA PENGANTAR ... ix

MOTTO ... x

DAFTAR ISI ... xi

DAFTAR GAMBAR ... xvi

DAFTAR TABEL ... xviii

BAB I. PENDAHULUAN I.1. Latar Belakang ... 1

I.2. Rumusan Masalah ... 2

(12)

xii

I.4. Tujuan Penulisan ... 3

I.5. Metodelogi Penelitian ... 3

I.6. Sistematika Penulisan ... 4

BAB II LANDASAN TEORI II.1 Embedded System Arduino ... 6

II.1.1 Arduino ... 6

II.1.2 Sejarah ... 7

II.1.3 Hardware ... 8

II.1.3.1 ATmega Pin Mapping ... 9

II.1.3.2 Bentuk Board Arduino ... 11

II.1.3.3 Bootloader ... 14

II.1.4 Model Board Arduino ... 16

II.1.5 Software Arduino IDE ... 18

II.1.6 Kelebihan Arduino Sebagai Opensource Hardware ... 20

II.2 Shield Arduino ... 22

II.3 Input/Output ... 24

II.3.1 Sensor ... 26

II.3.2. Switch ... 26

II.4 PWM ... 27

(13)

xiii

II.5.1 Non-Persistent dan Persistent Connections ... 30

II.5.1.1 Non-Persistent Connections ... 31

II.5.1.2 Persistent Connections ... 34

II.5.2 HTTP Message Format ... 35

II.5.2.1 HTTP Request Message ... 35

II.5.2.2 HTTP Response Message ... 39

II.6 Software Analisa Protocol Jaringan ... 41

BAB III ANALISIS DAN PERANCANGAN III.1 Deskripsi Pemodelan Input/Output Webserver Arduino ... 43

III.2 Skenario Perancangan ... 44

III.2.1 Skenario Perancangan Input Digital - Output Analog (ON/OFF LED) ... 44

III.2.2 Skenario Perancangan Input Digital - Output Analog (Dimmer Lampu) ... 46

III.4 Model Perilaku Sistem ... 47

III.4.1 Skenario Perancangan ... 47

III.5 Desain Antarmuka... 50

III.5.1 Antarmuka halaman HTML ... 50

III.5.1.1 Antarmuka HTML SPJJ-001 ... 51

III.5.1.2 Antarmuka HTML SPJJ-002 ... 51

(14)

xiv

III.5.2.1 Daftar Alat dan bahan ... 52

III.6 Skenario Uji webserver dengan teknik tapping ... 53

BAB IV IMPLEMENTASI DAN ANALISIS PERANCANGAN IV.1 Implementasi Pemodelan Input/Output Webserver Arduino... 55

IV.1.1 Implementasi ... 56

IV.2 Uji Webserver Dengan Teknik Tapping Menggunakan Software Sniffing ... 65

IV.2.1 Analisis Use Case Use case SPPJJ-001 ... 65

IV.2.1.1 Proses I/O Arduino dengan State OFF input ... 65

IV.2.1.2 Proses I/O Arduino dengan State ON input ... 66

IV.2.1.3 Handling ACK LDR Gagal... 68

IV.2.2 Analisis Use Case Use case SPPJJ-002 ... 69

IV.2.2.1 Proses I/O Arduino dengan input Slider ... 69

IV.2.2.2 Tapping Protokol dengan software wireshark ... 72

BAB V. PENUTUP V.1 Simpulan ... 75

V.2 Saran ... 76

DAFTAR PUSTAKA ... 77

(15)

xv

1. Skema Prototipe Webserver Arduino SPJJ ... 78

2. Coding ... 79

3. Gambar Lampiran Hasil Perangkat ... 89

4. File Library Program ... 93

Library Webserver.h ... 93

Library SPI.h ... 117

Library Ethernet.h ... 118

Library Protothread (pt.h) ... 119

(16)

xvi

DAFTAR GAMBAR

Gambar 2.1 Prototyping arduino generasi pertama oleh Massimo Banzi .... 7

Gambar 2.2 Mapping dari PIN ATmega 328 ... 9

Gambar 2.3 Arduino Board v1 (Diecimila) ... 11

Gambar 2.4 Arsitektur logical arduino ... 15

Gambar 2.5 Arduino dengan versi minimum system (BBB dan RBBB) ... 18

Gambar 2.6 Software IDE arduino ... 19

Gambar 2.7 Perbandingan sinyal digital dengan analog ... 25

Gambar 2.8 Simbol switch ... 27

Gambar 2.9 Konsep PWM dalam arduino ... 28

Gambar 2.10 Mekanisme Request – Reponse Web HTTP ... 29

Gambar 2.11 Mekanisme 3-Way handshaking ... 33

Gambar 2.12 Mekanisme Response Time Modeling Non-Persistent ... 34

Gambar 2.13 Format header request HTTP message ... 37

Gambar 2.14 Format header response HTTP message ... 40

Gambar 2.15 Software Wireshark ... 42

Gambar 3.1 Skema Prototipe Sistem Pengendali Jarak Jauh ... 44

Gambar 3.3 Diagram sequence komunikasi data SPJJ-001 ... 47

Gambar 3.4 Diagram State komunikasi data SPJJ-001 ... 48

(17)

xvii

Gambar 3.6 Diagram State komunikasi data SPJJ-002 ... 50

Gambar 3.6 Antarmuka HTML SPJJ-001... 51

Gambar 3.7 Antarmuka HTML SPJJ-002... 51

Gambar 3.8 Uji webserver dengan teknik tapping menggunakan software sniffing ... 53

Gambar 4.1 Tampilan Input OFF radiobutton SPJJ-001 ... 65

Gambar 4.2 Tapping 3-way Handshake SPJJ-001 ... 66

Gambar 4.3 Tampilan Input ON radiobutton SPJJ-001 ... 66

Gambar 4.4 Tapping POST SPJJ-001 dari user ... 67

Gambar 4.5 Tapping method GET SPJJ-001 ... 68

Gambar 4.6 Konfirmasi pesan ACK LDR gagal SPJJ-001 ... 69

Gambar 4.7 Tapping 3-way Handshake SPJJ-002 ... 72

Gambar 4.8 Tapping POST input slider SPJJ-002 ... 73

(18)

xviii

DAFTAR TABEL

Tabel 2.1 Perbandingan spesifikasi microcontroller ATmega 8 /168 /328 pada

arduino board ... 8

Tabel 2.2 Deskripsi Mapping Pin ATmega 328 ... 10

Tabel 2.3 Model Board Arduino ... 16

(19)

1

BAB I

PENDAHULUAN

I.1 Latar belakang

Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus. Secara harfiahnya bisa disebut "pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh sebuah chip mikrokontroler.

(20)

Dewasa ini penggunaan arduino jauh berkembang pesat salah satu contohnya adalah server yang dibangun dengan arduino. Contohnya adalah server arduino bernama Tiny Webserver karena memiliki kelebihan seperti penggunaan resource yang digunakan relatif kecil baik dari segi daya, memory, kerumitan dan efisiensi dibandingkan dengan server yang dibangun oleh computer (Predescu, 2010).

Arduino dapat digunakan sebagai webserver dengan menambahkan Ethernet shield Wiznet W5100. Ethernet Shield arduino telah mendukung protocol TCP/UDP sehingga mampu menerima maupun mengirim data secara jaringan client - server. Ethernet shield yang dikembangkan saat ini mampu menangani thread koneksi sampai dengan empat socket secara simultan. Webserver arduino yang dibangun dengan protocol HTTP 1.1 dapat digunakan sebagai pengendali jarak jauh dan system otomatisasi. Sistem pengendali jarak jauh merupakan system yang mampu mengendalikan perangkat yang diatur oleh arduino melalui media kabel maupun nirkabel. Seperti contoh mengendalikan perangkat TV, lampu, dan berbagai macam alat elektronik dikendalikan oleh arduino. Sedangkan system otomatisasi yang dibangun oleh arduino dapat berupa penggerak gerbang otomatis menggunakan perangkat wireless.

(21)

I.2 Rumusan Masalah

Dari melihat latar belakang masalah, maka dapat dirumuskan adalah bagaimana model prototyping system pengendali jarak jauh webserver arduino yang dibangun menggunakan protocol HTTP 1.1 dengan input/output analog dan digital.

I.3 Batasan Masalah

Dari penulisan karya ilmiah ini penulis membatasi lingkup masalah pada perancangan model prototype system pengendali jarak jauh webserver arduino dengan protocol HTPP 1.1 dengan I/O berupa analog dan digital dengan koneksi sejumlah single connection.

I.4 Tujuan penulisan

Tujuan penulisan skripsi ini dapat menghasilkan prototyping system pengendali jarak jauh dengan webserver arduino yang dibangun dengan protocol HTTP 1.1.

I.5 Manfaat Penulisan

Adapun manfaaat dari pembuatan tugas akhir ini adalah :

1. Manfaat Bagi penulis:

Dapat bermanfaat sebagai penerapan ilmu ataupun pengalaman yang telah didapat baik di bangku kuliah maupun dikehidupan sehari-hari.

(22)

Dapat dijadikan sebagai bahan pembelajaran dan acuan untuk pengembangan lebih lanjut webserver HTTP 1.1 menggunakan arduino dan Ethernet shield dengan chipset WIZNET 5100.

3. Manfaat secara praktis:

Menghasilkan sebagai model prototyping system pengendali jarak jauh menggunakan webserver HTTP 1.1 yang dibangun oleh embedded system arduino beserta shield Ethernet dengan chipset WIZNET 5100.

I.6 Metodelogi Penulisan

Metode penelitian pada karya ilmiah ini adalah :

1. Studi pustaka mengenai literature arduino dan Ethernet shield dengan memahami buku referensi atau sumber-sumber yang lain yang diperlukan. 2. Analisis kebutuhan perancangan.

3. Mengimplementasikan analisis dan desain tersebut ke dalam system . 4. Analisa system yang dikembangkan dan menguji hasil simulasi

perancangan.

I.7 Sistematika Penulisan BAB I PENDAHULUAN

(23)

BAB II LANDASAN TEORI

Bab ini menjelaskan konsep dan teori dasar yang mendukung penulisan skripsi ini.

BAB III ANALISIS dan PERANCANGAN SISTEM

Bab ini berisi pembahasan mengenai analisis kebutuhan, desain dan perancangan webserver arduino yang dibangun dengan protocol HTPP 1.1.

BAB IV IMPLEMENTASI dan ANALISA HASIL

Bab ini berisi implementasi dari hasil perancangan pada Bab III dan analisis terhadap hasil pengujian dari aplikasi yang telah dibangun.

BAB V KESIMPULAN dan SARAN

(24)

6

BAB I I

LANDASAN TEORI

II.1 Embedded System Arduino

II.1.1 Arduino

Arduino adalah Arduino adalah platform prototipe elektronik open-source berada dibawah lisensi Creative Commons Attribution-ShareAlike 3.0,

berdasarkan perangkat keras dan lunak yang fleksibel dan mudah digunakan. Lisensi Creative Commons Attribution-ShareAlike 3.0 merupakan lisensi opensource yang memberikan jaminan kebebasan untuk mendistribusikan pada pihak umum, mengubah dan membuat dokumentasi lengkap terhadap pengembangan piranti board arduino.

Arduino diperuntukkan bagi seniman, desainer, hobiis dan siapa pun yang tertarik untuk membuat obyek atau lingkugan yang interaktif. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri. Arduino hardware di program menggunakan program Wiring-based

language (syntax + libraries), merupakan bahasa pemrograman C++ dengan

(25)

II.1.2 Sejarah

Proyek arduino ini berawal di Ivrea, Italia pada tahun 2005 berawal kesulitan mempelajari microcontroller di lingkungan edukasi maka dibuatlah system minimum ATmega8 dengan bootloader dan software compiler tersendiri. Pendiri proyek ini adalah Massimo Banzi dan David Cuartilles bernama proyek Arduin of Ivrea , karakter utama sejarah kota tersebut. "Arduino" adalah sebuah kota di Italia, yang berarti "teman yang kuat". Versi bahasa Inggris dari nama tersebut adalah "Hardwin". Sejalan perkembangannya Arduino sebagai hardware yang opensource memiliki berbagai versi yang dikembangkan oleh pengguna di seluruh dunia.

(26)

II.1.3 Hardware

Arduino menggunakan beberapa microcontroller seri ATmega8,

ATmega168, ATmega328, ATmega1280, ATmega2560 dan beberapa

microcontroller dari keluarga ATMEL yang compatible untuk arduino board. Penggunaan dari subsitusi microcontroller ini tidak terlepas dari datasheet resmi 8 bit microcontroller 4/8/16/32K in-programming system yang dikeluarkan oleh www.atmel.com sebagai produsen mikrochip.

Berdasarkan datasheet yang dikelurkan ATMEL sebagai produsen mikrontroller dari ATmega,arduino dikembangkan dan dibuat sesuai dengan mapping fungsi dari setiap pin. Untuk saat ini teknologi board arduino menggunakan microcontroller berbasis ATmega168 dan 328 dengan perbandingan ukuran flash memorynya dan beberapa fitur lainnya.

Dari datasheet 8 bit microcontroller 4/8/16/32K in-programming system, Board Arduino menggunakan dapat microcontroller ATmega8 /168/328 sebagai prossesor. Berikut ini merupakan tabel perbandingan spesifikasi dari microcontroller ATmega8 /168/328.

Tabel 2.1 Perbandingan spesifikasi microcontroller ATmega 8 /168 /328 pada arduino board

Microcontroller ATmega 8 ATmega 168 ATmega 328

Operating Voltage 5V 5V 5V

Input Voltage (recommended)

7-12V 7-12V 7-12V

Input Voltage (limits)

(27)

Digital I/O 14 pins (of

II.1.3.1 ATmega Pin Mapping

(28)

Microcontroller ATmega 328 bertipe PDIP dan DIP yang digunakan pada arduino memiliki mapping pin sebanyak 28 dengan setiap pin memiliki fungsi masing – masing. Berikut ini table fungsi I/O setiap pin :

Tabel 2.2 Deskripsi Mapping Pin ATmega 328

No Pin

Nama Pin Fungsi pada Board Arduino

1 PCINT14/Reset Reset

2 PCINT16/RXD (port D) Digital pin 0 (RX)

3 PCTINT17TXD (port D) Digital pin 1 (TX)

4 PCINT18/INT0 (port D) Digital pin 2

5 PCINT19/OC2B/INT1 (port D) Digital pin 3 (PWM)

6 PCINT20/XCK/T0 (port D) Digital pin 4

7 VCC VCC

8 GND GND

9 PCINT6/XTAL1/TOSC1 (port

B)

Crystal

10 PCNIT7/XTAL2/TOSC2 (port

B)

Crystal

11 PCINT21/OC0B/T1 (port D) Digital pin 5 (PWM)

12 PCINT22/OC0A/AIN0 (port D) Digital Pin 6 (PWM)

13 PCINT23/AIN1 (port D) Digital pin 7

14 PCINT0/CLKO/ICP1 (port B) Digital pin 8

15 OC1A/PCINT1 (port B) Digital pin 9 (PWM)

16 SS/OC1B/PCINT2 (port B) Digital pin 10 (PWM)

17 MOSI/OC2A/PCINT3 (port B) Digital pin 11 (PWM)

18 MISO/PCINT4 (port B) Digital pin 12

19 SCK/INT5 (port B) Digital pin 13

20 AVCC VCC

21 AREF Analog reference

22 GND GND

23 ADC0/PCINT8 (port C) Analog input 0

24 ADC1/PCINT9 (port C) Analog input 1

25 ADC2/PCINT10 (port C) Analog input 2

26 ADC3/PCINT11 (port C) Analog input 3

(29)

II.1.3.2 Bentuk Board Arduino

Gambar 2.3 Arduino Board v1 (Diecimila)

Gambar diatas merupakan standard bentuk board arduino yang dikembangkan oleh tim arduino. Memiliki ukuran 68.6 mm × 53.3 mm atau sekitar 2.7 x 2.1 inchi dengan bentuk bukan persegi yang unik.

Detail nama dan fungsi pin :

• Analog Reference pin (orange) • Digital Ground (light green) • Digital Pins 2-13 (green)

(30)

• In-circuit Serial Programmer (blue-green) • Analog In Pins 0-5 (light blue)

• Power - Ground Pins (power: orange, grounds: light orange) • External Power Supply In (9-12VDC) - X1 (pink)

• Toggles External Power and USB Power (Jumper untuk external power) - SV1 (purple)

• USB – Koneksi ke PC Komputer untuk upload sketch dari software arduino IDE (yellow)

• ICSP – jumper dengan 2x3 header sebagai alternative upload sketch ataupun burn bootloader dari usbdownloader

• IC – microcontroller ATmega 8/168/328

1. Digital Pins

Dalam beberapa fungsi yang spesifik, pin digital pada board arduino dapat digunakan berbagai fungsi sebagai input maupun output dengan perintah pinMode(), digitalRead(), digitalWrite. Setiap pin telah memiliki resistor internal yang dapat diaktifkan dengan perintah digitalWrite() pada kondisi logika HIGH ataupun LOW saat pin tersebut digunakan sebagai input. Untuk maximum arus output setiap pin menghasilkan 40 mA

(31)

External Interrupts: 2 and 3. Pin ini dapat dikonfigurasi untuk memicu perintah pada nilai yang rendah, naik atau turun, atau perubahan dalam nilai.

PWM: 3, 5, 6, 9, 10, and 11. Dari beberapa output pin digital, 6 diantaranya dapat difungsikan sebagai PWM dengan perintah analogWrite(). Pada board arduino yang menggunakan microcontroller ATmega8, PWM output keluarannya hanya dari pin 9, 10, dan 11.

BT Reset: 7. (Arduino BT-only).

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin ini digunakan mendukung komunikasi SPI,dimana sketch program dapat diupload langsung tanpa menggunakan software arduino (upload sketch melalui ICSP menggunakan usb downloader).

LED: 13. Led ini berfungsi sebagai indicator yang terhubung dengan pin 13.

2. Analog Pins

(32)

3. Power Pins

VIN merupakan input voltage untuk board arduino, biasanya dapat langsung dihubungkan dengan input tegangan 9V.

5V. Pin 5V akan menghasilkan tegangan 5v untuk supply tegangan logic microcontroller, selain itu supply 5v juga akan digunakan ketika menggunakan shield arduino yang ditumpuk diatasnya.

3V3. 3.3 volt supply generated untuk on-board FTDI chip (komunikasi USB – TTL).

GND. Ground pin.

Other Pins

AREF. Pin ini merefernsikan tegangan untuk input analog, fungsi nya dengan perintah analogReference().

Reset.

II.1.3.3 Bootloader

(33)

Bootloader merupakan mekanisme logical yang menarik dari arduino. Bootloader dapat menerjemahkan sketch atau code program yang dibuat didalam software IDE yang nantinya akan diupload ke microcontroller itu sendiri.

Gambar 2.4 Arsitektur logical arduino

(34)

II.1.4 Model Board Arduino

Arduino sebagai hardware yang opensource saat ini telah berkembang pesat dan dipatenkan dengan beberapa nama. Awal perkembangannya arduino dipatenkan dengan nama board arduino diecimila yang artinya 10.000 dalam bahasa italia (pembuatan board sebanyak 10.000 untuk umum) dan kemudian release resmi dengan nama ardiuno duemilanove pada tahun 2009. Dari beberapa banyak jenis arduino yang dikenal pasaran, arduino tetap menggunakan prossesor inti yaitu microcontroller ATmega168,328, 1280 dan 2560 sedangkan ATmega8 sudah tidak banyak dipakai lagi karena bootloader arduino memakai in-programming sebesar 2 kb dari space memori microcontroller ATmega.

Tabel 2.3 Model Board Arduino 1

Tabel model board arduino diatas adalah keluaran resmi dari tim pengembang arduino di Italia. Sedangkan pengembangan board arduino di dunia

1

(35)

telah banyak dengan nama paten tersendiri. Pengembangan board ini tidak menyalahi hukum karena karena sifat arduino yang opensource hardware. Namun untuk menghindari nama komersial dari arduino,maka pengembang yang mendistribusikan arduino baik dari design tim arduino resmi di www.arduino.cc atau design pengembang wajib menggunakan kata arduino ‘compatible’ atau ‘-duino’ sebagai nama variannya. Sedangkan forum bebas yang mengembangkan dan mendistribusikan ulang arduino berada di situs resmi www.freeduino.org.

Model board arduino selain tersedia atau mendukung secara hardware namun mampu mendukung secara software, khususnya untuk bootloader. Bootloader digunakan untuk memudahkan komunikasi dengan software arduino IDE. Model board ini dikenal dengan Bare Bones Board (BBB) dan Really Bare Bones Board (RBBB) yang hanya menggunakan microcontroller sebagai inti dan

(36)

Gambar 2.5 Arduino dengan versi minimum system (BBB dan RBBB)

II.1.5 Software Arduino IDE

Software arduino IDE adalah software aplikasi cross-platform ditulis dengan bahasa pemrograman java, dan berasal dari IDE untuk bahasa pemrograman pengolahan wiring project. Hal ini dirancang untuk memudahkan para pengguna yang baru mempelajari microcontroller dengan software development. Termasuk didalam software dengan kode editor dengan fitur seperti sintaks, brace pencocokan, dan indentasi otomatis, dan juga mampu meng-compile dan meng-upload program dengan sekali perintah klik tombol.

(37)

* Setup() - fungsi berjalan sekali pada awal dari sebuah program yang dapat menginisialisasi pengaturan.

* Loop() - fungsi yang dieksekusi berulang kali sampai board dalam keadaan mati.

Gambar 2.6 Software IDE arduino

Berikut ini contoh code program yang ditulis dalam software arduino IDE, code ini untuk membuat LED pin 13 berada dalam kondisi ON-OFF(blink) selama selang waktu beberapa detik.

#define LED_PIN 13 void setup () {

pinMode (LED_PIN, OUTPUT); // enable pin 13 for digital output }

(38)

digitalWrite (LED_PIN, HIGH); // turn on the LED

delay (1000); // wait one second (1000 milliseconds) digitalWrite (LED_PIN, LOW); // turn off the LED

delay (1000); // wait one second }

Fungsi I/O Pin arduino

Digital I/O

• pinMode() : konfigurasi pin arduino yang berfungsi sebagai input/output • digitalWrite() : output nilai HIGH (5v) atau LOW(0v) dari konfirgurasi

pin output.

• digitalRead() : membaca nilai dari pin arduino, seperti nilai logika HIGH atau LOW

Analog I/O

• analogReference() : konfigurasi dari tegangan referensi yang digunakan sebagai input analog

• analogRead() : Membaca nilai dari analog pin input arduino seperti sensor analog menggunakan fungsi ADC mikrokontroller.

• analogWrite() : berfungsi sebagai output PWM pin arduino

II.1.6 Kelebihan Arduino Sebagai Opensource Hardware

(39)

Tidak hanya demikian, selain board arduino yang dikembangkan, shield sebagai board pendukung lain dari arduino bisa mudah untuk dikembangkan dengan dokumentasi lengkap.

Dari beberapa hal yang berkaitan dari arduino sebagai opensource hardware untuk board edukasi memliki beberapa kelebihan dibandingkan dengan board trainer elektronika yang dikembangkan :

1. Arduino menggunakan software yang berbasis IDE sehingga memudahkan pengguna awam untuk belajar bahasa pemrograman level microcontroller.

2. Pada level hardware, arduino memiliki bootloader sebagai program kecil yang ditanamkan dalam microcontroller ATmega dimana berfungsi untuk melakukan interaksi ke level atas dengan software IDE ketika program di compile dan di upload. Sedangkan pada level bawah, bootloader dapat mengeksekusi sketch yang telah di upload pada mikrokontroller.

3. Multi platform, software arduino IDE dapat dijalankan pada semua jenis system operasi seperti Windows, Mac maupun Linux. Tidak hanya itu drivernya menggunakan chipset FTDI sebagai koneksi USB telah mendukung pada semua system operasi.

4. Tersedia kumpulan library dalam bentuk java, C/C++ siap pakai dan juga mampu digunakan dengan banyak perangkat

(40)

5. Compatible dengan banyak shield sebagai modul pendukung fungsi pengembangan board arduino untuk proyek piranti elektronika.

II.2 Shield Arduino

Shield arduino dibuat untuk memperluas fungsi penggunaan untuk keperluan perangkat elektronika lain. Seperti contoh arduino tidak mampu menggerakan motor stepper dan motor servo (driver motor) karena arduino tidak mampu mengolah arus listrik yang besar. Untuk itu dibutuhkan perangkat lain yang bisa digunakan sebagai penggerak motor dimana arduino berfungsi sebagai control. Beberapa contoh shield arduino banyak berkembang baik yang bersifat sensor input/output maupun berfungsi sebagai perangkat device tambahan seperti wireless, Ethernet, dan GSM/GPS.

Shield arduino yang berkembang saat ini dapat dilihat dari situs forum arduino http://www.arduino.cc/playground/Main/SimilarBoards dan di http://www.shieldlist.org. Shield merupakan pengembangan dari perangkat elektronika umum yang digunakan dengan pengembangan library C/C++ dan bentuk dari referensi model board arduino, shield dapat digunakan dan compatible dengan board arduino.

(41)

1. Arduino Motor Shield

Shield Motor untuk arduino mendukung arduino dengan motor driver menggunakan library Servo.h. Arduino menggunakan motor shield dapat digunakan untuk kebutuhan Robot bergerak dan tercontrol seperti Line follower robot, autonomus mobile robot, homemade CNC machine dan beberapa system mekatronika yang menggunakan motor.

2. Wirelesss Shield (Xbee/ZigBee)

Shield wireless arduino berupa modul Xbee digunakan sebagai pendukung proyek microcontroller berbasis wireless. Shield Xbee ini mendukung arduino digunakan untuk berkomunikasi secara wireless untuk membangun perangkat elektronika menggunakan protocol 802.15.4 2

3. Etherner Shield

Ethernet shield berfungsi untuk mengembangkan arduino berkomunikasi dengan internet. Shield yang dikembangkan menggunakan chipset Wiznet5100 yang telah mampu mendukung level TCP dan UDP. Penggunaan Shield ini dapat di implemntasikan dalam bentuk local area network maupun terhubung langsung dengan internet. Salah satu contoh model board arduino yang memiliki Ethernet shield yang terintergrasi didalamnya adalah Netduino (www.netduino.com)

2

(42)

4. GPS/GSM shield

Shield GPS/GSM yang dikembangkan telah mampu mendukung arduino secara software(library) maupun hardware. Shiled ini dapat digunakan dengan arduino untuk kebutuhan GPS tracker yang mampu di integrasikan dengan website google map, sedangkan GSM shield dapat dikembangkan sebagai SMS gateway berbasis arduino.

5. Proto Shield

Proto shield merupakan shield prototyping untuk arduino, menggunakan breadboard sebagai media penyusunan tata letak komponen sebagai kit percobaan. Protoboard bukanlah shield arduino dengan fungsi khusus seperti shield yang didesain final. Namun merupakan shield yang ditumpuk diatas arduino untuk memudahkan merancang percobaan rangkaian yang terintergrasi dengan arduino.

6. Compatible Shield lain

Compatible shield dikembangkan untuk mendukung lebih jauh kemampuan dan fungsionalitas arduino. Referensi dapat dilihat di situs : http://arduino.cc/playground/Main/InterfacingWithHardware yang merupakan pengembangan shield arduino secara personal maupun massal untuk kebutuhan spesifik lain.

II.3 Input/Output

(43)

microcontroller menggunakan sensor dan switch. Input dan output direpresentasikan kedalam 2 jenis yaitu analog dan digital. Analog memiliki kondisi yang mengacu informasi yang bersifat kontinyu, sedangkan digital mengacu pada nilai yang diskrit. Nilai diskrit yang dimaksud adalah memiliki kondisi yang pasti seperti contoh nilai 1 atau 0 dan nilai ON atau OFF.

Gambar 2.7 Perbandingan sinyal digital dengan analog

Digital memiliki nilai yang terbatas karena bersifat diskrit, nilai tersebut dapat diwakilkan dengan perubahan level dalam jangka waktu tertentu. Nilai analog memliki sinyal tak terbatas pada perubahan waktu tertentu berubah secara kontinyu. Contoh dari analog dan digital misalnya perbandingan jam analog selalu berubah secara kontinyu terhadap jam, menit dan detik sedangkan jam digital perubahannya mendadak dari 08:00 menjadi 08:01

(44)

II.3.1 Sensor

Sensor merupakan piranti yang mampu menangkap masukan nilai besaran fisik kedalam nilai elektronika yang mampu dibaca (tranduser). Nilai kuantitas besaran fisik berupa cahaya, gerakan dan kecepatan (mekanis), thermal serta zat kimia. Sensor memiliki nilai input yang berubah – ubah secara simultan dan bernilai tak terbatas tergantung dari perubahan lingkungan.

Beberapa contoh Sensor :

- LDR atau Light Depedent Resistor merupakan sensor yang peka terhadap perubahan intensitas cahaya, nilai perubahan diukur dengan hambatan.

- PIR sensor, Passive Infra Red sensor adalah sensor yang peka terhadap perubahan pada obyek yang bergerak

- IC LM35 merupakan IC yang peka terhadap perubahan suhu

II.3.2. Switch

(45)

.

Gambar 2.8 Simbol switch

II.4 PWM

PWM, atau Pulse Width Modulation, merupakan suatu metode mengontrol dan mendapat hasil analog dengan perangkat digital. Perangkat digital yang dimaksud adalah pembangkit gelombang persegi, sinyal berubah dengan pola ON-OFF. Pada Arduino, Pola on-off dapat mensimulasikan tegangan posisi penuh pada (5 Volt) dan off (0 Volt) dengan mengubah sebagian dari durasi waktu ketika posisi penuh 5V (on) dengan posisi off (0 V). Ketika durasi posisi ‘on’ disebut sebagai lebar pulsa, untuk mendapatkan variasi nilai analog dapat diubah masukan lebar pulsanya. Misalnya pola on-off dengan perubahan waktu yang sangat cepat dari tegangan 0 sampai 5v dapat mengubah brightness dari LED.

(46)

Gambar 2.9 Konsep PWM dalam arduino

II.5 Protokol HTTP

Protocol HTTP berada pada layer application yang berfungsi sebagai system terdistribusi, kolaboratif dan hypermedia informasi(rfc2616). Protocol HTTP merupakan landasan utama untuk layanan Web/WWW, sehingga protocol HTTP merupakan inti dari komunikasi data pada layanan web.

(47)

Sebuah halaman web yang terdiri dari dokumen berupa obyek seperti file HTML, gambar (baik JPEG maupu GIF), audio/video yang berada dalam alamat URL. Karena pada dokumen HTML tersebut biasanya disusun dari dari banyak obyek gambar, teks dan lainnya. Contoh alamat :

http://www.someweb.com/index.html

Alamat tersebut merepresentasikan isi website dengan halaman HTML yaitu index.html yang disusun dari obyek teks dan gambar. Client melakukan request terhadap file dokumen index.html pada server melalui browser. Browser adalah agen dari client untuk menampilkan halaman web seperti Internet Explorer ataupun Firefox. Kemudian server akan menerjemahkan permintaan client terhadap isi dari index.html dan mengirimi satu persatu file dari index.html. Disisi server HTTP memiliki sebuah system yang disebut sebagai web server yang melayani permintaan HTTP client. Web server seperti apache mampu menerjemah bahasa pemrograman level website seperti PHP, ASP , JSP dan sebagainya.

(48)

Model komunikasi HTTP terdiri dari web client sebagai browser yang melakukan request halaman website dari web server. Model komunikasi client – server yang terjadi adalah HTTP request dari client sedangkan HTTP response dari server(Gambar 2.9). Pada tahun 1997, browser dan web server di implementasikan dengan HTTP/1.0 (rfc9145) kemudian awal tahun 1998 semua browser dan web server di implementasikan HTTP/1.1 (rfc2068). Perkembangan protocol HTTP/1.1 masih mendukung versi protocol HTTP/1.0

HTTP/1.0 dan HTTP/1.1 keduanya menggunakan layanan TCP pada transport layer. Untuk dapat melakukan request HTTP pada server, client terlebih dahulu melakukan koneksi TCP pada port 80 (HTTP) sebagai pintu masuk webserver. Koneksi TCP akan diterima server dan kemudian mengijinkan pertukaran HTTP message berupa pertukaran data dari browser client dengan web server. Setelah pertukaran data terjadi, webserver akan memutuskan koneksi. Jika pada waktu tertentu, client melakukan request pada obyek yang sama, webserver akan melakukan proses reponse HTTP dengan mengirim kembali obyek tersebut. Webserver tidak mampu menyimpan kondisi akhir client saat request terjadi terhadap reponse. Kondisi ini dimanakan stateless, dimana HTTP server tidak mampu mengingat kondisi akhir request client.

II.5.1 Non-Persistent dan Persistent Connections

(49)

II.5.1.1 Non-Persistent Connections

Berikut ini merupakan mekanisme pengiriman halaman web dari server dalam kasus non-persistent connections.

Contoh : http://www.someschool.edu/somedepartment/index.html

Halaman web diatas diasumsikan dari index.html akan memanggil obyek gambar sebanyak 10 yang menyusun file HTML. Maka total obyek yang diminta oleh client adalah 11 yaitu file HTML berupa index dan 10 file gambar. Langkah – langkah mekanisme request obyek client terhadap server adalah sebagai berikut :

1. HTTP client akan menginisiasi koneksi TCP pada server

http://www.someschool.edu. Port 80 pada server digunakan sebagai port default untuk mendengar permintaan client

2. Server pada port 80 dan menjawab permintaan koneksi TCP client dengan mengirim pemberitahuan port 80 terbuka dan bisa diakses

3. Client melakukan HTTP request terhadap halaman web

/somedepartment/index.html dengan mengindikasikan HTTP message pada server

(50)

5. HTTP client menerima file index.html dan koneksi TCP terputus. Client menerjemahkan file HTML dan mencari referensi 10 obyek gambar yang menyusun HTML.

6. Client melakukan langkah 1 sampai 4 secara berulang hingga 10 obyek gambar yang menyusun file HTML lengkap

Dari mekanisme non-persistent, untuk meminta 11 obyek pada server maka client harus melakukan 11 koneksi TCP. Setiap koneksi TCP akan menginisiasikan request HTTP message pada sever dan setelah menjawab request HTTP, server akan menutup koneksi.

Pada kasus tertentu, untuk mempercepat permintaan obyek yang mengacu suatu HTML, client memiliki browser yang mampu melakukan proses parallel koneksi TCP. Dengan koneksi TCP yang bersifat parallel akan meminimalkan fungsi koneksi 1 TCP untuk 1 obyek sehingga client dapat meminta 10 obyek dalam waktu yang sama tanpa harus menunggu bergantian setiap 1 koneksi TCP.

(51)

koneksi TCP antara browser client dengan web server. Koneksi TCP yang terjadi adalah mekanisme 3-way handshaking : client mengirim paket kecil sebagai SYN, server menjawab dengan (SYN-ACK) kemudian client menerima jawaban dan mengirim ACK pada server.

Gambar 2.11 Mekanisme 3-Way handshaking

(52)

client dan menutup koneksi TCP. Nilai request/reponse atau total dari pengiriman file adalah 2RTT + waktu pengiriman file dari server.

Gambar 2.12 Mekanisme Response Time Modeling Non-Persistent

II.5.1.2 Persistent Connections

Masalah yang terjadi pada non-persistent adalah membutuhkan 2RTT untuk request client yang terjadi. Untuk mempercepat request obyek yang mengacu file HTML, client melakukan proses parallel koneksi TCP. Masalah lain yang muncul, ketika server melakukan reponse maka harus mengalokasi resource hanya untuk menangani 1 HTTP request dari client. Hal ini akan mengakibatkan persoalan disisi server untuk menangani request HTTP client jika obyek yang dikirim mencapai ratusan.

(53)

memiliki limit untuk memutuskan koneksi jika tidak ada lagi permintaan client yang bersifat simultan. Selanjutnya untuk Request dan reponse yang sama dapat dikirim melalui 1 koneksi. Misalnya file HTML yang mengacu beberapa file dapat dikirim dalam 1 koneksi sampai semua file yang menyusun HTML tersebut lengkap, server kemudian dapat memutuskan koneksi.

Ada 2 versi dalam persistent connections yaitu persistent dengan pipelining dan tanpa pipelining. Versi persistent tanpa pipelining adalah client akan melakukan request obyek jika request obyek sebelumnya telah terpenuhi dan dijawab server dan setiap obyek hanya memerlukan 1 RTT. Permasalahan yang muncul adalah ketika server mengalami gangguan/hang tidak mampu menjawab request client maka client sama sekali tidak dapat untuk melakukan request kembali karena request sebelummnya belum terpenuhi. Versi persistent dengan pipelining saat ini digunakan secara umum pada versi HTTP/1.1. Pada persistent dengan pipelining, client dapat melakukan request secara bersamaan pada obyek yang mengacu pada HTML. Contohnya : ketika file HTML telah diterjemahkan dan mengacu 10 buah file gambar, client dapat meminta 10 file gambar dalam 1 koneksi bersamaan. RTT yang diperlukan hanya cukup 1 koneksi untuk dapat meminta referensi dari 10 file gambar tersebut.

II.5.2 HTTP Message Format

(54)

II.5.2.1 HTTP Request Message

Berikut ini adalah format dari HTTP Request Message :

Format message HTTP ditulis dengan karakter teks ASCII biasa sehingga pengguna dapat membaca dan mengidentifikasikan isi format message. Dari format message diatas terdiri dari 5 baris, dimana setiap baris selanjutnya akan menginformasikan beberapa fungsi request lain. Baris pertama dinamakan request

line, biasanya mengidentifikasikan sebagai method field, URL field, dan versi

HTTP. Method field terdiri dari beberapa fungsi seperti yang termasuk didalamnya GET, POST, and HEAD. Dan umumnya request menggunakan fungsi GET karena fungsi GET digunakan oleh browser client untuk meminta dan mengambil obyek pada server. Fungsi GET diikuti dengan identifikasi URL dan versi HTTP seperti contoh diatas browser mengimplementasikan protocol HTTP/1.1.

(55)

menggunakan koneksi persistent. Pada baris selanjutnya (User-agent: Mozilla/4.0), mengidentifikasikan browser client menggunakan Mozzila versi 4.0 sebagai user agent. Line Accept: text/html, image/gif, image/jpeg dan Accept-language:fr memberitahukan untuk menerima obyek text/html dan gambar berupa gif dan jpeg. Sedangkan Accept-language, header cenderung menerima obyek yang memiliki bahasa dalam versi French (fr).

Format request message HTTP adalah sebagai berikut :

Gambar 2.13 Format Header request HTTP message

Method dalam request message dibagi menjadi 9, namun secara umum yang digunakan adalah 3 yaitu GET, POST dan HEAD

(56)

2.GET ; request dengan method GET merupakan kondisi umum yang digunakan client untuk meminta informasi secara lengkap kepada server yang menyangkut halaman web.

3.POST ; jika halaman web menampilkan form biasanya memerlukan input dari client. Method yang digunakan bertipe POST untuk mengidentifikasikan sebagai request input dari client.

4.PUT ; client dapat melakukan request untuk upload obyek pada resource server

5.DELETE ; menghapus file pada server

6.TRACE ; client dapat melakukan request cek perubahan file pada server

7.OPTIONS ; fungsi ini sebagai tipe pengembalian untuk mengecek URL web server seperti dengan perintah wildcard '*' terhadap obyek tertentu

8.CONNECT ; mengkonversi koneksi request dari mode biasa ke mode secure dengan fasiltas SSL (layanan HTTPS atau HTTP proxy)

(57)

Berikut ini tabel perbandingan implementasi tipe method pada HTTP/1.0 dengan HTTP/1.1 :

Tabel 2.4 Method Request pada HTTP/1.0 dengan HTTP/1.1

HTTP/1.0 HTTP/1.1

HEAD : menampilkan

informasi server tanpa body GET : mengambil obyek spesifik secara keseluruhan POST : mengirim data input dari client

HEAD : menampilkan informasi server tanpa body

GET : mengambil obyek spesifik secara keseluruhan

POST : mengirim data input dari client PUT : mengupload file pada server DELETE : menghapus file pada server

II.5.2.2 HTTP Response Message

Format HTTP response Message adalah sebagai berikut :

Dari format diatas diidentifikasikan menjadi 3 bagian yaitu status line ,

header line dan entire body. Status line mengindikasikan pada line paling atas,

status line merepresentasikan response server terhadap request. Ada beberapa criteria dari code status response server terhadap client :

200 OK

• Request yang diminta ada, tipe pengembalian pengiriman obyek

(58)

• Request obyek yang diiminta telah dipindah, tipe pengembalian

lokasi yang baru (Location:)

400 Bad Request

• Request tidak mengerti oleh server

404 Not Found

• Request terhadap obyek tidak ditemukan didalam server

505 HTTP Version Not Supported

• Request yang diminta tidak sesuai dengan versi protocol HTTP

server

(59)

Gambar 2.14 Format header response HTTP message

II.6 Software Analisa Protocol Jaringan

Untuk melakukan analisa terhadap pertukaran paket dengan teknik tapping menggunakan software wireshark. Software ini membantu menganalisis pertukaran paket yang terjadi dalam jaringan dan melakukan decapculasi atau membongkar ulang paket yang telah dibungkus pada setiap layer. Tujuan dari membongkar paket adalah mengetahui protocol yang digunakan pada susunan paket yang dikirim.

II.6.1 Wireshark

(60)

Bersifat multiplatform, wireshark dapat digunakan baik di system operasi Linux maupun Windows (menggunakan WinPcap). Selain itu hasil capture paket dalam bentuk GUI memudahkan pengguna untuk menganaslisis data sehingga mudah diterjemahkan susunan header protocol paket tersebut.

(61)

43

BAB III

ANALISIS DAN PERANCANGAN

III.1 Deskripsi Pemodelan Input/Output Webserver Arduino

Model prototyping system pengendali jarak jauh (SPJJ) yang dikembangkan dengan webserver arduino disimulasikan dengan input/output analog. Skema perancangan dimodelkan dengan I/O analog – digital dari arduino webserver dan user mengakses web browser di sisi client.

Proses pengolahan input/output webserver arduino dilakukan teknik tapping dengan software sniffing yaitu wireshark disisi client bertujuan untuk

(62)

Gambar 3.1 Skema Prototipe Sistem Pengendali Jarak Jauh

III.2 Skenario Perancangan

III.2.1 Skenario Perancangan Input Digital - Output Analog (ON/OFF LED)

Use case : Prototipe Pengendali Model 1

Kode : SPJJ-001

Definisi Pemodelan :

Prototipe pengendali jarak jauh model 1 (SPJJ-001), adalah model komunikasi antara client dengan webserver arduino melalui web browser. Terdiri dari control LED output dari arduino dan ACK LDR sebagai input dari arduino. Halaman control led berupa form button sebagai input control user ditampilkan oleh web browser dirancang untuk mengolah perubahan nilai digital mendadak dari kondisi logika HIGH – LOW. Untuk mengetahui perubahan kondisi switch dan lampu ON/OFF dirancang halaman LDR sebagai report status.

(63)

Halaman Form html berupa radio button untuk pilihan ON/OFF sebagai input user dan button submit sebagai control pengendali output LED pada arduino webserver

Kontrol Output

Halaman LDR report status sebagai ACK kondisi perubahan nyala LED ON/OFF

Fungsi I/O

Output Pin 2 dan Analog Input Pin A0 Arduino

Skenario Proses

Aktifitas Input Reaksi Sistem

1. Halaman control input disisi user/ client tampil pada web browser. Pilihan radio button ON/OFF sebagai input user dan submit button untuk mengendalikan LED pada output arduino webserver. Aktifitas pengendalian akan di proses melalui thread control led pada webserver arduino.

2. Keadaan LED menjadi ON/OFF tergantung input user.

Pemberitahuan melalui ACK dari perubahan kondisi LDR sebagai input analog pin arduino. ACK LDR akan ditampilkan berupa halaman HTML pada web browser. Arduino akan

(64)

3.2.2 Skenario Perancangan Input Digital - Output Analog (Dimmer Lampu)

Use case : Prototipe Pengendali Model 2

Kode : SPJJ-002

Definisi Pemodelan :

Prototipe pengendali jarak jauh model 2 (SPJJ-002), adalah model komunikasi antara client dengan webserver arduino melalui web browser. Terdiri dari control Lampu berupa slider button dan ACK LDR sebagai input dari arduino. Slider berfungsi sebagai control untuk mengendalikan posisi perubahan nyala lampu pada arduino menjadi dimmer, kondisi dari gelap ke terang dan sebaliknya. Untuk mengetahui perubahan tersebut, input pin analog LDR pada arduino membaca nilai perubahannya dan mengirimkan ACK ke pada client. Kontrol Input

Halaman input button bertipe slider untuk mengontrol perubahan kondisi nyala lampu pada webserver arduino.

Kontrol Output

Halaman LDR report status sebagai ACK kondisi perubahan dimmer, gelap keterang dan sebaliknya

Fungsi I/O

Output Pin 3 difungsikan sebagai PWM dan Analog Input Pin A0 Arduino

Skenario Proses

Aktifitas Input Reaksi Sistem

1. Halaman control input disisi user/ client tampil pada web browser. Input berupa slider button dari level 0 – sampai 255.

(65)

yang berubah dalam interval waktu tertentu.

III.4 Model Perilaku Sistem

III.4.1 Skenario Perancangan

(66)

! " # $#

! %&

(67)
(68)

Gambar 3.6 Diagram State komunikasi data SPJJ-002

III.5 Desain Antarmuka

Antarmuka SPJJ akan dikembangkan menjadi tampilan halaman HTML pada sisi web browser sebagai control user dan alat bantu rancang percobaan I/O arduino webserver.

III.5.1 Antarmuka halaman HTML

Antarmuka halaman HTML dikembangkan sebagai control input dari user dan menampilkan hasil perubahan respon dari webrver arduino.

(69)

Halaman depan HTML sebagai index menampilkan dua fungsi utama, SPJJ-001 dan SPJJ-002.

III.5.1.2 Antarmuka HTML SPJJ-001

Gambar 3.7 Antarmuka HTML SPJJ-001

III.5.1.3 Antarmuka HTML SPJJ-002

Gambar 3.8 Antarmuka HTML SPJJ-002

(70)

Antarmuka Arduino webserver dikembangkan dengan rancang peralatan yang mendukung board arduino dan control I/O. Alat dan bahan yang digunakan dalam perancangan sistem pengendali jarak jauh adalah sebagai berikut :

III.5.2.1 Daftar Alat dan bahan

Hardware Sistem Pengendali

Arduino Duemilanove ATMega 328 : 1 buah

Compatible Ethernet shield chipset WIZNET 5100 : 1 buah

Catu daya DC 9V (max 500mA) :1 buah

Wireless Acces Point (TpLink MR3020) : 1 buah

Kabel LAN RJ45 : 1 buah

I/O Arduino ; dikembangkan menjadi 2 tipe untuk prototype SPPJJ-001

dan SPJJ-002

I/O SPJJ-001

PCB matrik (protoboard) : 1 buah

LED 5 mm superbright : 1 buah

Resistor 1 K : 2 buah

LDR : 1 buah

(71)

PCB matrik (protoboard) : 1 buah

Lampu pilot 6V : 1 buah

Resistor 1 K : 2 buah

LDR : 1 buah

Transistor NPN TIP 120 : 1 buah

Dioda 1N4001 : 1 buah

III.6 Skenario Uji webserver dengan teknik tapping

"

Gambar 3.9 Uji webserver dengan teknik tapping menggunakan software sniffing

Pengolahan I/O analog dan digital pada arduino di tap dengan software sniffing wireshark pada web client bertujuan untuk mengetahui output data paket yang melewati jaringan webserver arduino.

(72)

Aktifitas Input Reaksi Sistem 1. Mengcapture paket data yang

keluar dari IP webserver arduino ke web client dengan software

wireshark.

(73)

55

BAB IV

IMPLEMENTASI DAN ANALISIS PERANCANGAN

IV.1 Implementasi Pemodelan Input/Output Webserver Arduino

Pemodelan Sistem Pengendali Jarak Jauh yang dikembangkan menggunakan Arduino dan Compatible Ethernet Shield chipset Wiznet 5100 diimplementasikan dengan library yang disediakan yaitu menggunakan library Ethernet Shield, SPI, Webduino dan Protothread. Berikut ini merupakan fungsi dari masing – masing library.

1. Library Ethernet : Komunikasi jaringan internet menggunakan Arduino Ethernet Shield

(74)

3. Library Webduino : library webserver untuk Arduino Ethernet Shield 4. Library Protothread : Menjalankan obyek thread pada arduino

IV.1.1 Implementasi

#include "WebServer.h" #include "SPI.h"

#include "Ethernet.h"

#include "pt.h" //protothread library http://dunkels.com/adam/pt/index.html Fungsi ini meng-import file library ke dalam implementasi program

template<class T>

inline Print &operator <<(Print &obj, T arg) {

obj.print(arg); return obj; }

Fungsi ini adalah konstruktor untuk menampilkan nilai variable dari arduino ke dalam halaman HTML

byte ip[] = { 192, 168, 0, 11 };

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

Inisialisasi IP address webserver arduino 192.168.0.11 dengan MAC address 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED

#define PREFIX ""

WebServer webserver(PREFIX, 80);

int ledPin = 3; int lampPin = 4;

byte sensorPin[] = {A0, A1}; int sensor = 0;

static struct pt pt1, pt2, pt3;

Inisialisasi I/O pin arduino arduino

(75)

bool tail_complete) //index HTML

"<title>Sistem Pengendali Jarak Jauh Berbasis Arduino</title>" "</head>"

"<body>"

"<table border='0px' cellpadding='2' cellspacing='2' align='center'>" "<tr>"

"<td><a href=\"spjj_001\"><p>FUNGSI SPJJ-001</p></a></td>" "<td><a href=\"spjj_002\"><p>FUNGSI SPJJ-002</p></a></td>" "</tr></table>"

"</body>" "</html>";

server.printP(message); }

}

Fungsi untuk membuat halaman HTML index

void SPJJ_001_Cmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete) //index HTML

{

"<title>Arduino Webserver LED Controler</title>" "</head>"

"<body>"

(76)

"<tr>"

"<td><iframe src=\"led\" frameborder=\"no\" name=\"led\" width='260px' height='200px'></iframe></td>"

"<td><iframe src=\"sensor_1\" frameborder=\"no\" name=\"sensor_1\" width='300px' height='200px'></iframe></td>"

"</tr></table>" "</body>" "</html>";

server.printP(message); }}

Fungsi untuk membuat halaman HTML Control SPJJ-001.

void SPJJ_002_Cmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete) //index HTML

{

"<title>Arduino Webserver Lamp Controler</title>" "</head>"

"<body>"

"<table border='0px' cellpadding='2' cellspacing='2' align='center'>" "<tr>"

"<td><iframe src=\"rgb\" frameborder=\"no\" name=\"rgb\" width='320px' height='200px'></iframe></td>"

"<td><iframe src=\"sensor_2\" frameborder=\"no\" name=\"sensor_2\" width='300px' height='200px'></iframe></td>"

"</tr></table>" "</body>" "</html>";

server.printP(message); }

}

Fungsi untuk membuat halaman HTML Control SPJJ-002.

(77)

{

server.httpSeeOther(PREFIX); return;

"<title>Arduino Webserver LED Controled</title>" "<style type=\"text/css\">"

"BODY { font-family: sans-serif }"

"H1 { color: white; background-color: #276596; font-size:18px; font-family:Georgia, 'Times New Roman', Times, serif; text-align:center}"

"P { background-color: #e1e8f2; color: #046381; size:16px; font-family:Geneva, Arial, Helvetica, sans-serif; text-align:center }"

"l { color: white; background-color: #515151; border-style: solid; border-width: 2px; border-color:#333333; font-family: Comic Sans MS }"

"h { color: white; background-color: #900; border-style: solid; border-width: 2px; border-color:#FF6600; font-family: Comic Sans MS; }"

"</style>" "</head>"

"<body bgcolor=#6699FF>";

server.printP(htmlPage);

server << "<form action='' method='post'>"; server << "<h1>Control LED</h1><p>"; int val = digitalRead(ledPin);

char pinName[4]; pinName[0] = 'd';

itoa(ledPin, pinName + 1, 10);

(78)

server << " ";

server.radioButton(pinName, "0", "Off", !val);

server << "</br>Kondisi Logika Switch : " << (val ? "<h>HIGH</h>" : "<l>LOW</l>");

server << "</p>";

server << "<input type='submit' value='Submit'/></form>"; server << "</body></html>";

} }

Fungsi menangani input perintah ON/OFF LED.

void rgbCmd(WebServer &server, WebServer::ConnectionType type, char *, bool) {

server.httpSeeOther(PREFIX); return; "<title>Control Dimmer Lampu</title>"

"<link rel=\"stylesheet\" href=\"http://192.168.0.12/skripsi/jquery.mobile-1.0.min.css\" />"

"<script src=\"http://192.168.0.12/skripsi/jquery-1.6.4.min.js\"></script>"

"<script src=\"http://192.168.0.12/skripsi/jquery.mobile-1.0.min.js\"></script>" // "<style> body, .ui-page { background: black; } div.ui-slider { width: 88%; } #red { display: block; margin: 10px; } #red { background: #000; } </style>"

"<script>"

(79)

"</head>" "<body>"

"<div data-role=\"header\" data-position=\"inline\"><h3>Slider Control </h3></div>" "<div class=\"ui-body ui-body-a\">"

"<input type=\"range\" name=\"slider\" id=\"red\" value=\"0\" min=\"0\" max=\"255\" />"

"</div>" "</body>" "</html>";

server.printP(message); }

}

Fungsi menangani input perintah Dimmer Lampu.

void ldr_1Cmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)

"<title>LDR Report </title>" "<style type=\"text/css\">"

"BODY { font-family: sans-serif }"

"H1 { color: white; background-color: #3366FF; font-size:18px; font-family:Georgia, 'Times New Roman', Times, serif; text-align:center}"

"P { background-color: #e1e8f2; color: #1a67b8; font-size:16px; font-family:Geneva, Arial, Helvetica, sans-serif; text-align:center }"

"p1 { color: white; background-color: #515151; border-style: solid; border-width: 2px; border-color:#333333; font-family: Comic Sans MS }"

"p2 { color: white; background-color: #900; border-style: solid; border-width: 2px; border-color:#FF6600; font-family: Comic Sans MS; }"

"</style>" "</head>"

"<body bgcolor=#005087>" "<H1>LDR Report Status</H1>" "<p>";

server.httpUpdate("5"); server.printP(htmlPage);

sensor = analogRead(A0); if (sensor <= 20){

(80)

server << "Intensitas Cahaya pada LDR : " << sensor << "<br>\n"; server << "Status Lampu OFF";

}

if (sensor >= 100){

server << "<img src=\"http://192.168.0.12/skripsi/led-on.png\"><br>\n"; server << "Intensitas Cahaya pada LDR : " << sensor << "<br>\n"; server << "Status Lampu ON";

}

if (sensor == 0){

server << "<body onLoad=\"alert('Report LDR gagal, Status Lampu tidak diketahui. Cek kabel koneksi');return false;\">";

}

server << "</p>";

server << "</body></html>"; }

}

void ldr_2Cmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)

{

P(message) = "<html>" "<head>"

"<title>LDR Report </title>" "<style type=\"text/css\">"

"BODY { font-family: sans-serif }"

"H1 { color: white; background-color: #3366FF; font-size:18px; font-family:Georgia, 'Times New Roman', Times, serif; text-align:center}"

"P { background-color: #e1e8f2; color: #1a67b8; font-size:16px; font-family:Geneva, Arial, Helvetica, sans-serif; text-align:center }"

"p1 { color: white; background-color: #515151; border-style: solid; border-width: 2px; border-color:#333333; font-family: Comic Sans MS }"

"p2 { color: white; background-color: #900; border-style: solid; border-width: 2px; border-color:#FF6600; font-family: Comic Sans MS; }"

"</style>" "</head>"

"<body bgcolor=#005087>" "<H1>LDR Report Status</H1>" "<p>";

server.httpUpdate("5"); server.printP(message);

sensor = analogRead(A1); if ( sensor <= 20){

server << "<img src=\"http://192.168.0.12/skripsi/gelap.png\"><br>\n"; server << "Intensitas Cahaya pada LDR :" << sensor << "<br>\n"; server << "Kondisi Cahaya Gelap";

}

(81)

server << "<img src=\"http://192.168.0.12/skripsi/redup.png\"><br>\n"; server << "Intensitas Cahaya pada LDR : " << sensor << "<br>\n"; server << "Kondisi Cahaya Redup";

}

else if (sensor <= 200){

server << "<img src=\"http://192.168.0.12/skripsi/terang.png\"><br>\n"; server << "Intensitas Cahaya pada LDR :" << sensor << "<br>\n"; server << "Kondisi Cahaya Terang";

}

else if (sensor > 225){

server << "<img src=\"http://192.168.0.12/skripsi/sangat-terang.png\"><br>\n"; server << "Intensitas Cahaya pada LDR : " << sensor << "<br>\n";

server << "Kondisi Cahaya Sangat Terang"; }

server << "</p>";

server << "</body></html>"; }

Fungsi menangani perintah umpan balik yang diberikan kondisi lampu oleh sensor

LDR pada pin Arduino A0 dan A1.

static int ledThread(struct pt *pt) { static unsigned long timestamp = 0; PT_BEGIN(pt);

while(1) {

PT_WAIT_UNTIL(pt, millis() - timestamp > 1000); timestamp = millis();

webserver.addCommand("led", &ledCmd);

webserver.addCommand("spjj_001", &SPJJ_001_Cmd); }

PT_END(pt); }

static int lampThread(struct pt *pt) { static unsigned long timestamp = 0; PT_BEGIN(pt);

while(1) {

PT_WAIT_UNTIL(pt, millis() - timestamp > 1000); timestamp = millis();

analogWrite(lampPin, sensor);

webserver.addCommand("rgb", &rgbCmd);

webserver.addCommand("spjj_002", &SPJJ_002_Cmd); }

(82)

}

static int ldrThread(struct pt *pt) { static unsigned long timestamp = 0; PT_BEGIN(pt);

while(1) {

PT_WAIT_UNTIL(pt, millis() - timestamp > 2000); timestamp = millis();

webserver.addCommand("sensor_1", &ldr_1Cmd); webserver.addCommand("sensor_2", &ldr_2Cmd); }

PT_END(pt); }

Fungsi untuk membuat thread untuk menjalankan proses menangani I/O arduino.

void setup() {

pinMode(ledPin, OUTPUT); pinMode(lampPin, OUTPUT); for (int x=0; x<2; x++) {

pinMode (sensorPin[x], INPUT); } Ethernet.begin(mac, ip);

PT_INIT(&pt1);

Inisialisasi pengaturan pin I/O arduino dan method yang dijalankan dalam main

program.

void loop() {

// process incoming connections one at a time forever webserver.processConnection();

(83)

IV.2 Uji Webserver Dengan Teknik Tapping Menggunakan Software Sniffing

IV.2.1 Analisis Use Case Use case SPPJJ-001

IV.2.1.1 Proses I/O Arduino dengan State OFF input

Tampilan Input pada halaman HTML

Gambar 4.1 Tampilan Input OFF radiobutton SPJJ-001

(84)

dengan menginformasikan status LDR pada web browser. Kondisi Lampu output pada arduino berada dalam kondisi Off(Matii).

Gambar 4.2 Tapping 3-way Handshake SPJJ-001

IV.2.1.2 Proses I/O Arduino dengan State ON input

Tampilan Input pada halaman HTML

(85)

Kondisi input diubah pada radio button ON, user melakukan aktifitas submit dan posisi switch menyatakan logika HIGH. Arduino memberikan ACK dengan menginformasikan status LDR pada web browser. LDR membaca kondisi ruangan dengan intensitas cahaya 561 dalam nilai digital. Kondisi Lampu output pada arduino berada dalam kondisi ON(Hidupii).

Gambar 4.4 Tapping POST SPJJ-001 dari user

Gambar

Tabel 2.2 Deskripsi Mapping Pin ATmega 328 ............................................
Gambar 2.1  Prototyping arduino generasi pertama oleh Massimo Banzi
tabel perbandingan
Gambar 2.2 Mapping dari PIN ATmega 328
+7

Referensi

Dokumen terkait

Kondisi karakteristik perlintasan sebelum pembangunan flyover adalah adanya perlintasan sebidang antara jalan raya dengan rel kereta api dengan waktu tunggu setiap

8ika kadar hormon tiroid tinggi dan kadar hormon !H rendah, hal ini mengindikasikan kelenjar tiroid terlalu aktif yang disebabkan oleh adanya suatu penyakit.. 1isa

Untuk meminimalisir pelanggaran terhadap rambu lalu lintas dan meningkatkan pemahaman tentang rambu-rambu lalu lintas, bagi pemuda mulai dari usia dini yang

Penelitian ini, mununjukkan bahwa ox-LDL akan mengaktivasi NFкB dengan terjadinya translokasi faktor transkripsi tersebut ke dalam inti sel yang dalam kondisi

1. Memperoleh gambaran tentang bimbingan pra nikah yang sesuai buku bimbingan pra nikah di kantor KUA. Melihat pandangan pasangan pengantin yang telah ditatar dengan

inklusif antara lain adalah (1) pengembangan dan pelaksanaan kurikulum yang fleksibel, (2) modifikasi bahan ajar, model pembelajaran dan sistem penilaian, (3) bantuan

(2) Perencanaan penggunaan peralatan mekanikal elektrikal dalam upaya untuk efisiensi energi dan pemenuhan kriteria teknis bangunan gedung hijau sebagaimana dimaksud

Dari hasil perhitungan waktu tambahan yang dibutuhkan oleh perusahaan agar target produksi dapat tercapai adalah dengan menambah waktu kerja yaitu kurang lebih 1,5 jam