BAB II TEORI DASAR 2.1 Board Mikrokontroler Arduino Arduino adalah board mikrokontroler bebasiskan mikrokontroler 8 bit atmel AVR yang bersifat open-source. Board arduino dirancang untuk memudahkan pemakainya untuk mengggunakan board tersebut dalam berbagai keperluan pembuatan alat elektronik. Board tersebut disertai dengan software IDE (Integrated Development Environtment) sendiri yang juga bersifat open source. Sehingga rancangan hardware dan softwarenya dapat dipelajari atau dimodifikasi tanpa melanggar lisensi selama tidak menggunakan trade mark arduino. Dalam board Arduino sudah dilengkapi dengan bootloader yang akan menangani proses upload dari komputer, dengan demikian tidak diperlukan lagi chip programmer kecuali untuk menanamkan bootloader pada chip yang masih blank. Arduino menggunakan usb to serial sebagai interfacenya dengan komputer sehingga arduino dapat mudah dihubungkan dengan berbagai komputer dan notebook yang beredar saat ini yang sudah tidak lagi menyediakan port serial dan port parallel sebagai interface pada komputer.. Pendiri dan awal pengembang arduino adalah Massimo Banzi dan Davis Cuartiellesi. Proyek ini dimulai pada tahun 2005 di Ivrea, Italia. Arduino lahir dari lingkungan mahasiswa dan dosen yang merasakan sulitnya mempelajari mikrokontroler. Kemudian dari hal tersebut dikembangkanlah sebuah sistem minimum dengan mikrokontroler Atmel AVR yang lengkap dengan bootloader dan software yang dibuat sedemikain rupa agar mudah digunakan dengan library yang lengkap maka lahirlah sebuah inovasi board mikrokontroler yang bersifat open source. Kepopuleran arduino melebihi kepopuleran basic stamp yang terlebih dahulu ada sebelum arduino. Gambar 2.1 : Bentuk Modul Arduino Duemilanove 2.2 Mikrokontroller AVR AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur RISC (Reduced Instruction Set Computer) yang ditingkatkan. Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving. Mempunyai ADC dan PWM internal. AVR juga mempunyai InSystem Programmable Flash on-chip yang mengijinkan memori program untuk diprogram ulang dalam sistem menggunakan hubungan serial SPI. AVR terdiri dari beberapa series yaitu AT90xx, ATtinnyxx, ATmegaxx, AVR32xx selain AVR32xx yang membedakan tiap series hanyalah kapasitas memori dan fiturnya saja. Gambar 2.2 Blok Diagram Arsitektur AVR 2.3. Arduino Ethernet Shield Arduino Ethernet Shield adalah board menghubungkan board Arduino dengan Internet. Arduino Ethernet Shield ini dibuat berdasarkan ethernet chip Wiznet W5100. Chip Wiznet W5100 menyediakan jaringan (protokol internet) dengan kemampuan TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol). Mendukung sampai dengan 4 koneksi secara bersamaan. Board ethernet dilengkapi dengan slot memory micro-sd menyimpan file untuk digunakan di dalam jaringan. Gambar 2.3 : Bentuk Modul Arduino Ethernet Shield Modul Ethernet yang menggunakan chip WIZnet W5100 Ethernet Chip yang mendukung hingga empat koneksi soket secara simultan. Protokol komunikasi dengan SPI (Serial Periphreal Interface ). 2.4. Sensor Suhu LM 35 DZ Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan. Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan kesensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 µA hal ini berarti LM35 mempunyai kemampuan menghasilkan panas (self-heating) dari sensor yang dapat menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5 ºC pada suhu 25 ºC . Gambar dibawah menunjukan bentuk dari LM35 tampak depan dan tampak bawah. 3 pin LM35 menujukan fungsi masing-masing pin diantaranya, pin 1 berfungsi sebagai sumber tegangan kerja dari LM35, pin 2 atau tengah digunakan sebagai tegangan keluaran atau Vout dengan jangkauan kerja dari 0 Volt sampai dengan 1,5 Volt dengan tegangan operasi sensor LM35 yang dapat digunakan antar 4 Volt sampai 30 Volt. Keluaran sensor ini akan naik sebesar 10 mV setiap derajad celcius sehingga diperoleh persamaan sebagai berikut : VLM35 = Suhu* 10 mV Secara prinsip sensor akan melakukan penginderaan pada saat perubahan suhu setiap suhu 1 ºC akan menunjukan tegangan sebesar 10 mV. Pada penempatannya LM35 dapat ditempelkan dengan perekat atau dapat pula disemen pada permukaan akan tetapi suhunya akan sedikit berkurang sekitar 0,01 ºC karena terserap pada suhu permukaan tersebut. Dengan cara seperti ini diharapkan selisih antara suhu udara dan suhu permukaan dapat dideteksi oleh sensor LM35 sama dengan suhu disekitarnya, jika suhu udara disekitarnya jauh lebih tinggi atau jauh lebih rendah dari suhu permukaan, maka LM35 berada pada suhu permukaan dan suhu udara disekitarnya . Jarak yang jauh diperlukan penghubung yang tidak terpengaruh oleh interferensi dari luar, dengan demikian digunakan kabel selubung yang ditanahkan sehingga dapat bertindak sebagai suatu antenna penerima dan simpangan didalamnya, juga dapat bertindak sebagai perata arus yang mengkoreksi pada kasus yang sedemikian, dengan mengunakan metode bypasskapasitor dari Vin untuk ditanahkan. Berikut ini adalah karakteristik dari sensor LM35. 1. Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius. 2. Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC seperti terlihat pada gambar 2.2. 3. Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC. 4. Bekerja pada tegangan 4 sampai 30 volt. 5. Memiliki arus rendah yaitu kurang dari 60 µA. 6. Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada udara diam. 7. Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA. 8. Memiliki ketidaklinieran hanya sekitar ± ¼ ºC. Gambar 2.4 : Bentuk LM 35 DZ Dan Penjelasan Output Gambar 2.5 : Dimensi LM 35 DZ Tabel 2.1 : Karakteristik elektrikal LM 35 DZ 2.5. Local Area Network (LAN) 2.5.1. Jaringan LAN LAN (Local Area Network) adalah suatu kumpulan komputer, dimana terdapat beberapa unit komputer (client) dan 1 unit komputer untuk bank data (server). Antara masing-masing client maupun antara client dan server dapat saling bertukar file maupun saling menggunakan printer yang terhubung pada unit-unit komputer yang terhubung pada jaringan LAN. Berdasarkan kabel yang digunakan, ada dua cara membuat jaringan LAN, yaitu dengan kabel BNC dan kabel UTP. 2.5.2. Keuntungan Jaringan LAN. 1. Pertukaran file dapat dilakukan dengan mudah (File Sharing). 2. Pemakaian printer dapat dilakukan oleh semua client (Printer Sharing). 3. File-file data dapat disimpan pada server, sehingga data dapat diakses dari semua client menurut otorisasi sekuritas dari semua karyawan, yang dapat dibuat berdasarkan struktur organisasi perusahaan sehingga keamanan data terjamin. 4. File data yang keluar/masuk dari/ke server dapat di kontrol. 5. Proses backup data menjadi lebih mudah dan cepat. 6. Resiko kehilangan data oleh virus komputer menjadi sangat kecil sekali. 7. Komunikasi antar karyawan dapat dilakukan dengan menggunakan E-Mail & Chat. 8. Bila salah satu client/server terhubung dengan modem, maka semua atau sebagian komputer pada jaringan LAN dapat mengakses ke jaringan Internet atau mengirimkan fax melalui 1 modem. Gambar 2.6 : Jaringan Local Area Network 2.6. LED (Light Emitting Diode) LED atau biasa disebut juga dioda cahaya adalah suatu semikonduktor yang dapat memancarkan cahaya apabila ada arus listrik yang melewatinya. Karena LED tidak dapat menerima arus yang besar, maka pada pemakaiannya umumnya digabungkan secara serial dengan resistor. Fungsi resistor adalah membatasi arus yang mengalir melewati LED. Cahaya yang dihasilkan LED tergantung pada bahan semikonduktor yang digunakan. Cahaya yang dihasilkan LED bisa berupa cahaya tampak. LED adalah jenis yang memancarkan cahaya. Cahaya LED dapat dilihat oleh manusia. LED memiliki dua kaki yaitu katoda dan anoda. Kaki anoda pada LED memiliki ukuran yang lebih panjang jika dibandingkan dengan kaki katodanya. Kaki anoda dan anoda pada LED dapat dilihat pada gambar 2.7. LED akan berfungsi dengan baik jika kaki-kaki LED dipasang dengan benar. Kaki anoda dipasang pada bagian positif (+) dan kaki katoda dipasang pada bagian negative (-). Bentuk, kaki-kaki, symbol LED dan bentuk, simbol RED dapat dilihat pada gambar 2.8. Gambar 2.7 Kaki Anoda dan Katoda pada LED Gambar 2.8 Bentuk dan Simbol LED 2.7. Bahasa C Bahasa C merupakan bahasa tingkat tinggi yang ditemukan oleh Dennis Ritchie dari Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories) pada tahun 1972. Awalnya bahasa C merupakan perkembangan dari bahasa B yang dikembangkan oleh Ken Thompson pada tahun 1970 dan merupakan pengembangan dari bahasa BPCL yang ditemukan oleh Martin Richard pada tahun 1967. Bahasa C pertama kali digunakan di dalam Computer Digital Equipment Corporation PDP-11 menggunakan sistem operasi UNIX. Hingga saat ini penggunaan bahasa C telah merata digunakan di seluruh dunia. C adalah bahasa yang standar, artinya suatu program yang ditulis dengan bahasa C tertentu akan dapat dikonversi dengan bahasa C yang lain dengan sedikit modifikasi. Standar bahasa C yang asli adalah standar dari UNIX. Patokan dari standar UNIX ini diambil dari buku yang ditulis oleh Brian Kerningan dan Dennis Ritchie berjudul “The C Programming Language”, diterbitkan oleh Prentice-Hall tahun 1978 Deskripsi C dari Kerninghan dan Ritchie ini kemudian kemudian dikenal secara umum sebagai “K dan R C”. 2.7.1. Tipe Data Umumnya data yang digunakan didalam bahasa pemograman komputer dibedakan menjadi data nilai numerik dan nilai karakter. Tujuan data menjadi efisien dan efektif digunakan bahasa-bahasa pemograman komputer yang membedakan data kedalam beberapa tipe. Dalam bahasa C tersedia lima tipe data dasar, yaitu tipe data interger (nilai numeric bulat yang dideklarasikan dengan int), floatingpoint (nilai numerik pecahan ketetapan tunggal yang dideklarasikan dengan float), double-precision (nilai numerik pecahan ketetapan ganda yang dideklarasikan dengan double). Tabel 2.2 Tipe-Tipe Data Dasar Tipe Ukuran (Bit) Range Bit 1 0,1 Char 8 -128 to 127 Unsigned Char 8 0 to 255 Signed Char 8 -128 to 127 Int 16 -32768 to 32767 Short int 16 -32768 to 32767 Unsigned int 16 0 to 65535 Signed int 16 -32768 to 32767 Long int 32 -2147483648 to 2147483647 Unsigned long int 32 0 to 4294967295 Signed long int 32 -2147483648 to 2147483647 Float 32 ±1.175e-38 to ±3.402e38 double 32 ±1.175e-38 to ±3.402e38 Karakter (dideklarasikan dengan char), dan kosong (dideklarasikan dengan void). Int,float, double dan char dapat dikombinasikan dengan pengubah (modifier) signed, unsigned, long dan short. Hasil dari kombinasi tipe data ini dapat dilihat pada tabel. 2.7.2. Operator Dalam suatu intruksi mengandung operator dan operand. Operator merupakan sebuah simbol yang menyatakan operasi mana yang harus dilakukan oleh operand tersebut. Sedangkan operand adalah variable atau konstanta yang merupakan bagian pernyataan. Ada tiga operand (a,b dan c) dan dua operator (= dan +). Operator dalam c dibagi menjadi 3 kelompok. Yaitu: 1. Unary Operator yang beroperasi pada satu operand, missal:-n. 2. Binary Operator yang beroperasi padaduaoperand, missal: a-n, 3. Ternary Operator yang memerlukan tiga atau lebih operand, misal: a=(b*c)+ Tabel 2.3 : Operator Kondisi Operator Kondisi Keterangan < Lebih Kecil <= Lebih kecil sama dengan < Lebih Besar >= Lebih Besar sama dengan == Sama dengan != Tidak samadengan Tabel 2.4 : Operator Aritmatika Operator Aritmatika Keterangan + Penjumlahan - Pengurangan * Perkalian / Pembagian % Sisa bagi(modulus) Tabel 2.5 : Operator Logika Operator Logika Keterangan ! Boolean NOT && Boolean AND || Boolean OR Tabel 2.6 : Operator Bitwise Operator Bitwise Keterangan ~ Komplemen Bitwise & Bitwise AND | Bitwise OR ^ Bitwise Exclusive OR >> Right Shift << Left Shift Tabel 2.7 : Operator Assignment Operator Asignment Keterangan = Untuk memasukkan nilai += Untuk menambah nilai dari keadaan semula -= Untuk mengurangi nilai dari keadaan semula *= Untuk mengalikan nilai dari keadaan semula /= Untuk melakukan pembagian terhadap bilangan semula %= Untuk memsukkan sisa bagi dari pembagian bilangan semula <<= Untuk memasukkan Shift left >>= Untuk memasukkan Shift right &= Untuk memasukkan bitwise AND ^= Untuk memasukkan bitwise XOR \= Untuk memasukkan bitwise OR 2.7.3. Pernyataan Bahasa C Dalam system Arduino, ada berbagai macam jenis pernyataan yang digunakan dalam pemprogramannya. Berikut contoh dan penjelasanannya: 2.7.3.1. Percabangan Perintah if dan if…else….dilakukan untuk melakukan operasi percabangan bersyarat. Pernyataan if mempunyai bentuk umum : if (kondisi) { //pernyataan }; Contoh: if (a<0x08){ PORTC=0x50; }; Dalam contoh ini PORTC akan dikirim data 0x50 jika nilai a lebih kecil 0x08. Bentuk ini menyatakan , Jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses. Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses. Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Sedangkan Pernyataan if-else memiliki bentuk : if (kondisi) { //pernyataan a } else { //pernyataan b }; Artinya adalah pernyataan a akan dijalankan jika kondisi terpenuhi dan pernyataan b akan dijalankan jika kondisi tidak terpenuhi. dijalankan. Masing-masing pernyataan-a dan pernyataan-b dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Perintah percabangan if….else..dapat digantikan dengan perintah switch. Dalam pernyataan switch, sebuah variabel secara berurutan diuji oleh beberapa konstanta bilangan bulat atau konstanta karakter. Sintaks perintah switch dapat ditulis sebagai berikut: Switch(variabel) { case konstanta_1: statement; break; case konstanta_2: statement; break; case konstanta_3: statement; break; default: statement; } 2.7.3.2. Looping (Pengulangan) Looping adalah perulangan satu atau beberapa perintah sampai mencapai keadaan tertentu. Ada tiga perintah looping, yaitu: for …., dan do..while…. sintaks loop for dapat dituliskan sebagai berikut: for (untuk pengulangan yang melakukan proses increment) for(nama_variabel=nilai_awal;syarat_loop;nama_variabel++) }; statement_yang_diulang; } // untuk pengulangan yang melakukan proses decrement syarat_loop adalah pernyataan yang menyatakan syarat berhentinya pengulangan; biasanya berkaitan dengan variabel kontrol, nama_variabel++ dan nama_variabel--, menyatakan proses increment dan proses decrement pada variabel kontrol. Sedangkan perintah while dapat melakukan looping apabila persyaratannya benar. Sintaks perintah while dapat dituliskan sebagai berikut: nama_variabel=nilai_awal; while(syarat_loop) { Statement_yang_akan_diulang: Nama_variabel++; } Perintah while terlebih dahulu melakukan pengujian persyaratan sebelum melakukan looping. Perulangan yang belum diketahui berapa kali akan diulangi maka dapat menggunakan while atau do while.Pada pernyatan while, pemeriksaan terhadap loop dilakukan di bagian awal (sebelum tubuh loop). Pernyataan while akan diulangi terus menerus selama kondisi bernilai benar, jika kondisinya salah maka perulangan dianggap selesai. nama_variabel=nilai_awal; while(syarat_loop) { Statement_yang_akan_diulang: Nama_variabel++; } While(syarat_loop)