Perancangan Prototipe Smart Building Berbasis Arduino UNO

(1)

Diajukan untuk memenuhi salah satu persyaratan dalam menyelesaikan pendidikan sarjana (S-1) pada Departemen Teknik Elektro

Oleh :

NAMA : MARATUR GABE SIMANJUNTAK

NIM : 060402011

DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA MEDAN

2012


(2)

Terkadang kita harus meninggalkan rumah dalam keadaan kosong untuk waktu yang lama dan kita sering berpikir untuk menghidupkan lampu di suatu ruangan di rumah kita ketika malam hari dan mematikannya ketika pagi hari. Tekadang kita juga lupa untuk mematikan sebuah alat elektronik ketika kita meninggalkan rumah dan kita tidak memiliki waktu yang cukup untuk kembali dan mematikannya. Kita dapat mengatasi masalah tersebut dengan membangun sebuah smart building. Pada smart building setiap peralatan listrik yang berada di dalamnya dihubungkan ke sebuah perangkat yang dapat memantau dan mengontrol peralatan tersebut. Perangkat tersebut terhubung ke jaringan komputer, sehingga dapat dikendalikan melalui jarak jauh

Tugas akhir ini membahas bagaimana merancang dan mengimplementasikan prototipe smart building berbasis arduino uno. Peralatan listrik dihubungkan ke protototipe yang dirancang kemudian dikendalikan melalui aplikasi web browser yang terdapat pada komputer pribadi atau telepon genggam. Arduino Uno adalah arduino board yang menggunakan mikrokontroler ATmega328 sebagai chip utamanya. Arduino uno diprogram menggunakan bahasa pemrograman arduino.


(3)

Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala rahmat dan karunia yang dilimpahkan sehingga penulis dapat menyelesaikan Tugas Akhir ini, yang berjudul:

PERANCANGAN PROTOTIPE SMART BUILDING BERBASIS ARDUINO UNO

Adapun Tugas Akhir ini di buat untuk memenuhi syarat untuk menyelesaikan pendidikan dan memperoleh gelar Sarjana Teknik di Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara.

Selama menjalani proses pendidikan dan menyelesaikan Tugas Akhir ini, penulis menerima bantuan, bimbingan serta dukungan dari berbagai pihak. Untuk itu dengan kerendahan hati, penulis ingin menyampaikan terimakasih yang tulus kepada:

1. Kedua Orang tua saya yang tercinta P. Simanjuntak dan E. Sianturi, dan kepada abang dan kakak saya yang selalu memberi dukungan, doa, dan kasih sayang kepada saya.

2. Fakhruddin Rizal Batubara, S.T., M.T.I. selaku Dosen Pembimbing Tugas Akhir, yang atas bantuan, dukungan dan arahan beliau saya dapat menyelesaikan tugas akhir saya.

3. Bapak Ir. Zahiful Bahri, MSc. selaku dosen wali penulis, atas bimbingan dan arahannya dalam menyelesaikan perkuliahan.

4. Bapak Ir. Surya Tarmizi Kasim, M.Si selaku Ketua Departemen Teknik Elektro FT-USU dan Bapak Rahmad Fauzi, ST, MT selaku Sekretaris Departemen Teknik Elektro Fakultas Teknik, Universitas Sumatera Utara.


(4)

disisa waktu akademis, atas bantuan dan dukungannya selama ini.

Penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kekurangan. Kritik dan saran dari pembaca sangat penulis harapkan untuk menyempurnakan Tugas Akhir ini.

Akhir kata semoga Tugas Akhir ini bermanfaat bagi kita semua.

Medan, November 2012

Penulis


(5)

LEMBAR PENGESAHAN

ABSTRAK ... i

KATA PENGANTAR ... ii

DAFTAR ISI ... iv

DAFTAR GAMBAR ... vii

BAB I PENDAHULUAN 1.1 Latar Belakang Masalah ... 1

1.2 Rumusan Masalah ... 2

1.3 Tujuan Penulisan ... 2

1.4 Batasan Masalah ... 3

1.5 Metode Penelitian ... 3

1.6 Sistematika Penulisan ... 4

BAB II DASAR TEORI 2.1 Smart Building ... 6

2.2 Arduino ... 7

2.2.1 Arduino Uno ... 8

2.2.1.1 Pin Masukan dan Keluaran Arduino ... 9

2.2.1.2 Sumber Daya dan Pin Tegangan Arduino Uno ... 11

2.2.1.3 Peta Memori Arduino Uno ... 12

2.2.1.3.1 Memori Program ... 12

2.2.1.3.2 Memori Data ... 13

2.2.1.3.3 Memori Data EEPROM ... 14

2.2.2 Arduino Ethernet Shield ... 14

2.2.3 Bahasa Pemrograman Arduino ... 15

2.2.3.1 Struktur ... 16


(6)

2.2.3.4 PROGMEM ... 20

2.2.4 Arduino Development Environment ... 23

2.3 Relay ... 26

2.4 Transistor NPN 2N2222 ... 27

2.5 HTTP Request Message ... 28

2.6 Query String ... 30

BAB III PERANCANGAN PERANGKAT 3.1 Gambaran Umum Sistem ... 32

3.2 Perancangan Perangkat Keras ... 33

3.2.1 Arduino Web Server ... 34

3.2.2 Rangkaian Pengendali Relay ... 35

3.3 Perancangan Perangkat Lunak ... 38

3.3.1 Halaman Web Smart Building ... 39

3.3.2 Inisialisasi Program ... 42

3.3.3 Fungsi Setup ... 44

3.3.4 Fungsi Loop ... 45

3.3.5 Fungsi Kerjakan ... 48

BAB IV PENGUJIAN DAN ANALISA 4.1 Metode Pengujian ... 50

4.2 Pengujian Rangkaian Pengendali Relay ... 50

4.3 Pengujian Arduino Web Server ... 51

4.4 Pengujian Keseluruhan ... 53

4.5 Analisa Prototipe Smart Building ... 54

BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan ... 56

5.2 Saran ... 56


(7)

DAFTAR PUSTAKA ... 58 LAMPIRAN A ... 59 LAMPIRAN B ... 63


(8)

Gambar 2.1 Blok Diagram Arduino Board ... 8

Gambar 2.2 Arduino Uno ... 9

Gambar 2.3 Peta Memori Program ATMega 328 ... 12

Gambar 2.4 Peta Memori Data ATMega 328 ... 13

Gambar 2.5 Ethernet Shield ... 15

Gambar 2.6 Arduino Development Environment ... 24

Gambar 2.7 1. Kumparan tidak diberi arus 2. Kumparan diberi arus ... 27

Gambar 2.8 Transistor 2N2222 ... 28

Gambar 3.1 Diagram Blog Sistem ... 32

Gambar 3.2 Arduino Web Server ... 33

Gambar 3.3 Konfigurasi Bus SPI Untuk Ethernet Shield ... 34

Gambar 3.4 Rangkaian Pengendali Relay ... 35

Gambar 3.5 Rangkaian Keseluruhan... 37

Gambar 3.6 Diagram Alir Prototipe Smart Building ... 39

Gambar 3.7 Halaman Web Smart Building ... 40

Gambar 4.1 Konfigurasi Alamat IP Komputer ... 51

Gambar 4.2 Tampilan Command Prompt Jika Koneksi Berhasil ... 52

Gambar 4.3 Tampilan Halaman Web Smart building ... 52

Gambar 4.4 Tampilan Halaman Web Ketika Seluruh Lampu Hidup ... 53


(9)

Terkadang kita harus meninggalkan rumah dalam keadaan kosong untuk waktu yang lama dan kita sering berpikir untuk menghidupkan lampu di suatu ruangan di rumah kita ketika malam hari dan mematikannya ketika pagi hari. Tekadang kita juga lupa untuk mematikan sebuah alat elektronik ketika kita meninggalkan rumah dan kita tidak memiliki waktu yang cukup untuk kembali dan mematikannya. Kita dapat mengatasi masalah tersebut dengan membangun sebuah smart building. Pada smart building setiap peralatan listrik yang berada di dalamnya dihubungkan ke sebuah perangkat yang dapat memantau dan mengontrol peralatan tersebut. Perangkat tersebut terhubung ke jaringan komputer, sehingga dapat dikendalikan melalui jarak jauh

Tugas akhir ini membahas bagaimana merancang dan mengimplementasikan prototipe smart building berbasis arduino uno. Peralatan listrik dihubungkan ke protototipe yang dirancang kemudian dikendalikan melalui aplikasi web browser yang terdapat pada komputer pribadi atau telepon genggam. Arduino Uno adalah arduino board yang menggunakan mikrokontroler ATmega328 sebagai chip utamanya. Arduino uno diprogram menggunakan bahasa pemrograman arduino.


(10)

PENDAHULUAN

1.1Latar Belakang Masalah

Kemajuan dan perkembangan dunia terus melaju dan berkembang dengan pesat. Kemajuan dan perkembangan dunia ini terjadi di berbagai bidang, baik di bidang ekonomi, sosial budaya, maupun bidang-bidang eksakta dan teknologi. Hal ini mendorong manusia untuk menemukan hal-hal yang baru guna mempermudah dan mengoptimalkan aktivitas manusia sehari-hari.

Terkadang kita harus meninggalkan rumah dalam keadaan kosong untuk waktu yang lama dan kita sering berpikir untuk menghidupkan lampu di suatu ruangan di rumah kita ketika malam hari dan mematikannya ketika pagi hari. Tekadang kita juga lupa untuk mematikan sebuah alat elektronik ketika kita meninggalkan rumah dan kita tidak memiliki waktu yang cukup untuk kembali dan mematikannya. Kita dapat mengatasi masalah tersebut dengan membangun sebuah smart building.

Smart building terdiri dari dua kata yaitu smart yang berarti pintar dan building yang berarti bangunan. Jadi secara sederhana smart building berarti bangunan yang pintar. Menurut International Business Machines (IBM) smart building adalah infrastuktur fisik dan digital yang terintegrasi, yang dikelola dengan baik sehingga menyediakan layanan hunian yang optimal dengan cara yang handal, hemat biaya dan berkelanjutan. Sedangkan Cisco berpendapat smart building adalah bangunan yang pengembangannya berfokus pada mengidentifikasi ahli yang tepat pada lokasi dan pemilihan material untuk


(11)

sederhana, fleksibel dan terukur untuk bangunan, dan memasukkan managemen daya untuk system jaringan [11]

Dari uraian diatas dapat ditarik sebuah definisi untuk prototipe smart building yang dirancang yaitu sebuah bangunan yang terintegrasi dengan sebuah perangkat yang dapat dapat memantau dan mengontrol peralatan listrik pada bangunan tersebut. Perangkat tersebut terhubung ke jaringan komputer, sehingga dapat dikendalikan melalui jarak jauh. Hal ini memberi kemudahan dalam mengontrol peralatan listrik di rumah kita

.

Perangkat yang dirancang menggunakan Arduino Uno sebagai sebuah embedded web server dan pengendali relay yang terhubung ke setiap peralatan listrik. Peralatan listrik dipantau dan dikontrol melalui halaman web yang berada pada embedded web server yang diakses melalui web browser.

1.2Rumusan Masalah

Berdasarkan latar belakang yang telah dijelaskan, maka dapat diambil suatu rumusan masalah sebagai berikut: “Bagaimana merancang dan mengimplementasikan prototipe smart building berbasis arduino uno”

1.3Tujuan Penulisan

Penulisan tugas akhir ini bertujuan untuk merancang prototipe smart bulding berbasis arduino uno, dimana peralatan listrik yang berada di dalamnya


