BAB II LANDASAN TEORI 2.1. Mikrokontroler Mikrokontroler sering disebut sebagai mikrokomputer atau embedded system. Mikrokontroler dipandang sebagai suatu sistem yang terdiri atas input,program dan output. Mikrokontroler dapat diatur oleh sebuah program. Proses untuk memasukkan program ke dalam mikrokotroler disebut dengan download dan alat yang digunakan disebut dengan downloader. Seperti sistem komputer nilai tambah sistem mikrokontroler dapat dilipatgandakan melalui program. Proses pengerjaan bergantung pada jenis instruksi, bisa membaca, mengubah nilainilai pada register, RAM, isi Port, atau melakukan pembacaan dan dilanjutkan dengan pengubahan data. Program Counter telah berubah nilainya (baik karena penambahan otomatis pada langkah 1, atau karena pengubahan-pengubahan pada langkah 2). Selanjutnya yang dilakukan oleh mikrokontroler adalah mengulang kembali siklus ini pada langkah 1. Demikian seterusnya hingga power dimatikan. Prinsip kerja mikrokontroler adalah berdasarkan nilai yang berada pada register Program Counter, mikrokontroler mengambil data pada ROM dengan alamat sebagaimana yang tertera pada register Program Counter. Selanjutnya isi dari register Program Counter ditambah dengan satu (Increment) secara otomatis. Data yang diambil pada ROM merupakan urutan instruksi program yang telah dibuat dan diisikan sebelumnya oleh pengguna. Instruksi yang diambil tersebut diolah dan dijalankan oleh mikrokontroler. Mikrokontroler merupakan suatu IC yang di dalamnya berisi CPU, ROM, RAM, dan I/O. Dengan adanya CPU tersebut maka mikrokontroler dapat melakukan proses berfikir berdasarkan program yang telah diberikan kepadanya. Mikrokontroler banyak terdapat pada peralatan elektronik yang serba otomatis, mesin fax, dan peralatan elektronik lainnya.Mikrokontroler menerapkan arsitektur Harvard, dalam arsitektur ini penjemputan instruksi dapat dilaksanakan secara bersamaan dengan pemindahan data. Tetapi dalam kebanyakan mesin dengan arsitektur Harvard juga memori tersebut dihubungkan ke bus bersama sehingga paralelismenya sangat berkurang. Secara umum, mikrokontroler mengandung tujuh komponen : Prosesor (CPU), ROM, RAM, bandar (port) I/O, Rangkaian Interupsi, Timer, dan Bus yang dihubungkan. a. Prosesor : Prosesor (CPU) melaksanakan penjemputan intruksi dari memori mendekodekan dan menjalankannya dan mengarahkan perpindahan data antar register atau antara register dan memori. CPU merupakan bagian 4 utama dalam suatu Universitas Sumatera Utara mikrokontroler. CPU pada mikrokontroler ada yang berukuran 8 bit ada pula yang berukuran 16 bit. CPU ini akan membaca program yang tersimpan di dalam ROM dan melaksanakannya. b. ROM : digunakan untuk menyimpan data yang bersifat permanen. Dalam mikrokontroler program disimpan dalam ROM, atau EPROM atau Flash EPROM. Ada mikrokontroler yang dapat ditambah ROM eksternal di luar serpih mikrokontroler. Disamping ROM untuk program juga digunakan EEPROM untuk menyimpan data. ROM merupakan suatu memori (alat untuk mengingat) yang sifatnya hanya dibaca saja. Dengan demikian ROM tidak dapat ditulisi. Dalam dunia mikrokontroler ROM digunakan untuk menyimpan program bagi mikrokontroler tersebut. Program tersimpan dalm format biner („0‟ atau „1‟). Susunan bilangan biner tersebut bila telah terbaca oleh mikrokontroler akan memiliki arti tersendiri. c. RAM : RAM digunakan untuk menyimpan data yang bersifat sementara. Dalam mikrokontroler, RAM yang tersedia sangat sedikit yang sebagiannya digunakan lagi sebagai register prosesor, dikatakan register dipetakan sebagai memori. Berbeda dengan ROM, RAM adalah jenis memori selain dapat dibaca juga dapat ditulis berulang kali. Tentunya dalam pemakaian mikrokontroler ada semacam data yang bisa berubah pada saat mikrokontroler tersebut bekerja. Perubahan data tersebut tentunya juga akan tersimpan ke dalam memori. Isi pada RAM akan hilang jika catu daya listrik hilang. d. Timer : Timer (pewaktu) adalah counter (pencacah) yang digunakan untuk membangkitkan pulsa atau deretan pulsa pada saat-saat tertentu atau dengan frekuensi tertentu. Pulsa ini digunakan untuk sebagai inetrupsi internal untuk memulai atau mengakhiri kegiatan tertentu. Dalam kebanyakan mikrokontroler, pencacah ini adalah pencacah naik, berbeda dengan pencacah turun yang diterapkan dalam sistem mikroprosesor. e. PORT I/O : Terdiri atas Port Paralel dan Port Seri yang mempunyai kemampuan tristate. Pada sebagian mikrokontroler disediakan bandar masukan/keluaran analog. Fungsi bandar ini pada umumnya dipilih (dikonfigurasi) sebagai masukan/keluaran paralel/seri analog. Arah aliran data pada Port masukan/keluaran pada umumnya dipilih melalaui register arah (Data Direction Register, disingkat DDR). Port ini juga dipetakan sebagai memori. Untuk berkomunikasi dengan dunia luar, maka mikrokontroler menggunakan terminal I/O (port I/O), yang digunakan untuk masukan atau keluaran. f. Interupsi : interupsi dapat dibedakan atas interupsi perangkat lunak yang dibangkitkan oleh interupsi yang ditanamkan dalam program dan interupsi perangkat 5 Universitas Sumatera Utara keras yang dibangkitkan oleh sinyal perangkat keras yang baik yang berasal dari sumber internal seperti timer atau sumber eksternal dari port seri atau paralel. g. Bus : bus adalah saluran yang melakukan (membawa) sinyal-sinyal perangkat keras. Sebagaimana dalam mikroprosesor, bus dibedakan atas bus data, alamat dan kontrol. Bus data melakukan data antara register dan memori atau I/O, bus ini bersifat dua arah. 2.2. Hardware Arduino Papan Arduino merupakan papan mikrokontroler yang berukuran kecil atau dapat diartikan juga dengan suatu rangkaian berukuran kecil yang didalamnya terdapat komputer berbentuk suatu chip yang kecil. Arduino didefinisikan sebagai sebuah platform elektronik yang open source, berbasis pada software dan hardware yang fleksibel dan mudah digunakan, yang ditujukan untuk seniman, desainer, hobbies dan setiap orang yang tertarik dalam membuat objek atau lingkungan yang interaktif. Arduino pada awalnya dikembangkan di Ivrea, Italia. Bahasa pemrograman arduino adalah bahasa pemrograman yang umum digunakan untuk membuat perangkat lunak yang ditanamkan pada arduino board. Pada Gambar dibawah dapat dilihat sebuah papan Arduino dengan beberapa bagian komponen didalamnya. Gambar 2.2. Hardware Arduino Pada hardware arduino terdiri dari 20 pin yang meliputi: a. 14 pin IO Digital (pin 0–13) Sejumlah pin digital dengan nomor 0–13 yang dapat dijadikan input atau output yang diatur dengan cara membuat program IDE. b. 6 pin Input Analog (pin 0–5) Sejumlah pin analog bernomor 0–5 yang dapat digunakan untuk membaca nilai input yang memiliki nilai analog dan mengubahnya ke dalam angka antara 0 dan 1023. 6 Universitas Sumatera Utara c. 6 pin Output Analog (pin 3, 5, 6, 9, 10 dan 11) Sejumlah pin yang sebenarnya merupakan pin digital tetapi sejumlah pin tersebut dapat diprogram kembali menjadi pin output analog dengan cara membuat programnya pada IDE. Papan Arduino Uno dapat mengambil daya dari USB port pada komputer dengan menggunakan USB charger atau dapat pula mengambil daya dengan menggunakan suatu AC adapter dengan tegangan 9 volt. Jika tidak terdapat power supply yang melalui AC adapter, maka papan Arduino akan mengambil daya dari USB port. Tetapi apabila diberikan daya melalui AC adapter secara bersamaan dengan USB port maka papan Arduino akan mengambil daya melalui AC adapter secara otomatis. 2.3. Software Arduino Software arduino yang digunakan adalah driver dan IDE, walaupun masih ada beberapa software lain yang sangat berguna selama pengembangan arduino. IDE atau Integrated Development Environment suatu program khusus untuk suatu komputer agar dapat membuat suatu rancangan atau sketsa program untuk papan Arduino. IDE arduino merupakan software yang sangat canggih ditulis dengan menggunakan java. IDE arduino terdiri dari: 1. Editor Program Sebuah window yang memungkinkan pengguna menulis dan mengedit program dalam bahasa processing 2. Compiler Sebuah modul yang mengubah kode program menjadi kode biner bagaimanapun sebuah mikrokontroler tidak akan bisa memahami bahasa processing. 3. Uploader Sebuah modul yang memuat kode biner dari komputer ke dalam memory di dalam papan Arduino Dalam bahasa pemrograman arduino ada tiga bagian utama yaitu : a. Struktur Program Arduino 1) Kerangka Program Kerangka program arduino sangat sederhana, yaitu terdiri atas dua blok. Blok pertama adalah void setup() dan blok kedua adalah void loop. Blok Void setup () : Berisi kode program yang hanya dijalankan sekali sesaat setelah arduino dihidupkan atau di-reset. Merupakan bagian persiapan atau instalasi program. 7 Universitas Sumatera Utara Blok void loop() : Berisi kode program yang akan dijalankan terus menerus. Merupakan tempat untuk program utama. 2) Sintaks Program Baik blok void setup loop () maupun blok function harus diberi tanda kurung kurawal buka “{“ sebagai tanda awal program di blok itu dan kurung kurawal tutup “}” sebagai tanda akhir program. b. Variabel : Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan angka dengan cara yang cerdas dengan menggunakan sebuah varibel. c. Fungsi :Pada bagian ini meliputi fungsi input output digital, input output analog, advanced I/O, fungsi waktu, fungsi matematika serta fungsi komunikasi. Pada proses Uploader dimana pada proses ini mengubah bahasa pemrograman yang nantinya dicompile oleh avr-gcc (avr-gcc compiler) yang hasilnya akan disimpan kedalam papan arduino. Avr-gcc compiler merupakan suatu bagian penting untuk software bersifat open source. Dengan adanya avr-gcc compiler, maka akan membuat bahasa pemrogaman dapat dimengerti oleh mikrokontroler. Proses terakhir ini sangat penting, karena dengan adanya proses ini maka akan membuat proses pemrogaman mikrokontroler menjadi sangat mudah. Berikut ini merupakan gambaran siklus yang terjadi dalam melakukan pemrogaman Arduino: 1. Koneksikan papan Arduino dengan komputer melalui USB port. 2. Tuliskan sketsa rancangan suatu program yang akan dimasukkan ke dalam papan Arduino. 3. Upload sketsa program ke dalam papan Arduino melalui kabel USB dan kemudian tunggu beberapa saat untuk melakukan restart pada papan Arduino. 4. Papan Arduino akan mengeksekusi rancangan sketsa program yang telah dibuat dan diupload ke papan Arduino. 2.4. Sumber Daya dan Pin Tegangan Arduino 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. 8 Universitas Sumatera Utara 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. 2.5. Bahasa Pemograman C Bahasa C dikembangkan pada Lab Bell pada tahun 1978, oleh Dennis Ritchi dan Brian W. Kernighan. Pada tahun 1983 dibuat standar C yaitu stnadar ANSI ( American National Standards Institute ), yang digunakan sebagai referensi dari berbagai versi C yang beredar dewasa ini termasuk Turbo C. Dalam beberapa literature, bahasa C digolongkan bahasa level menenganh karena bahasa C mengkombinasikan elemen bahasa tinggi dan elemen bahasa rendah. Kemudahan dalam level rendah merupakan tujuan diwujudkanya bahasa C. pada tahun 1985 lahirlah pengembangan ANSI C yang dikenal dengan C++ (diciptakan oleh Bjarne Struostrup dari AT % TLab). Bahasa C++ adalah pengembangan dari bahasa C. bahasa C++ mendukung konsep pemrograman berorientasu objek dan pemrograman berbasis windows. Sampai sekarang bahasa C++ terus brkembang dan hasil perkembangannya muncul bahasa baru pada tahun 1995 (merupakan keluarga C dan C++ yang dinamakan java). Istilah prosedur dan fungsi dianggap sama dan disebut dengan fungsi saja. Hal ini karena di C++ sebuah prosedur pada dasanya adalah sebuah fungsi yang tidak memiliki tipe data kembalian (void). Hingga kini bahasa ni masih popular dan penggunaannya tersebar di berbagai platform dari windows samapi linux dan dari PC hingga main frame. Ada pun kekurangan dan Kelebihan Bahasa C sebagai berikut : Kelebihan Bahasa C: · Bahasa C tersedia hampir di semua jenis computer. · Kode bahasa C sifatnya adalah portable dan fleksibel untuk semua jenis computer. · Bahasa C hanya menyediakan sedikit kata-kata kunci. hanya terdapat 32 kata kunci. · Proses executable program bahasa C lebih cepat · Dukungan pustaka yang banyak. · C adalah bahasa yang terstruktur · Bahasa C termasuk bahasa tingkat menengah Penempatan ini hanya menegaskan bahwa c bukan bahasa pemrograman yang berorientasi pada mesin yang merupakan ciri bahasa tingkat rendah. Melainkan berorientasi 9 Universitas Sumatera Utara pada obyek tetapi dapat dinterprestasikan oleh mesin dengan cepat. Secepat bahasa mesin inilah salah satu kelebihan c yaitu memiliki kemudahan dalam menyusun programnya semudah bahasa tingkat tinggi namun dalam mengesekusi program secepat bahasa tingkat rendah. Kekurangan Bahasa C: · Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai. · Bagi pemula pada umumnya akan kesulitan menggunakan pointer. Struktur Bahasa C a. Program bahasa C tersusun atas sejumlah blok fungsi. b. Setiap fungsi terdiri dari satu atau beberapa pernyataan untuk melakukan suatu proses tertentu. c. Tidak ada perbedaan antara prosedur dan fungsi. d. Sstiap program bahasa C mempunyai suatu fungsi dengan nama “main” (Program Utama). e. Fungsi bisa diletakkan diatas atau dibawah fungsin “main”. f. Setiap statemen diakhiri dengan semicolon (titik koma). 2.6. Pompa Air Pompa merupakan alat mekanis yang dipergunakan untuk memindahkan air dari suatu tempat ke tempat lain dengan elevasi yang lebih tinggi.Pompa biasanya didesain dengan dua (2) pengertian yang berbeda.Dengan hidraulik dan persyaratan dari cairan sebagai pertimbangan. Untuk klasifikasi ini pompa dapat disebut sebagai centrifugal, rotary, dan reciprocating. Gambar 2.6. Pompa Air 10 Universitas Sumatera Utara Berdasarkan tipe atau pemakaian tertentu dari pompa, misalnya deep well pump, pompa air kotor, pompa bahan kimia, dan lain-lain. Pada saat penentuan suatu jenis pompa yang akan dipakai, maka ada beberapa pertimbangan yang perlu diperhatikan. Diantaranya adalah: Head, Kapasitas, Sifat dari fluida yang akan dipindahkan, Perpipaan dan Penggerak . 2.7. Android Pengertian Android adalah sistem operasi berbasis Linux yang dipergunakan sebagai pengelola sumber daya perangkat keras, baik untuk ponsel, smartphone dan juga PC tablet. Secara umum Android adalah platform yang terbuka (Open Source) bagi para pengembang untuk menciptakan aplikasi mereka sendiri untuk digunakan oleh berbagai piranti bergerak. Dalam penyirman otomatis ini android yang berfungsi sebagai pengatur waktu melalui sinyal bloetooth.Waktu dapat diatur sebagaimana yang diinginkan oleh pengguna. Gambar 2.7. Android 11 Universitas Sumatera Utara