(12)

1.4Batasan Masalah

Untuk menghindari pembahasan yang meluas maka dalam tugas akhir ini ditetapkan batasan-batasan masalah sebagai berikut:

1. Alat yang dirancang hanya sebuah prototipe. 2. Alat dikontrol menggunakan sebuah web browser.

3. Peralatan listrik yang dikontrol bekerja pada tegangan 220 volt.

1.5Metode Penelitian

Untuk dapat menyelesaikan tugas akhir ini maka penulis menerapkan beberapa metode penelitian diantaranya :

1. Pembelajaran menggunakan literatur

Metode ini dilaksanakan dengan membaca teori-teori yang berkaitan dengan topik tugas akhir ini, dari buku-buku referensi baik yang dimiliki oleh penulis atau di perpustakaan dan juga dari artikel-artikel, jurnal, internet dan lain-lain. 2. Diskusi

Berupa tanya jawab tentang topik tugas akhir ini dengan dosen pembimbing yang telah ditunjuk oleh pihak departemen Teknik Elektro USU dan teman-teman sesama mahasiswa.

3. Perancangan

Melakukan perancangan berdasarkan pembelajaran secara literatur maupun diskusi.


(13)

BAB I. PENDAHULUAN

Bab ini merupakan pendahuluan yang berisi tentang latar belakang masalah, tujuan dan manfaat penulisan, batasan masalah, metode penulisan, dan sistematika penulisan.

BAB II. DASAR TEORI

Bab ini membahas sekilas mengenai fungsi dan fitur kompnen yang digunakan dalam tugas akhir ini. Pada bab ini juga dibahas mengenai bahasa pemrograman yang digunakan untuk membuat perangkat lunak arduino, serta Integrated Development Environtment (IDE) yang digunakan dalam proses pembuatan perangkat lunak.

BAB III. PERANCANGAN PERANGKAT

Bab ini membahas mengenai perancangan perangkat keras dan perangkat lunak yang akan ditanamkan dalam Arduino Uno.

BAB IV. PENGUJIAN DAN ANALISA

Bab ini membahas tentang pengujian dan analisa terhadap sistem yang telah dirancang.


(14)

Bab ini berisi kesimpulan dari hasil perancangan perangkat keras dan perangkat lunak secara keseluruhan dan saran-saran yang mungkin untuk pengembangan lebih lanjut.


(15)

6

BAB II

DASAR TEORI

2.1Smart Building

Perkembangan teknologi melaju dengan sangat pesat. Perkembangan teknologi ini merupakan hasil kerja keras dari rasa ingin tahu manusia terhadap suatu hal yang pada akhirnya diharapkan akan mempermudah kehidupan manusia. Salah satu cara untuk mempermudah kehidupan manusia adalah dengan membangun Smart Building.

Smart Building sudah menjadi salah satu topik pembahasan dalam karya tulis fiksi ilmiah selama bertahun-tahun, namun baru mulai dicoba untuk diwujudkan pada awal abad ke 20 ketika pemakaian energi listrik telah meluas hingga ke rumah-rumah dan mulai majunya teknologi informasi.

Smart Building mengacu pada penggunaan teknologi informasi dan komputer untuk mengendalikan peralatan yang berada di dalam bangunan tersebut (seperti jedela atau lampu). Sistem yang beropersi dalam smart building dapat berupa sistem kontrol jarak jauh yang sederhana dari lampu-lampu hingga sebuah sistem yang berbasis komputer atau mikrokontroler yang memiliki tingkat kecerdasan yang bervariasi yang secara otomatis mengontrol peralatan yang berada di dalam bangunan.

Elemen dalam sebuah sistem smart building terdiri dari sensor(seperti sensor cahaya atau sensor suhu), pengontrol (seperti komputer atau mikrokontroler) dan aktuator (seperti motor, relay, servo atau sakelar lampu). Sebuah antarmuka antara manusia dengan mesin diperlukan, agar pemilik


(16)

bangunan dapat berinteraksi dengan sistem untuk memonitor atau mengontrolnya. Antarmuka ini dapat berupa terminal khusus atau aplikasi yang berjalan pada telepon genggam atau komputer tablet. Antarmuka tersebut berkomunikasi dengan sitem melalui jaringan kabel atau wireless menggunakan satu atau lebih protokol.

2.2Arduino

Arduino adalah platform pembuatan prototipe elektronik yang bersifat open-source hardware yang berdasarkan pada perangkat keras dan perangkat lunak yang fleksibel dan mudah digunakan. Arduino ditujukan bagi para seniman, desainer, dan siapapun yang tertarik dalam menciptakan objek atau lingkungan yang interaktif.

Arduino pada awalnya dikembangkan di Ivrea, Italia. Nama Arduino adalah sebuah nama maskulin yang berarti teman yang kuat. Platform arduino terdiri dari arduino board, shield, bahasa pemrograman arduino, dan arduino development environment. Arduino board biasanya memiliki sebuah chip dasar mikrokontroler Atmel AVR ATmega8 berikut turunannya. Blok diagram arduino board yang sudah disederhanakan dapat dilihat pada Gambar 2.1. Shield adalah sebuah papan yang dapat dipasang diatas arduino board untuk menambah kemampuan dari arduino board.

Bahasa pemrograman arduino adalah bahasa pemrograman yang umum digunakan untuk membuat perangkat lunak yang ditanamkan pada arduino board. Bahasa pemrograman arduino mirip dengan bahasa pemrograman C++.


(17)

Gambar 2.1 Blok Diagram Arduino Board

Arduino Development Environment adalah perangkat lunak yang digunakan untuk menulis dan meng-compile program untuk arduino. Arduino Development Environment juga digunakan untuk meng-upload program yang sudah di-compile ke memori program arduino board.

2.2.1 Arduino Uno

Arduino Uno adalah arduino board yang menggunakan mikrokontroler ATmega328. Arduino Uno memiliki 14 pin digital (6 pin dapat digunakan sebagai output PWM), 6 input analog, sebuah 16 MHz osilator kristal, sebuah koneksi USB, sebuah konektor sumber tegangan, sebuah header ICSP, dan sebuah tombol reset. Arduino Uno memuat segala hal yang dibutuhkan untuk mendukung sebuah mikrokontroler. Hanya dengan menhubungkannya ke sebuah komputer melalui USB atau memberikan tegangan DC dari baterai atau adaptor AC ke DC sudah dapat membuanya bekerja. Arduino Uno menggunakan ATmega16U2 yang diprogram sebagai USB-to-serial converter untuk komunikasi serial ke computer melalui port USB. Tampak atas dari arduino uno dapat dilihat pada Gambar 2.2.

Adapun data teknis board Arduino UNO R3 adalah sebagai berikut: ● Mikrokontroler : ATmega328


(18)

● Tegangan Input (recommended) : 7 - 12 V ● Tegangan Input (limit) : 6-20 V

● Pin digital I/O : 14 (6 diantaranya pin PWM) ● Pin Analog input : 6

● Arus DC per pin I/O : 40 mA ● Arus DC untuk pin 3.3 V : 150 mA

● Flash Memory : 32 KB dengan 0.5 KB digunakan untuk bootloader ● SRAM : 2 KB

● EEPROM : 1 KB

● Kecepatan Pewaktuan : 16 Mhz

Gambar 2.2 Arduino Uno

2.2.1.1Pin Masukan dan Keluaran Arduino Uno

Masing-masing dari 14 pin digital arduino uno dapat digunakan sebagai masukan atau keluaran menggunakan fungsi pinMode(), digitalWrite() dan digitalRead(). Setiap pin beroperasi pada tegangan 5 volt. Setiap pin mampu menerima atau menghasilkan arus maksimum sebasar 40 mA dan memiliki


(19)

resistor pull-up internal (diputus secara default) sebesar 20-30 KOhm. Sebagai tambahan, beberapa pin masukan digital memiliki kegunaan khusus yaitu:

• Komunikasi serial: pin 0 (RX) dan pin 1 (TX), digunakan untuk menerima(RX) dan mengirim(TX) data secara serial.

• External Interrupt: pin 2 dan pin 3, pin ini dapat dikonfigurasi untuk memicu sebuah interrupt pada nilai rendah, sisi naik atau turun, atau pada saat terjadi perubahan nilai.

• Pulse-width modulation (PWM): pin 3,5,6,9,10 dan 11, menyediakan keluaran PWM 8-bit dangan menggunakan fungsi analogWrite().

• Serial Peripheral Interface (SPI): pin 10 (SS), 11 (MOSI), 12 (MISO) dan 13 (SCK), pin ini mendukung komunikasi SPI dengan menggunakan SPI library.

• LED: pin 13, terdapat built-in LED yang terhubung ke pin digital 13. Ketika pin bernilai HIGH maka LED menyala, sebaliknya ketika pin bernilai LOW maka LED akan padam.

Arduino Uno memiliki 6 masukan analog yang diberi label A0 sampai A5, setiap pin menyediakan resolusi sebanyak 10 bit (1024 nilai yang berbeda). Secara default pin mengukur nilai tegangan dari ground (0V) hingga 5V, walaupun begitu dimungkinkan untuk mengganti nilai batas atas dengan menggunakan pin AREF dan fungsi analogReference(). Sebagai tambahan beberapa pin masukan analog memiliki fungsi khusus yaitu pin A4 (SDA) dan pin A5 (SCL) yang digunakan untuk komunikasi Two Wire Interface (TWI) atau Inter Integrated Circuit (I2C) dengan menggunakan Wire library.


(20)

2.2.1.2Sumber Daya dan Pin Tegangan Arduino Uno

Arduino uno dapat diberi daya melalui koneksi USB (Universal Serial Bus) atau melalui power supply eksternal. Jika arduino uno dihubungkan ke kedua sumber daya tersebut secara bersamaan maka arduino uno akan memilih salah satu sumber daya secara otomatis untuk digunakan. Power supplay external (yang bukan melalui USB) dapat berasal dari adaptor AC ke DC atau baterai. Adaptor dapat dihubungkan ke soket power pada arduino uno. Jika menggunakan baterai, ujung kabel yang dibubungkan ke baterai dimasukkan kedalam pin GND dan Vin yang berada pada konektor POWER.

Arduino uno dapat beroperasi pada tegangan 6 sampai 20 volt. Jika arduino uno diberi tegangan di bawah 7 volt, maka pin 5V akan menyediakan tegangan di bawah 5 volt dan arduino uno munkin bekerja tidak stabil. Jika diberikan tegangan melebihi 12 volt, penstabil tegangan kemungkinan akan menjadi terlalu panas dan merusak arduino uno. Tegangan rekomendasi yang diberikan ke arduino uno berkisar antara 7 sampai 12 volt.

Pin-pin tegangan pada arduino uno adalah sebagai berikut:

• Vin adalah pin untuk mengalirkan sumber tegangan ke arduino uno ketika menggunakan sumber daya eksternal (selain dari koneksi USB atau sumber daya yang teregulasi lainnya). Sumber tegangan juga dapat disediakan melalui pin ini jika sumber daya yang digunakan untuk arduino uno dialirkan melalui soket power.

• 5V adalah pin yang menyediakan tegangan teregulasi sebesar 5 volt berasal dari regulator tegangan pada arduino uno.


(21)

• 3V3 adalah pin yang meyediakan tegangan teregulasi sebesar 3,3 volt berasal dari regulator tegangan pada arduino uno.

• GND adalah pin ground.

2.2.1.3Peta Memori Arduino Uno

Arduino Uno adalah arduino board yang menggunakan mikrokontroler ATmega328. Maka peta memori arduino uno sama dengan peta memori pada mikrokontroler ATmega328.

2.2.1.3.1 Memori Program

ATMega328 memiliki 32K byte On-chip In-System Reprogrammable Flash Memory untuk menyimpan program. Memori flash dibagi kedalam dua bagian, yaitu bagian program bootloader dan aplikasi seperti terlihat pada Gambar 2.3. Bootloader adalah program kecil yang bekerja pada saat sistem dimulai yang dapat memasukkan seluruh program aplikasi ke dalam memori prosesor.


(22)

2.2.1.3.2 Memori Data

Memori data ATMega328 terbagi menjadi 4 bagian, yaitu 32 lokasi untuk register umum, 64 lokasi untuk register I/O, 160 lokasi untuk register I/O tambahan dan sisanya 2048 lokasi untuk data SRAM internal. Register umum menempati alamat data terbawah, yaitu 0x0000 sampai 0x001F. Register I/O menempati 64 alamat berikutnya mulai dari 0x0020 hingga 0x005F. Register I/O tambahan menempati 160 alamat berikutnya mulai dari 0x0060 hingga 0x00FF. Sisa alamat berikutnya mulai dari 0x0100 hingga 0x08FF digunakan untuk SRAM internal. Peta memori data dari ATMega 328 dapat dilihat pada Gambar 2.4.


(23)

2.2.1.3.3 Memori Data EEPROM

Arduino uno terdiri dari 1 KByte memori data EEPROM. Pada memori EEPROM, data dapat ditulis/dibaca kembali dan ketika catu daya dimatikan, data terakhir yang ditulis pada memori EEPROM masih tersimpan pada memori ini, atau dengan kata lain memori EEPROM bersifat nonvolatile. Alamat EEPROM dimulai dari 0x000 hingga 0x3FF

2.2.2 Arduino Ethernet Shield

Ethernet Shield menambah kemampuan arduino board agar terhubung ke jaringan komputer. Ethernet shield berbasiskan cip ethernet Wiznet W5100. Ethernet library digunakan dalam menulis program agar arduino board dapat terhubung ke jaringan dengan menggunakan arduino ethernet shield.

Pada ethernet shield terdapat sebuah slot micro-SD, yang dapat digunakan untuk menyimpan file yang dapat diakses melalui jaringan. Onboard micro-SD card reader diakses dengan menggunakan SD library.

Arduino board berkominikasi dengan W5100 dan SD card mengunakan bus SPI (Serial Peripheral Interface). Komunikasi ini diatur oleh library SPI.h dan Ethernet.h. Bus SPI menggunakan pin digital 11, 12 dan 13 pada Arduino Uno. Pin digital 10 digunakan untuk memilih W5100 dan pin digital 4 digunakan untuk memilih SD card. Pin-pin yang sudah disebutkan sebelumnya tidak dapat digunakan untuk input/output umum ketika kita menggunakan ethernet shield.

Karena W5100 dan SD card berbagi bus SPI, hanya salah satu yang dapat aktif pada satu waktu. Jika kita menggunakan kedua perangkat dalam program kita, hal ini akan diatasi oleh library yang sesuai. Jika kita tidak menggunakan


(24)

salah satu perangkat dalam program kita, kiranya kita perlu secara eksplisit men-deselect-nya. Untuk melakukan hal ini pada SD card, set pin 4 sebagai output dan menuliskan logika tinggi padanya, sedangkan untuk W5100 yang digunakan adalah pin 10. DFRduino Ethernet shield adalah sebuah clone dari arduino Ethernet shield yang dibuat oleh DFRobot. Penampakan DFRduino Ethernet shield dapat dilihat pada Gambar 2.5.

Gambar 2.5 Ethernet Shield

2.2.3 Bahasa Pemrograman Arduino

Arduino board merupakan perangkat yang berbasiskan mikrokontroler. Perangkat lunak (software) merupakan komponen yang membuat sebuah mikrokontroller dapat bekerja. Arduino board akan bekerja sesuai dengan perintah yang ada dalam perangkat lunak yang ditanamkan padanya.

Bahasa Pemrograman Arduino adalah bahasa pemrograman utama yang digunakan untuk membuat program untuk arduino board. Bahasa pemrograman arduino menggunakan bahasa pemrograman C sebagai dasarnya.


(25)

Karena menggunakan bahasa pemrograman C sebagai dasarnya, bahasa pemrograman arduino memiliki banyak sekali kemiripan, walaupun beberapa hal telah berubah.

2.2.3.1Struktur

Setiap program dalam arduino board terdiri dari dua fungsi utama yaitu setup() dan loop(). Instruksi yang berada dalam fungsi setup() dieksekusi hanya sekali, yaitu ketika arduino board pertama kali dihidupkan. Biasanya instuksi yang berada pada fungsi setup() merupakan konfigurasi dan inisialisasi dari arduino board. Instruksi yang berada pada fungsi loop() dieksekusi berulang-ulang hingga arduino board dimatikan (catu daya diputus). Fungsi loop() merupakan tugas utama dari arduino board. Jadi setiap program yang menggunakan bahasa pemrograman arduino memilliki struktur sebagai berikut:


(26)

2.2.3.2Konstanta

Konstanta adalah variable yang sudah ditetapkan sebelumnya dalam bahasa pemrograman arduino. Konstanta digunakan agar program lebih mudah untuk dibaca dan dimengerti. Konstanta dibagi menjadi 3 kelompok yaitu:

1. Konstanta yang digunakan untuk menunjukkan tingkat logika (konstanta Boolean), yaitu true dan false

2. Konstanta untuk menunjukkan keadaan pin, yaitu HIGH dan LOW

3. Konstanta untuk menunjukkan fungsi pin, yaitu INPUT, INPUT_PULLUP dan OUTPUT

Konstanta yang digunakan untuk menunjukkan benar atau salah dalam bahasa pemrograman arduino adalah true dan false. False lebih mudah didefinisikan daripada true. False didefinisikan sebagai 0(nol). True sering didefinisikan sebagai 1(satu), yang mana hal ini benar, tetapi true memiliki definisi yang lebih luas. Setiap integer yang bukan nol adalah true dalam pengertian Boolean. Jadi -2, 3 dan -100 semuanya didefinisikan sebagai true, juga dalam pengertian Boolean. Tidak seperti konstanta yang lain true dan false diketik dengan menggunakan huruf kecil.

Ketika membaca atau menulis ke sebuah pin digital, terdapat hanya dua nilai yang dapat diberikan atau diterima, yaitu HIGH dan LOW. HIGH memiliki arti yang berbeda tergantung apakah sebuah pin dikonfigurasi menjadi masukan atau keluaran. Ketika pin dikonfigurasi sebagai masukan dengan fungsi pinMode(), lalu kemudian dibaca dengan fungsi digitalRead(), mikrokontroler akan melaporkan nilai HIGH jika tegangan yang ada pada pin tersebut berada pada tegangan 3 volt atau lebih.


(27)

Ketika sebuah pin dikonfigurasi sebagai masukan, dan kemudian dibuat bernilai HIGH dengan fungsi digitalWrite(), maka resistor pull-up internal dari chip ATmega akan aktif, yang akan membawa pin masukan ke nilai HIGH kecuali pin tersebut ditarik (pull-down) ke nilai LOW oleh sirkuit dari luar.

Ketika pin dikonfigurasi sebagai keluaran dengan fungsi pinMode(), dan diset ke nilai HIGH dengan fungsi digitalWrite(), maka pin berada pada tegangan 5 volt. Dalam keadaan ini, pin tersebut dapat memberikan arus, sebagai contoh, untuk menghidupkan LED yang terhubung seri dengan resistor dan ground, atau pin lain yang dikonfigurasi sebagai keluaran dan diberi nilai LOW.

Sama seperti HIGH, LOW juga memiliki arti yang berbeda bergantung pada konfigurasi pin. Ketika pin dikonfigurasi sebagai masukan, maka mikrokontroler akam melaporkan nilai LOW jika tegangan yang terdapat pada pin berada pada tegangan 2 volt atau kurang. Ketika pin dikonfigurasi sebagai keluaran dan diberi nilai LOW maka pin berada pada tegangan 0 volt.

Setiap pin pada arduino dapat dikonfigurasi sebagai masukan, masukan dengan resistor pull-up atau keluaran. Untuk mengkonfigurasi fungsi pin pada arduino digunakan konstanta INPUT, INPUT_PULLUP dan OUTPUT. Pin arduino yang dikonfigurasi sebagai masukan dengan fungsi pinMode() dikatakan berada dalam kondisi berimpedansi tinggi. Pin yang dikonfigurasi sebagai masukan memiliki permintaan yang dangat kecil kepada sikuit yang di-sampling-nya, setara dengan sebuah resistor 100 Megaohm dipasang seri dengan pin tersebut. Hal ini membuat pin tersebut berguna untuk membaca sensor, tetapi tidak untuk menghidupkan sebuah LED.


(28)

Cip ATmega pada arduino memiliki resisitor pull-up internal (resistor yang terhubung ke sumber tegangan secara internal) yang dapat digunakan. Untuk menggunakan resistor pull-up internal ini kita menggunakan konstatnta INPUT_PULLUP pada fungsi pinMode().

Pin yang dikonfigurasi menjadi sebuah keluaran dikatakan berada dalam kondisi berimpedansi rendah. Hal ini berarti pin tersebut dapat menyediakan sejumlah besar arus ke sirkuit yang lain. Pin pada ATmega mampu menyediakan arus hingga 40 mA.

2.2.3.3 Fungsi Masukan dan Keluaran Digital

Arduino memiliki 3 fungsi untuk masukan dan keluaran digital pada arduino board, yaitu pinMode(), digitalWrite() dan digitalRead().

Fungsi pinMode() mengkonfigurasi pin tertentu untuk berfungsi sebagai masukan atau keluaran. Sintaksis untuk fungsi pinMode() adalah sebagai berikut:

pinMode(pin , m ode)

Parameter: pin = angka dari pin digital yang akan dikonfigurasi

mode = konfigurasi yang diinginkan (INPUT, INPUT_PULLUP dan OUTPUT).

Fungsi digitalWrite() berfungsi untuk memberikan nilai HIGH atau LOW suatu digital pin. Sintaksis untuk fungsi digitalWrite() adalah sebagai berikut:


(29)

Parameter: pin = angka dari pin digital yang akan dikonfigurasi value = nilai yang diinginkan (HIGH atau LOW).

Fungsi digitalRead() bertujuan untuk membaca nilai yang ada pada pin arduino uno. Sintaksis untuk fungsi digitalRead() adalah sebagai berikut:

digitalRead(pin)

Parameter: pin = angka dari pin digital yang akan dibaca

Berikut ini adalah contoh penggunaan fungsi masukan dan keluaran digital dalam sebuah program:

int ledPin = 13; // LED terhubung ke pin digital 13

int inPin = 7; // pushbutton terhubung ke pin digital 7 int val = 0; // variable untuk menyimpan sebuah nilai void setup()

{

pinMode(ledPin, OUTPUT); // set pin digital 13 sebagai keluaran pinMode(inPin, INPUT); // set pin digital 13 sebagai masukan }

void loop() {

val = digitalRead(inPin); // baca nilai pin input

digitalWrite(ledPin, val); // sets LED sesuai dengan nilai val }

2.2.3.4PROGMEM

Terkadang program dibuat memerlukan memori yang lebih besar, misalnya kita perlu menyimpan banyak teks dalam sebuah program penampil LCD. Hal ini bisa kita atasi dengan menyimpan data pada flash memori (memori program). Besar memori program pada arduino uno adalah 32 KByte.


(30)

Kata kunci PROGMEM adalah sebuah variable modifier, PROGMEM hanya bisa digunakan untuk tipe data yang di definisikan pada library pgmspace.h. PROGMEM menjelaskan pada kompiler “letakkan informasi berikut pada memori program”, menggantikan SRAM, dimana biasanya informasi tersebut disimpan.

PROGMEM adalah bagian dari library pgmspace.h, jadi kita perlu memasukkan library pgmspace.h ke program kita. Sintaksis untuk menggunakan PROGMEM adalah sebagai berikut:

dataType variableName[] PROGMEM = {dataInt0, dataInt1, ...}; • dataType – tipe variable

• variableName – nama array data

Karena PROGMEM adalah sebuah variable modifier, tidak ada aturan yang baku untuk tempat peletakannya. Kompiler arduino menerima semua difinisi yang ditunjukkan di bawah.

dataType variableName[] PROGMEM = {}; dataType PROGMEM variableName[] = {}; PROGMEM dataType variableName[] = {};

PROGMEM juga bisa digunakan untuk menyimpan satu variabel, tetapi karena kerepotan dalam penggunaanya, sebaiknya hanya digunakan untuk menyimpan data yang sangat banyak, yang biasanya lebih mudah menyimpannya di dalam array.

Dalam menggunakan PROGMEM kita perlu melakukan 2 langkah prosedur. Pertama adalah menyimpan data pada memori program, kemudian kita menggunakan fungsi khusus, yang juga didefinisikan di library pgmspace.h, untuk membaca data tersebut dari memori program dan menuliskannya ke SRAM, sehingga kita dapat melakukan sesuatu dengan data tersebut.


(31)

Berikut adalah tipe data yang didukung oleh library pgmspace.h:

prog_char - a signed char (1 byte) -127 sampai 128 prog_uchar - an unsigned char (1 byte) 0 sampai 255

prog_int16_t - a signed int (2 bytes) -32,767 sampai 32,768 prog_uint16_t - an unsigned int (2 bytes) 0 sampai 65,535

prog_int32_t - a signed long (4 bytes) -2,147,483,648 sampai * 2,147,483,647.

prog_uint32_t - an unsigned long (4 bytes) 0 sampai 4,294,967,295

Berikut ini adalah contoh progam untuk menggunakan PROGMEM

#include <avr/pgmspace.h>

// simpan beberapa unsigned int

PROGMEM prog_uint16_t charSet[] = { 65000, 32796, 16843, 10, 11234};

// seimpan beberapa karakter

prog_uchar signMessage[] PROGMEM = {"UNIVERSITAS SUMATERA UTARA"};

unsigned int displayInt; int k; // variabel counter char myChar;

// baca int

displayInt = pgm_read_word_near(charSet + k) // baca karakter

myChar = pgm_read_byte_near(signMessage + k);

Di bawah ini adalah contoh program untuk menyimpan array string pada program memori. Karena string sendiri adalah sebuah array, contoh di bawah ini juga merupakan contoh penggunaan array dua dimensi.

#include <avr/pgmspace.h>

prog_char string_0[] PROGMEM = "String 0"; // "String 0" dst prog_char string_1[] PROGMEM = "String 1"; // adalah string prog_char string_2[] PROGMEM = "String 2"; // yang disimpan prog_char string_3[] PROGMEM = "String 3";

prog_char string_4[] PROGMEM = "String 4"; prog_char string_5[] PROGMEM = "String 5";

//buat table untuk menunjukkan string. PROGMEM const char *string_table[] = {

string_0, string_1,


(32)

string_2, string_3, string_4, string_5 };

char buffer[30]; //pastikan buffer cukup untuk menympan string

void setup() { Serial.begin(9600); } void loop() {

/*menggunakan table string pada memori program membutuhkan fungsi special untuk mengambil data tersebut.

fungsi strcpy_P ("buffer") menyalin sebuah string dari program memori sebuah string di SRAM (“buffer”).

Pastikan bahwa SRAM cukup untuk menampung setiap string yang diambil dari memori program*/

for (int i = 0; i < 6; i++) {

strcpy_P(buffer, (char*)pgm_read_word(&(string_table[i]))); // salin string ke buffer

Serial.println( buffer ); delay( 500 );

} }

2.2.4 Arduino Development Environment

Arduino Development Environment terdiri dari editor teks untuk menulis kode, sebuah area pesan, sebuah konsol, sebuah toolbar dengan tomol-tombol untuk fungsi yang umum dan beberapa menu. Arduino Development Environment terhubung ke arduino board untuk meng-upload program dan juga untuk berkomunikasi dengan arduino board.

Perangkat lunak yang ditulis menggunakan Arduino Development Environment disebut sketch. Sketch ditulis pada editor teks. Sketch disimpan dengan file berekstensi .ino. Area pesan memberikan memberikan informasi dan pesan error ketika kita menyimpan atau membuka sketch. Konsol menampilkan output teks dari Arduino Development Environment dan juga menampilkan pesan


(33)

error ketika kita mengkompile sketch. Pada sudut kanan bawah dari jendela Arduino Development Environment menunjukkan jenis board dan port seriak yang sedang digunakan. Tombol toolbar digunakan utuk mengecek dan mengupload sketch, membuat, membuka atau menyimpan sketch, dan menampilkan serial monitor.

Gambar 2.6 Arduino Development Environment Berikut ini adalah tombol-tombol toolbar serta fungsinya: Verify

mengecek error pada code program. Upload

meng-compile dan meng-upload program ke Arduino board. New

membuat sketch baru. Open


(34)

menampilkan sebuah menu dari seluruh sketch yang berada di dalam sketchbook.

Save

menyimpan sketch.

Serial Monitor

membuka serial monitor.

Dalam lingkungan arduino digunakan sebuah konsep yang disebut sketchbook, yaitu tempat standar untuk menumpan program (sketch). Sketch yang ada pada sketchbook dapat dibuka dari menu File > Sketchbook atau dari tombol open pada toolbar. Ketika pertama kali menjalankan arduino development environment, sebuah direktori akan dibuat secara otomatis untuk tempat penyimpana sketchbook. Kita dapat melihat atau mengganti lokasi dari direktori tersebut dari menu File > Preferences.

Serial monitor menampilkan data serial yang sedang dikirim dari arduino board. Untuk mengirim data ke board, masukkan teks dan klik tombol send atau tekan enter pada keyboard.

Sebelum meng-upload program, kita perlu mensetting jenis board dan port serial yang sedang kita gunakan melalui menu Tools > Board dan Tools > Serial Port. Pemilihan board berguna untuk mengeset parameter (contohnya: kecepatan mikrokontroler dan baud rate) yang digunakan ketika meng-compile dan meng-upload sketch.

Setelah memilih board dan port serial yang tepat, tekan tombol upload pada toolbar atau pilih menu File > Upload. Arduino board akan me-reset secara otomatis dan proses upload akan dimulai. Pada kebanyakan board, LED RX dan TX akan berkedip ketika program sedang di-upload. Arduino development


(35)

environment akan menampilkan pesan ketika proses upload telah selesai, atau menampilkan pesan error.

Ketika sedang meng-upload program, arduino bootloader sedang digunakan, Arduinp bootloader adalah sebuah program kecil yang telah ditanamkan pada mikrokontroler yang berada pada arduino board. Bootloader ini mengijinkan kita meng-upload program tanpa menggunakan perangkat keras tambahan.

2.3Relay

Relay adalah sakelar yang dioperasikan secara elektrik. Relay dipakai ketika sinyal berdaya rendah digunakan untuk mengontrol sebuah rangkaian (isolasi elektrik penuh terjadi antara rangkaian pengontrol dan rangkaian yang dikontrol) atau ketika beberapa sirkuit harus dikontrol oleh satu sinyal. Relay pada mulanya digunakan pada sirkuit telegram jarak jauh, mengulangi sinyal yang datang dari suatu sirkuit dan mentransmisikan kembali sinyal tersebut ke sirkuit yang lain. Relay digunakan secara luas dalam switching telepon dan juga pada komputer mula-mula untuk melakukan operasi logis.

Sebuah relay elektromagnetik sederhana terdiri dari kumparan kawat yang membungkus sebuah inti besi, sebuah kuk besi untuk menahan alur flux magnetik, sebuah angker (jangkar) besi yang dapat bergerak dan satu set atau lebih kontak. Angker tergantung pada kuk dan terhubung secara mekanik dengan kontak yang bergerak. Angker ditahan oleh pegas, sehingga ketika relay diputus ada celah udara dalam rangkaian magnetik.


(36)

Ketika arus listrik dilewatkan melalui kumparan maka akan dihasilkan medan elektromagnetik yang mengaktifkan angker, dan akibat dari bergeraknya kontak-yang-bergerak membuat terjadinya penyambungan atau pemutusan (bergantung pada konstruksi) dengan kontak-yang-diam. Ketika arus ke koil diputuskan, angker dikembalikan dengan paksa ke posisi awal, biasanya hal ini dilakukan oleh pegas, tetapi gaya gravitasi juga sering digunakan, umumnya pada starter motor industri. Pada umumnya relay diproduksi agar beroperasi dengan cepat. Pada aplikasi bertegangan rendah hal ini bertujuan untuk mengurangi kebisingan sedangkan pada aplikasi bertegangan tinggi untuk mengurangi terjadinya percikan api.

Gambar 2.7 1. Kumparan tidak diberi arus 2. Kumparan diberi arus

2.4Transistor NPN 2N2222

Transisitor 2N2222 adalah transistor bipolar NPN. Transistor 2N2222 digunakan untuk keperluan umum pada penguatan daya rendah dan aplikasi switching. Transistor ini didesain untuk arus rendah hingga sedang, daya rendah, tegangan sedang dan dapat beroperasi dengan kecepatan tinggi. Transistor 2N2222 dianggap sebagai transistor yang biasa, dan sering digunakan sebagai contoh khas sebuah transistor NPN.


(37)

Transitor 2N2222 memiliki penguatan arus DC (hFE) sebesar 100 dalam kondisi optimal. Besar tegangan saturasi kolektor-emiter (VCE(SAT)) transistor

2N2222 berkisar antara 0,3 volt sampai 1,6 volt sedangkan besar tegangan saturasi basis-emiter (VBE(SAT)) berkisar antara 1,2 volt sampai 2,6 volt. Penampakan

transistor 2N2222 dapat dilhat pada Gambar 2.8. Untuk spesifikasi transistor 2N2222 yang lebih lengkap dapat dilihat di datasheet 2N2222 yang terdapat pada lampiran B.

Gambar 2.8 Transistor 2N2222

2.5HTTP Request Message

Ketika web browser menjemput sebuah berkas dari web server, web browser menggunakan Hypertext Transfer Protocol (HTTP). HTTP adalah sebuah protokol request/respond, yang berarti computer mengirimkan sebuah permintaan (request) untuk berkas dan kemudian web server mengirim balik sebuah jawaban (respond).

Sebuah HTTP request message terdiri dari beberapa bagian yaitu:

Request-line


(38)

• Sebuah baris kosong

• Beberapa pesan opsional

Request-line dimulai dengan sebuah token method, diikuti oleh request-URI dan versi protocol, dan diakhiri dengan CRLF. Tiap elemen dipisahkan oleh karakter SP (spasi). Karakter CR (carriage return) dan LF (line feed). hanya boleh dipakai untuk menandai akhir dari request-line. Token method menunjukkan method yang dilaksanakan pada resource yang ditunjukkan oleh request-URI. Request-URI adalah sebuah Uniform Resource Identifier (URI), yaitu sebuah string yang memperkenalkan (menunjukkan) resource melalui nama, lokasi atau karakteristik yang lain. URI dapat diklasifikasikan menjadi penunjuk lokasi (URL), nama (URN) atau kedua-duanya. Sebuah Uniform Resource Name (URN) berfungsi seperti nama seseorang, sedangakan Uniform Resource Locator (URL) mirip dengan alamat dari seseorang tersebut. Dengan kata lain URN menunjukkan identitas sesuatu hal, sedangkan URL menyediakan sebuah cara untuk menemukan sesuatu hal tersebut.

Bagian header manunjukkan informasi tambahan kepada server mengenai permintaan (request) yang dikirim dan juga informasi mengenai client yang mengirimkan permintaan (request). Berikut ini adalah contoh HTTP request message sederhana:

GET /home.html HTTP/1.1 Host: 192.168.1.4


(39)

Baris pertama merupakan request-line. GET adalah token method yang dijalankan pada resource, /home.html adalah request-URI yang menunjukkan lokasi resource, HTTP/1.1 menunjukkan versi protocol yang digunakan oleh client. Baris kedua adalah bagian header, Host: 192.168.1.4 menunjukkan lokasi dari server. Baris terakhir adalah sebuah baris kosong yang menunjukkan akhir dari HTTP Request Message.

2.6Query string

Dalam World Wide Web (WWW), sebuah query string adalah bagian dari Uniform Resource Locator (URL) yang mengandung data yang diteruskan kepada aplikasi web. Ketika sebuah halaman web diminta melalui HTTP, server akan mencari sebuah berkas pada kumpulan berkas yang berada dalam server tersebut berdasarkan URL yang diberikan. Berkas ini dapat berupa sebuah berkas biasa atau sebuah program.Penggunaan query string mengijinkan data yang dikirim dari HTTP client (biasanya berupa sebuah web browser) ke server. Berikut ini adalah contoh URL yang memiliki sebuah query string:

http://server/path/program?query_string

Ketika server menerima permintaan untuk halaman tersebut, server mungkin menjalankan sebuah program, meneruskan query_string tanpa terjadi perubahan ke program tersebut. Tanda Tanya digunakan sebagai pemisah dan bukan bagian dari query string.

Jika URL yang diminta cocok dengan sebuah file bukan sebuah program maka seluruh query string akan diabaikan. Sebagai contoh ketika browser meminta halaman:


(40)

maka server akan mengirimkan halaman utama.html dan mengabaikan apa saja yang mengikuti tanda tanya (?). Tetapi query string 31231 tersebut tetap diterima oleh server dan dapat digunakan untuk keperluan lain seperti untuk identifikasi atau sebuah perintah untuk server tergantung pada sistem yang berjalan pada server. Karena query string adalah bagian dari URL maka query string juga akan ada di HTTP request message.


(41)

32

BAB III

PERANCANGAN PERANGKAT

3.1Gambaran Umum Sistem

Pada tugas akhir ini akan dirancang sebuah prototipe smart building berbasis arduino uno. Peralatan listrik yang berada pada smart building dapat dipantau dan dimatikan atau dihidupkan dari jarak jauh melalui web browser. Prototipe yang dirancang dan perangkat pengotrol terhubung melalui jaringan computer. Blok diagram sistem yang dirancang dapat dilihat pada Gambar 3.1.

Web Browser (cilent)

Peralatan Listrik

Relay Arduino Uno

(server) Ethernet Shield Perangkat User

(PC, Handphone)

Jaringan Komputer

Gambar 3.1 Diagram Blog Sistem

Berdasarkan blok diagram diatas, urutan kerja dari perangkat dapat dijelaskan sebagai berikut. Ketika perangkat dihidupkan, perangkat akan terhubung ke jaringan komputer dan mengecek apakah ada client yang meminta untuk dilayani. Client dalam hal ini adalah web browser, akan melakukan permintaan ke perangkan ketika pengguna memasukkan alamat IP perangkat ke


(42)

address bar pada web browser. Jika ada client yang ingin dilayani maka perangkat akan memulai koneksi dan menerima HTTP request message yang dikirim oleh client. Perangkat akan menyimpan beberapa karakter HTTP request message. Setelah akhir dari HTTP request message yang berupa sebuah baris kosong diterima, perangkat akan mencari perintah yang valid dari HTTP request message yang disimpan tadi dan mengontrol relay sesuai dengan perintah tersebut. Kemudian perangkat mengirimkan HTTP respond message dan halaman web yang menampilkan status dan tombol untuk mengatur peralatan listrik ke web browser (client).

3.2Perancangan Perangkat Keras 3.2.1 Arduno WebServer

Arduino Web Server adalah gabungan antara arduino uno dan ethernet shield. Ethernet shield dipasang di atas arduino uno. Gambar arduino web server dapat dilihat pada Gambar 3.2.


(43)

Arduino uno berkomunikasi dengan ethernet shield menggunakan bus SPI. Komunikasi SPI ini diatur oleh library SPI.h dan Ethernet.h. Bus SPI pada arduino uno menggunakan pin digital 11, 12 dan 13. Konfigurasi bus SPI pada arduino uno untuk berkomunikasi dengan ethernet shield dapat dilihat pada Gambar 3.3. Pin-pin arduino uno yang dipakai untuk berkomunikasi dengan ethernet shield tidak dapat digunakan untuk kemperluan yang lain.

Gambar 3.3 Konfigurasi Bus SPI Untuk Ethernet Shield

Arduino Web Server bertindak sebagai sebuah embedded web server, yang menyimpan halaman web sederhana yang menampilkan status peralatan listrik yang berada di dalam smart building dan tombol untuk mematikan atau menghidupkan peralatan listrik tersebut. Selain sebagai embedded web server arduino web server jugalah yang mengendalikan relay yang dihubungkan dengan peralatan listrik yang ingin dikendalikan. Dalam prototipe smart building, relay yang dikendalikan berjumlah 4 buah. Relay tersebut dihubungkan ke pin digital 2,3,5 dan 5 pada arduino uno.


(44)

3.2.2 Rangkaian Pengendali Relay

Tegangan keluaran pin arduino uno untuk logika 0 berkisar antara 0-2 volt dan untuk logika 1 berkisar antara 3-5 volt, sedangkan relay beroperasi pada tegangan 12 volt, maka dibutuhkan sebuah rangkaian pengendali relay, agar relay dapat bekerja. Rangkaian pengendali relay menggunakan transistor NPN 2N2222 sebagai sebuah sakelar yang dikendalikan oleh arus. Rangkaian pengendali relay dapat dilihat pada Gambar 3.4.

Gambar 3.4 Rangkaian Pengendali Relay

Dari hasil pengukuran dengan menggunakan multimeter tahanan koil relay adalah 410 ohm, sehingga arus yang mengalir pada koil adalah:

�� =��

�� =

12 �

410 Ω ≈0,029 � (3.1)

Keterangan: � = arus minimum koil

�� = tegangan relay �� = tahanan koil


(45)

Agar relay dapat bekerja optimal maka arus kolektor transistor (Ic) harus

lebih besar dari arus minimum koil, untuk memudahkan perhitungan digunakan 60 mA sebagai arus kolektor. Transistor 2N2222 memiliki penguatan arus DC (hFE) sebesar 100 dan VBE maksimal sebesar 2,6 volt. Sehingga arus minimum

basis (Ib) dan besar tahanan basis (Rb) maksimum adalah:

=

ℎ����

=

60 100��

= 0,6

��

(3.2)

=

��−���

=

(50,6 −2,6)��

= 4

�Ω

(3.3)

Keterangan: � = arus basis minimum

�� = arus kolektor

ℎ�� = penguatan arus DC

�� = tahanan basis maksimum

�� = tegangan keluaran pin arduino uno ��� = tegangan saturasi basis−emiter

Pada prototipe digunakan tahanan basis sebesar 1 kΩ yang masih memenuhi perhitungan diatas. Kumparan pada relay akan menghasilkan tegangan singkat yang besar ketika relay diputus dan ini dapat merusak rangkaian pengendali dan arduino uno. Untuk mencegah kerusakan sebuah dioda harus dihubungkan ke relay tersebut. Dioda dihubungkan secara terbalik sehingga dioda bekerja secara reverse dan menahan tegangan singkat yang dihasilkan relay tadi. Dioda yang digunakan adalah dioda 1N4004. Rangkaian keseluruhan dapat dilihat pada Gambar 3.5.


(46)

Gambar 3.5 Rangkaian Keseluruhan

Pin keluaran digital 2, 3, 5 dan 6 arduino uno dihubungkan ke rangkaian pengendali relay. Pin digital 2, 3, 5 dan 6 mengendalikan secara berurutan relay 1, relay 2, relay 3 dan relay 4. Relay kemudian dihubungkan ke peralatan yang ingin diatur. Sebagai sebuah petunjuk bahwa relay sedang berada pada posisi terhubung (peralatan listrik sedang menyala) maka sebuah LED juga dihubungkan ke setiap pin keluaran digtal 2, 3 ,5 dan 6. Agar arus yang mengalir pada LED sangat kecil tetapi cukup untuk menghidupkan LED digunakan tahanan sebesar 2,2 kΩ untuk membatasi arus. Sehingga arus yang mengalir pada LED adalah:

���

=

��−�

=

(52,2 −1,8)�Ω

= 1,45

��

(3.4)

Keterangan: ���� = arus yang mengalir pada LED

�� = tegangan keluaran pin arduino uno �� = tegangan jatuh LED


(47)

3.3Perancangan Perangkat Lunak

Perangkat lunak dibuat dengan menggunakan bahasa pemrograman arduino. Diagram alir perangkat lunak yang dirancang untuk prototipe smart building dapat dilihat pada Gambar 3.5. Ketika alat ini diberi catu daya, arduino uno akan menginisialisasi variabel yang akan digunakan dalam program. Kemudian arduino uno akan mengkonfigurasi pin 2,3,5 dan 6 menjadi pin keluaran dan juga mengkonfigurasi alamat IP. Setelah itu arduino akan memulai server dan menunggu koneksi dari client.

Jika ada client yang ingin terhubung ke arduino uno, maka arduino akan memulai koneksi dan menerima dan mengecek tiap karakter HTTP request message dari client. Arduino uno juga menyimpan 14 karakter pertama dari HTTP request message ke sebuah objek string bernama readString. Jika akhir dari HTTP request message telah dicapai maka, arduino uno akan mencari perintah yang valid dari objek readString. Kemudian arduino memanggil fungsi kerjakan, yaitu fungsi untuk mengontrol relay yang terhubung ke pin keluaran arduino uno. Setelah itu arduino uno akan mengirimkan HTTP respond message dan halaman web ke client. Setelah itu arduino uno akan mememutuskan koneksi ke client dan mengosongkan isi objek string readSting. Kode program smart building secara keseluruhan dapat dilihat pada lampiran A.


(48)

mulai

Set pin 2,3,5,dan 6 sebagai output. Set alamat IP arduino.

Mulai server.

Apakah ada client baru?

Terima karakter HTTP request message dari

client

Apakah c = ‘\n’ dan currentLineIsBlank =

true?

Cek perintah yang ada di readString Panggil fungsi kerjakan Kirim HTTP respond message dan halaman web ke client Delay 1 milidetik.

Putuskan koneksi. Kosongkan objek readString tidak ya Apakah jumlah karakter dalam objek

readString < 14? C=karakter yang

diterima

readString+=c

currentLineIsBlank = true

Apakah c=’\n’ Apakah c != ‘\r’ Lanjutkan ke karakter berikutnya

currentLineIsBlank = true currentLineIsBlank = false

ya ya

ya

tidak tidak tidak

tidak ya

inisialisasi

Gambar 3.6 Diagram Alir Prototipe Smart Building

3.3.1 Halaman Web Smart Building

Halaman web yang ditampilkan oleh arduino uno dapat dilihat pada Gambar 3.6. Ketika kita mengklik tombol on pada relay 1 maka hal ini sama dengan memasukkan http://192.168.1.4/?cmd=01 ke address bar web browser. Sedangkan ketika kita mengklik tombol off pada relay 1 maka hal ini sama dengan memasukkan http://192.168.1.4/?cmd=00 ke address bar web browser.


(49)

Gambar 3.7 Halaman Web Smart Building

Kode HTML (HyperText Markup Language) untuk halaman tersebut adalah sebagai berikut:

1 <!DOCTYPE HTML><html><head><title>Smart Building</title>

2 <meta http-equiv="refresh" content="10;URL=http://192.168.1.4"

/></head>

3 <body>

4 <div align="center"><h1>Smart Building</h1>

5 <table width="219" height="134" border="1" align="center"> 6 <tr>

7 <th width="53" scope="col">RELAY</th> 8 <th width="63" scope="col">SWITCH</th> 9 <th width="81" scope="col">STATUS</th> 10 </tr>

11 <tr><td><div align="center">1</div></td> 12 <td><div align="center"><form METHOD=get

action="http://192.168.1.4/"><input

type=hidden name="cmd" value="01"><input type=submit

value="On"></form><form

METHOD=get action="http://192.168.1.4/"><input type=hidden

name="cmd"

value="00"><input type=submit value="Off"></form></div></td>

13 <td><div align="center">Mati</div></td> 14 </tr>


(50)

15 <tr><td><div align="center">2</div></td>

16 <td><div align="center"><form METHOD=get

action="http://192.168.1.4/"><input

type=hidden name="cmd" value="11"><input type=submit

value="On"></form><form

METHOD=get action="http://192.168.1.4/"><input type=hidden

name="cmd"

value="10"><input type=submit value="Off"></form></div></td>

17 <td><div align="center">Mati</div></td> 18 </tr>

19 <tr><td><div align="center">3</div></td> 20 <td><div align="center"><form METHOD=get

action="http://192.168.1.4/"><input

type=hidden name="cmd" value="21"><input type=submit

value="On"></form><form

METHOD=get action="http://192.168.1.4/"><input type=hidden

name="cmd"

value="20"><input type=submit value="Off"></form></div></td>

21 <td><div align="center">Mati</div></td> 22 </tr>

23 <tr><td><div align="center">4</div></td> 24 <td><div align="center"><form METHOD=get

action="http://192.168.1.4/"><input

type=hidden name="cmd" value="31"><input type=submit

value="On"></form><form

METHOD=get action="http://192.168.1.4/"><input type=hidden

name="cmd"

value="30"><input type=submit value="Off"></form></div></td>

25 <td><div align="center">Mati</div></td> 26 </tr>

27 </table>

28 <form METHOD=get action="http://192.168.1.4/">

29 <input type=hidden name="cmd" value="a1">

30 <input type=submit value="Hidupkan Semua">

31 </form>

32 <form METHOD=get action="http://192.168.1.4/">

33 <input type=hidden name="cmd" value="a0">

34 <input type=submit value="Matikan Semua">

35 </form> 36 </div> 37

38 </body> 39 </html> 40

Untuk mengurangi memori yang dipakai untuk menyimpan kode di atas, maka kode yang sama disimpan pada sebuah string, kemudian dikirimkan secara berulang-ulang. Sebagai contoh kode yang terdapat pada baris 10 dan 11 yaitu:

</tr>


(51)

sama dengan kode yang terdapat pada baris 14 dan 15, baris 18 dan 19, dan baris 22 dan 23. Kode tersebut akan disimpan pada string yang bernama html_table_satu, kemudian html_table_satu disalin ke buffer dan kirimkan secara berulang-ulang ketika diperlukan untuk membentuk kode HTML yang utuh. Memori yang dipakai untuk menyimpan kode HTML tersebut relatif besar, sedangkan memori data yang tersedia hanya 2 KB. Untuk mengatasi hal ini maka kode HTML akan disimpan pada memori program.

3.3.2 Inisialisasi Program

Library-library yang digunakan dimasukkan pada inisialisasi program. Library yang digunakan pada perangkat lunak yang dibuat adalah SPI.h, Ethernet.h dan pgmspace.h.

Variabel-variable yang digunakan dideklarasikan pada inisialisasi program. Varibel array relay memuat angka pin digital yang digunakan sebagai pin keluaran untuk mengendalikan relay. Varibel array statusRelay berisi status setip relay, 0 untuk relay terhubung dan 1 untuk relay tidak terhubung. Variabel buffer digunakan sebagai tempat sementara yang digunakan untuk mengambil variabel yang disimpan dalam memori program agar dapat digunakan. Objek string readString digunakan untuk menympan 14 karakter pertama dari HTTP request message. Varibel cRelay dan cCmd digunakan untuk menyimpan nomor relay dan perintah yang akan dilakukan terhadap relay tersebut. Variabel LcRelay dan LcCmd menyimpan nomor relay dan perintah yang telah dilakukan. Kode HTML untuk halaman web smart building disimpan di memori program dengan


(52)

menggunakan variable modifier PROGMEM. Konfigurasi jaringan juga tulis pada inisialisasi program. Kode program untuk inisialisasi adalah sebagai berikut: #include <SPI.h>

#include <Ethernet.h> #include <avr/pgmspace.h>

//relay terhubung ke pin 2, 3, 5 dan 6 const byte relay[] = {2, 3, 5, 6}; #define STRING_BUFFER_SPACE 128

String readString;

byte statusRelay[] = {0, 0, 0, 0}; char cRelay;

char LcRelay; char cCmd; char LcCmd;

// masukkan sebuah MAC address dan IP address untuk arduino kita // IP address bergantung pada jaringan lokal:

byte mac[] = {

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1, 4);

// Initialize the Ethernet server library

// with the IP address and port you want to use // (port 80 is default for HTTP):

EthernetServer server(80);

char buffer[STRING_BUFFER_SPACE];

PROGMEM prog_char http_respond_header[] = "HTTP/1.1 200

OK\nServer: arduino uno\nContent-Type: text/html\nConnnection: close\n\n";

PROGMEM prog_char html_headera[] = "<!DOCTYPE HTML><html><head><title>Smart Building</title>\n";

PROGMEM prog_char html_headerb[] = "<meta http-equiv=\"refresh\" content=\"10;URL=http://192.168.1.4\" /></head>\n<body>\n"; PROGMEM prog_char html_headerc[] = "<div

align=\"center\"><h1>Smart Building</h1>\n";

PROGMEM prog_char html_footera[] = "</tr>\n</table>\n";

PROGMEM prog_char html_footerb[] = "</div>\n\n</body>\n</html>\n"; PROGMEM prog_char html_table_headera[] = "<table width=\"219\" height=\"134\" border=\"1\" align=\"center\">\n<tr>\n<th

width=\"53\" scope=\"col\">RELAY";

PROGMEM prog_char html_table_headerb[] = "</th>\n<th width=\"63\" scope=\"col\">SWITCH</th>\n<th width=\"81\"

scope=\"col\">STATUS</th>\n";

PROGMEM prog_char html_table_satu[] = "</tr>\n<tr><td><div align=\"center\">";

PROGMEM prog_char html_table_dua[] = "</div></td>\n<td><div align=\"center\"><form METHOD=get

action=\"http://192.168.1.4/\"><input type=hidden name=\"cmd\" value=\"";

PROGMEM prog_char html_table_tiga[] ="1\"><input type=submit value=\"On\"></form>";


(53)

PROGMEM prog_char html_table_empat[] = "<form METHOD=get

action=\"http://192.168.1.4/\"><input type=hidden name=\"cmd\" value=\"";

PROGMEM prog_char html_table_lima[] = "0\"><input type=submit value=\"Off\"></form></div></td>\n<td><div align=\"center\">"; PROGMEM prog_char html_table_enam[] = "</div></td>\n";

PROGMEM prog_char idrelay[] = "01234"; PROGMEM prog_char stsrelay_mati[] = "Mati"; PROGMEM prog_char stsrelay_hidup[] = "Hidup";

PROGMEM prog_char hidup_semua[] = "<form METHOD=get

action=\"http://192.168.1.4/\">\n<input type=hidden name=\"cmd\" value=\"a1\">\n<input type=submit value=\"Hidupkan

Semua\">\n</form>\n";

PROGMEM prog_char mati_semua[] = "<form METHOD=get

action=\"http://192.168.1.4/\">\n<input type=hidden name=\"cmd\" value=\"a0\">\n<input type=submit value=\"Matikan

Semua\">\n</form>\n";

PGM_P awalakhir_html[] PROGMEM = {http_respond_header,

html_headera, html_headerb, html_headerc, html_table_headera, html_table_headerb, html_footera, html_footerb};

PGM_P penyusn_tabel[] PROGMEM = {html_table_satu, html_table_dua, html_table_tiga, html_table_empat, html_table_lima,

html_table_enam};

PGM_P stRelay[] PROGMEM = {stsrelay_mati, stsrelay_hidup}; PGM_P semua[] PROGMEM = {hidup_semua, mati_semua};

3.3.3 Fungsi Setup

Pada fungsi setup pin digital 2,3,5 dan 6 diset sebagai pin keluaran dengan fungsi pinMode. Karena angka pin digital tersebut sudah disimpan di dalam array relay[] maka untuk memudahkan digunakan instruksi for untuk menset pin-pin tersebut. Setelah itu program akan menginisialisasi pengaturan jaringan dengan Ethernet.begin(mac,ip) dan mulai mendengarkan permintaan dari client dengan server.begin(). Berikut ini adalah kode lengkap fungsi setup:


(54)

3.3.4 Fungsi Loop

Pada fungsi loop program akan mengecek apakah ada client yang melakukan permintaan. Jika ada client yang melakukan permintaan maka arduino uno akan menerima HTTP request message dari client dan menyimpan tiap karakter ke variabel c lalu mengecek variabel c untuk mendapatkan akhir dari HTTP request message. Akhir dari HTTP request message adalah sebuah baris kosong. Arduino Uno juga menyimpan 14 karakter pertama dari HTTP request message kesebuah objek string yang bernama readString. Perintah untuk mematikan atau menghidupkan relay terdapat pada 14 karakter pertama dari HTTP request message tersebut.

Setelah akhir dari HTTP request message diterima, arduino uno akan mengecek apakah terdapat perintah yang valid dari object readString. Jika terdapat perintah yang valid maka arduino akan menyimpan karakter kesebelas ke variabel cRelay dan karakter keduabekas ke variabel cCmd. Variabel cRelay menunjukkan relay yang akan dikontrol sedangkan variabel cCmd menunjukkan perintah yang akan dilakukan. Jika kedua variabel tersebut valid maka fungsi kerjakan akan dipanggil.

Kemudian arduino uno akan mengirimkan halaman web smart building ke client. Pertama-tama setiap kode HTTP respond message dan HTML yang berada di memori program disali ke variabel buffer, setelah itu variabel buffer isi dari variabel buffer akan dikirimkan ke client. Setelah halaman web smart building dikirim ke client arduino uno akan menutup koneksi ke client dah membersihkan isi dari objek readString. Kemudian arduino uno bersiap untuk melayani client berikutnya. Kode program untuk fungsi loop adalah sebagai berikut:


(55)

void loop() {

// dengarkan client yang masuk

EthernetClient client = server.available(); if (client) {

// sebuah http request diakhiri oleh baris kosong (\n\r\n\r) boolean currentLineIsBlank = true;

while (client.connected()) { if (client.available()) { char c = client.read();

if (readString.length() < 14){ readString +=c;

}

// jika akhir dari baris telah ditemui(karakter baris baru/new line(\n))

// dan baris tersebut adalah baris kosong, the http request telah berakhir,

// jadi balasan(replay) dapat dikirim if (c == '\n' && currentLineIsBlank) {

if (readString.indexOf("GET /?cmd=") >= 0){ // cek apakah http request adalah perintah get dan cmd

cRelay = readString.charAt(10); cCmd = readString.charAt(11);

if (((cRelay != LcRelay) || (cCmd != LcCmd)) &&

(((cRelay == '0') || (cRelay == '1') || (cRelay == '2') || (cRelay == '3') || (cRelay == 'a'))&&((cCmd == '0') || (cCmd == '1')))){ kerjakan(cRelay, cCmd);

} }

//kirim http respond dan pembuka halaman web for (byte i = 0; i<6 ; i++){

strcpy_P(buffer,

(char*)pgm_read_word(&(awalakhir_html[i]))); client.print(buffer);

}

for (byte i = 0; i<4; i++){ strcpy_P(buffer,

(char*)pgm_read_word(&(penyusn_tabel[0]))); client.print(buffer);

buffer[0] = pgm_read_byte_near(idrelay + 1 + i); client.print(buffer[0]);

strcpy_P(buffer,

(char*)pgm_read_word(&(penyusn_tabel[1]))); client.print(buffer);

buffer[0] = pgm_read_byte_near(idrelay + i); client.print(buffer[0]); strcpy_P(buffer, (char*)pgm_read_word(&(penyusn_tabel[2]))); client.print(buffer); strcpy_P(buffer, (char*)pgm_read_word(&(penyusn_tabel[3]))); client.print(buffer);

buffer[0] = pgm_read_byte_near(idrelay + i); client.print(buffer[0]);


(56)

strcpy_P(buffer, (char*)pgm_read_word(&(penyusn_tabel[4]))); client.print(buffer); strcpy_P(buffer, (char*)pgm_read_word(&(stRelay[(statusRelay[i])]))); client.print(buffer); strcpy_P(buffer, (char*)pgm_read_word(&(penyusn_tabel[5]))); client.print(buffer); }

///kirim penutup tabel strcpy_P(buffer, (char*)pgm_read_word(&(awalakhir_html[6]))); client.print(buffer); strcpy_P(buffer, (char*)pgm_read_word(&(semua[0]))); client.print(buffer); strcpy_P(buffer, (char*)pgm_read_word(&(semua[1]))); client.print(buffer); strcpy_P(buffer, (char*)pgm_read_word(&(awalakhir_html[7]))); client.print(buffer); break; }

if (c == '\n') {

// memulai baris baru currentLineIsBlank = true; }

else if (c != '\r') {

//terdapat karakter pada baris yang sekarang currentLineIsBlank = false;

} } }

// beri waktu web browser untuk menerima data delay(1);

// tutup koneksi: client.stop(); readString=""; }

}

3.3.5 Fungsi Kerjakan

Pada fungsi kerjakan program akan menset nilai HIGH atau LOW pada pin-pin digital yang terhubung ke pengendali relay berdasarkan variabel cRelay dan cCmd. Pertama-tama program akan mengecek apakah variabe cRelay menunjuk ke semua relay atau tidak. Jika variabel cRelay menunjuk ke semua


(57)

relay ditandai dengan cRely berisi karakter ‘a’ maka program akan menset seluruh relay (pin) menjadi HIGH dan menset statusnya menjadi 1 jika isi dari variabel cCmd adalah karakter ‘1’ dan menset seluruh relay (pin) menjadi LOW dan menset statusnya menjadi 0 jika isi dari variable cCmd adalah karakter ‘0’. Jika isi cRelay bukan karakter ‘a’ maka program mengubah karakter angka yang berada dalam cRelay menjadi bilangan decimal dengan cara mengurangkannya dengan dengan karakter ‘0’ dan menyimpannya di variabel k. Kemudian program akan memberi nilai HIGH dan menset statusnya menjadi 1 jika isi dari variabel cCmd adalah karakter ‘1’ dan member nilai LOW dan menset statusnya menjadi 0 jika isi dari variable cCmd adalah karakter ‘0’ ke relay (pin) yang ditunjuk oleh variabel k. Setelah itu program akan menyimpan isi cRelay ke LcRelay dan cCmd ke LcCmd. Variabel LcRelay dan LcCmd digunakan untuk mengecek agar tidak terjadi pengulangan perintah di koneksi berikutnya. Kode program untuk fungsi kerjakan adalah sebagai berikut:

void kerjakan(char sRelay, char sCmd){ if(sRelay == 'a'){

if(sCmd == '0'){

for(byte i =0; i<4; i++){ digitalWrite(relay[i], LOW); statusRelay[i] = 0;

} }

if(sCmd == '1'){

for(byte i =0; i<4; i++){

digitalWrite(relay[i], HIGH); statusRelay[i] = 1;

} } } else {

byte k = sRelay - '0'; if(sCmd == '0'){

digitalWrite(relay[k], LOW); statusRelay[k] = 0;

}


(58)

digitalWrite(relay[k], HIGH); statusRelay[k] = 1;

} }

LcRelay = sRelay; LcCmd = sCmd; }


(59)

50

BAB IV

PENGUJIAN DAN ANALISA

4.1Metode Pengujian

Di dalam bab ini dilakukan pengujian terhadap rancangan prototipe smart building berbasis arduino uno. Pengujian-pengujian yang dilakukan pada rancangan alat ini bertujuan untuk mengetahui kinerja dan proses kerja dari rangkaian-rangkaian yang diuji serta sistem secara keseluruhan apakah telah bekerja sesuai dengan yang diharapkan atau tidak.

Pengujian pada rancangan alat ini akan dilakukan per bagian rancangan sehingga diketahui apakah masing-masing perangkat keras dan perangkat lunak sudah bekerja dengan baik. Pada pengujian di sini peralatan listrik adalah 4 buah lampu yang dihubungkan ke relay dari prototipe yang dirancang.

4.2Pengujian Rangkaian Pengendali Relay

Pengujian rangkaian pengendali lampu dapat dilakukan dengan memberikan tegangan 5 volt dan 0 volt pada basis transistor 2N2222, yang merupakan transistor jenis NPN. Sesuai dengan persamaan 3.2 relay akan aktif jika arus minimum pada basis transistor 2N2222 adalah 0,6 mA. Pada alat ini relay digunakan untuk menghidupkan/mematikan lampu beban, dimana hubungan yang dugunakan adalah normally open (NO) dengan demikian jika relay tidak aktif maka lampu beban akan mati, sebaliknya jika relay aktif, maka lampu beban akan menyala. Pengujian dilakukan dengan memberikan tegangan 5 volt pada


(60)

basis transistor, jika aktif relay dan lampu beban menyala maka rangkaian ini telah berfungsi dengan baik.

4.3Pengujian Arduno WebServer

Pengujian arduino web server dilakukan dengan cara menghubungkan arduino web server ke sebuah komputer pribadi dengan menggunakan kabel UTP. Kemudian alamat IP dari komputer dikonfigurasi agar dapat terhubung dengan arduino web server. Konfigurasi alamat IP dari komputer dapat dilihat pada Gambar 4.1.

Gambar 4.1 Konfigurasi Alamat IP Komputer

Setelah itu catu daya diberikan kepada arduino web server agar alat dapat bekerja. Setelah arduino web server bekerja, koneksi antara komputer dan arduino web server diperiksa dengan melakukan perintah ping ke alamat ip dari arduino


(61)

web server dari program command prompt pada komputer. Jika koneksi tidak ada masalah maka command prompt akan menampilkan tampilan seperti Gambar 4.2.

Gambar 4.2 Tampilan Command Prompt Jika Koneksi Berhasil

Setelah itu dilakukan pengujian untuk mengetahui apakah arduino web server dapat menampilkan halaman web smart building dengan baik. Pengujian dilakukan dengan cara membuka aplikasi web browser pada komputer kemudian mengisi bar alamat dengan alamat IP dari arduino web server. Tampilan halaman web smart building pada aplikasi web browser komputer dapat dilihat pada Gambar 4.3.


(62)

4.4Pengujian Keseluruhan

Pengujian keseluruhan rangkaian dilakukan dengan menggabungkan semua bagian-bagian yang diperlukan sesuai dengan rancangan rangkaian yang dilakukan dan juga sesuai dengan program yang terdapat dalam arduino uno. Setelah semua bagian telah terhubung dan diberi catu daya, arduino uno akan menunggu client yang meminta untuk dilayani. Kemudian pengujian dilakukan dengan membuka membuka halaman web smart building melalui aplikasi web browser pada komputer yang terhubung dengan arduino web server. Ketika tombol ON pada relay 1 diklik maka relay akan aktif dan hal ini akan menyebabkan lampu yang terhubung pada relay tersebut menyala. Ketika tombol OFF pada relay 1 diklik maka relay akan tidak aktif dan menyebabkan lampu yang terhubung pada relay tersebut padam. Jika tombol on setiap relay diklik maka seluruh lampu akan hidup. Pada kolom status dapat dilihat keadaan setiap lampu. Tampilan halaman web Smart building jika seluruh lampu hodip dapat dilihat pada Gambar 4.4.


(63)

4.5Analisa Prototipe Smart Building

Arduino uno memiliki 14 pin masukan/keluaran digital dan 6 pin masukan analog. Pin masukan analog dapat dikonfigurasi menjadi pin masukan/keluaran digital sehingga total arduino memiliki 20 pin masukan/keluaran digital. Pada prototipe smart building pin digital 10, 11, 12 dan 13 digunakan arduino uno untuk berkomunikasi dengan arduino ethernet shield. Jadi jumlah pin yang tersisa yang bisa digunakan sebagai keluaran digital adalah 16 pin.

Arduino uno dapat menyediakan arus total sebesar 200 mA dan mampu menyediakan arus sebesar 40 mA di setiap pin. Pada prototipe smart building digunakan tahanan basis sebesar 1 KΩ sehingga arus yang mengalir pada basis menurut Gambar 3.4 dapat dihitung sebagai berikut:

�� =�� − � ��

� =

(5−2,6)�

1 �٠= 1,4 ��

Keterangan: � = arus basis

�� = tahanan basis

�� = tegangan keluaran pin arduino uno ��� = tegangan saturasi basis−emiter

Arus total yang ditarik dari setiap pin keluaran arduino uno yang digunakan untuk mengendalikan relay adalah arus LED ditambah dengan arus basis. Dari persamaan 3,4 arus LED adalah 1,45 mA. Jadi arus total yang ditarik adalah 2,85 mA.


(64)

Jika pada protipe smart bulding, tiap 16 pin yang tersisa digunakan untuk sebagai keluaran maka total arus yang digunakan adalah 45,6 mA. Arus sebesar 45,6 mA masih bisa disediakan oleh arduino uno. Jika ke setiap pin ini digunakan untuk mengendalikan relay yang dihubukan ke sebuah peralatan listrik, maka protipe smart bulding dapat mengendalikan 16 peralatan listrik.

Protipe smart bulding menggunakan jaringan komputer untuk terhubung ke perangkat yang mengendalikannya. Jika protipe smart bulding berada pada jaringan yang sama dengan perangkat yang mengendalikannya maka protipe smart bulding dapat diakses oleh perangkat tersebut. Jika protipe smart bulding tehubung ke jaringan internet maka protipe smart bulding dapat diakses dari mana saja selama perangkat yang digunakan untuk mengendalikannya juga terhubung ke jaringan internet.


(65)

56

BAB V

KESIMPULAN DAN SARAN

5.1Kesimpulan

Berdasarkan pembahasan pada bab-bab sebelumnya maka dapat diambil kesimpulan sebagai berikut:

1. Prototipe yang dirancang dapat menghidupkan atau mematikan peralatan listrik dari jarak jauh melalui jaringan internet menggunakan aplikasi web browser.

2. Prototipe dapat mengendalikan 16 peralatan listik jika masing-masing peralatan listik tersebut terhubung ke satu relay yang dikendalikan oleh prototipe.

3. Smart building sangat bermanfaat bagi banyak pihak yang mengedepankan kepraktisan, efisiensi dan efektivitas, misalnya bidang industri, perkantoran, kehidupan sehari-hari dan lain sebagainya.

5.2Saran

Untuk meningkatkan kinerja dari prototipe smart building berbasis arduino uno sebaiknya diarahkan pada hal-hal berikut:

1. Ditambahkan sebuah aplikasi yang dapat di-install pada smart phone atau komputer pribadi untuk mengontrol smart building.

2. Karena siapa saja dapat mengakses prototipe, jika mengetahui alamat IP prototipe maka perlu ditambahkan sebuah halaman login agar akses ke perangkat dapat dibatasi.


(66)

3. Selain mampu mematikan atau menghidupkan peralatan listrik, penulis menyarankan juga untuk menambah kemampuan alat, seperti untuk mengatur suhu ruangan atau sistem pengamanan bangunan.


(67)

58

DAFTAR PUSTAKA

1. Atmel. (2011). 8-bit Atmel Microcontroller with 4/8/16/32 KBytes In-System Programmable Flash.

2. Banzi, Massimo. (2008). Getting Started with Arduino. Sebastopol:O’Reilly Media.

3. Margolis, Michael. (2011). Arduino Cookbook. Sebastopol:O’Reilly Media. 4. McRoberts, Michael. (2010). Beginning Arduino. New York:Apress.

5. Suyadhi, Taufiq Dwi Septian. (2010). Buku Pintar Robotika. Yogyakarta:Penerbit Andi.

6. Wheat, Dale. (2011). Arduino Internals. New York:Apress.

7. Arduino Development Environment. Diakses September 27, 2012, dari http://arduino.cc/en/Guide/Environment.

8. Arduino Ethernet Library. Diakses Agustus 16, 2012, dari http://arduino.cc/en/Reference/Ethernet.

9. Arduino Ethernet Shield. Diakses Agustus 16, 2012, dari http://arduino.cc/en/Main/ArduinoEthernetShield.

10. Arduino Uno. Diakses Agustus 16, 2012, dari

http://arduino.cc/en/Main/ArduinoBoardUno.

11. Eight definitions of smart buildings. Diakses Desember 10, 2012, dari http://www.greenbang.com/from-inspired-to-awful-8-definitions-of-smart-buildings_18078.html.

12. HTTP Request. Diakses September 18, 2012 dari

http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html.

13. PROGMEM. Diakses Agustus September 25, 2012 dari http://arduino.cc/en/Reference/PROGMEM.

14. Query String. Diakses Nopember 1, 2012, dari

http://en.wikipedia.org/wiki/Query_string.


(1)

4.5Analisa Prototipe Smart Building

Arduino uno memiliki 14 pin masukan/keluaran digital dan 6 pin masukan analog. Pin masukan analog dapat dikonfigurasi menjadi pin masukan/keluaran digital sehingga total arduino memiliki 20 pin masukan/keluaran digital. Pada prototipe smart building pin digital 10, 11, 12 dan 13 digunakan arduino uno untuk berkomunikasi dengan arduino ethernet shield. Jadi jumlah pin yang tersisa yang bisa digunakan sebagai keluaran digital adalah 16 pin.

Arduino uno dapat menyediakan arus total sebesar 200 mA dan mampu menyediakan arus sebesar 40 mA di setiap pin. Pada prototipe smart building digunakan tahanan basis sebesar 1 KΩ sehingga arus yang mengalir pada basis menurut Gambar 3.4 dapat dihitung sebagai berikut:

�� =�� − � ��

� =

(5−2,6)�

1 �٠= 1,4 ��

Keterangan: � = arus basis �� = tahanan basis

�� = tegangan keluaran pin arduino uno ��� = tegangan saturasi basis−emiter

Arus total yang ditarik dari setiap pin keluaran arduino uno yang digunakan untuk mengendalikan relay adalah arus LED ditambah dengan arus basis. Dari persamaan 3,4 arus LED adalah 1,45 mA. Jadi arus total yang ditarik adalah 2,85 mA.


(2)

55

Jika pada protipe smart bulding, tiap 16 pin yang tersisa digunakan untuk sebagai keluaran maka total arus yang digunakan adalah 45,6 mA. Arus sebesar 45,6 mA masih bisa disediakan oleh arduino uno. Jika ke setiap pin ini digunakan untuk mengendalikan relay yang dihubukan ke sebuah peralatan listrik, maka protipe smart bulding dapat mengendalikan 16 peralatan listrik.

Protipe smart bulding menggunakan jaringan komputer untuk terhubung ke perangkat yang mengendalikannya. Jika protipe smart bulding berada pada jaringan yang sama dengan perangkat yang mengendalikannya maka protipe smart bulding dapat diakses oleh perangkat tersebut. Jika protipe smart bulding tehubung ke jaringan internet maka protipe smart bulding dapat diakses dari mana saja selama perangkat yang digunakan untuk mengendalikannya juga terhubung ke jaringan internet.


(3)

56

BAB V

KESIMPULAN DAN SARAN

5.1Kesimpulan

Berdasarkan pembahasan pada bab-bab sebelumnya maka dapat diambil kesimpulan sebagai berikut:

1. Prototipe yang dirancang dapat menghidupkan atau mematikan peralatan listrik dari jarak jauh melalui jaringan internet menggunakan aplikasi web browser.

2. Prototipe dapat mengendalikan 16 peralatan listik jika masing-masing peralatan listik tersebut terhubung ke satu relay yang dikendalikan oleh prototipe.

3. Smart building sangat bermanfaat bagi banyak pihak yang mengedepankan kepraktisan, efisiensi dan efektivitas, misalnya bidang industri, perkantoran, kehidupan sehari-hari dan lain sebagainya.

5.2Saran

Untuk meningkatkan kinerja dari prototipe smart building berbasis arduino uno sebaiknya diarahkan pada hal-hal berikut:

1. Ditambahkan sebuah aplikasi yang dapat di-install pada smart phone atau komputer pribadi untuk mengontrol smart building.

2. Karena siapa saja dapat mengakses prototipe, jika mengetahui alamat IP prototipe maka perlu ditambahkan sebuah halaman login agar akses ke perangkat dapat dibatasi.


(4)

57

3. Selain mampu mematikan atau menghidupkan peralatan listrik, penulis menyarankan juga untuk menambah kemampuan alat, seperti untuk mengatur suhu ruangan atau sistem pengamanan bangunan.


(5)

58

DAFTAR PUSTAKA

1. Atmel. (2011). 8-bit Atmel Microcontroller with 4/8/16/32 KBytes In-System Programmable Flash.

2. Banzi, Massimo. (2008). Getting Started with Arduino. Sebastopol:O’Reilly Media.

3. Margolis, Michael. (2011). Arduino Cookbook. Sebastopol:O’Reilly Media. 4. McRoberts, Michael. (2010). Beginning Arduino. New York:Apress.

5. Suyadhi, Taufiq Dwi Septian. (2010). Buku Pintar Robotika. Yogyakarta:Penerbit Andi.

6. Wheat, Dale. (2011). Arduino Internals. New York:Apress.

7. Arduino Development Environment. Diakses September 27, 2012, dari http://arduino.cc/en/Guide/Environment.

8. Arduino Ethernet Library. Diakses Agustus 16, 2012, dari http://arduino.cc/en/Reference/Ethernet.

9. Arduino Ethernet Shield. Diakses Agustus 16, 2012, dari http://arduino.cc/en/Main/ArduinoEthernetShield.

10. Arduino Uno. Diakses Agustus 16, 2012, dari

http://arduino.cc/en/Main/ArduinoBoardUno.

11. Eight definitions of smart buildings. Diakses Desember 10, 2012, dari http://www.greenbang.com/from-inspired-to-awful-8-definitions-of-smart-buildings_18078.html.

12. HTTP Request. Diakses September 18, 2012 dari http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html.

13. PROGMEM. Diakses Agustus September 25, 2012 dari http://arduino.cc/en/Reference/PROGMEM.

14. Query String. Diakses Nopember 1, 2012, dari

http://en.wikipedia.org/wiki/Query_string.


(6)

59

LAMPIRAN A

#include <SPI.h> #include <Ethernet.h> #include <avr/pgmspace.h>

//relay terhubung ke pin 2, 3, 5 dan 6 const byte relay[] = {2, 3, 5, 6}; #define STRING_BUFFER_SPACE 128

String readString;

byte statusRelay[] = {0, 0, 0, 0}; char cRelay;

char LcRelay; char cCmd; char LcCmd;

// masukkan sebuah MAC address dan IP address untuk arduino kita // IP address bergantung pada jaringan lokal:

byte mac[] = {

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1, 4);

// Initialize the Ethernet server library

// with the IP address and port you want to use // (port 80 is default for HTTP):

EthernetServer server(80);

char buffer[STRING_BUFFER_SPACE];

PROGMEM prog_char http_respond_header[] = "HTTP/1.1 200

OK\nServer: arduino uno\nContent-Type: text/html\nConnnection: close\n\n";

PROGMEM prog_char html_headera[] = "<!DOCTYPE HTML><html><head><title>Smart Building</title>\n";

PROGMEM prog_char html_headerb[] = "<meta http-equiv=\"refresh\" content=\"10;URL=http://192.168.1.4\" /></head>\n<body>\n"; PROGMEM prog_char html_headerc[] = "<div

align=\"center\"><h1>Smart Building</h1>\n";

PROGMEM prog_char html_footera[] = "</tr>\n</table>\n";

PROGMEM prog_char html_footerb[] = "</div>\n\n</body>\n</html>\n"; PROGMEM prog_char html_table_headera[] = "<table width=\"219\" height=\"134\" border=\"1\" align=\"center\">\n<tr>\n<th

width=\"53\" scope=\"col\">RELAY";

PROGMEM prog_char html_table_headerb[] = "</th>\n<th width=\"63\" scope=\"col\">SWITCH</th>\n<th width=\"81\"

scope=\"col\">STATUS</th>\n";

PROGMEM prog_char html_table_satu[] = "</tr>\n<tr><td><div align=\"center\">";

PROGMEM prog_char html_table_dua[] = "</div></td>\n<td><div align=\"center\"><form METHOD=get

action=\"http://192.168.1.4/\"><input type=hidden name=\"cmd\" value=\"";

PROGMEM prog_char html_table_tiga[] ="1\"><input type=submit value=\"On\"></form>";