RANCANG BANGUN MODUL AKUISISI DATA UNTUK SISTEM IRIGASI OTOMATIS BERBASIS MIKROKONTROLER ARDUINO DUEMILANOVE
AKBAR RIYAN NUGROHO
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2011
ABSTRACT Akbar Riyan Nugroho. Design Data Acquisition Module For Arduino Duemilanove Microcontroller-Based Automatic Irrigation System. Under the supervision of Sri Wahjuni and Satyanto K. Saptomo. This research is part of activities in IMHERE B2C IPB Strengthening Agricultural Research For Food Security And Sovereignty. Implementation of the research project will assess the Development of Automated Irrigation Systems For Food Production Land with research focus on the mechanism of data acquisition. Data acquisition is performed using the Arduino Duemilanove microcontroller. Arduino Duemilanove can perform data retrieval as well as having an ADC module, so as to facilitate the conversion of data from analog data into digital data. From the datasheet, ADC module on the Arduino Duemilanove has an error range of ± 2 LSB or ± 0.0092 V with a reference voltage of 4.67 V. In this experiment measurements obtained by the difference in value between the multimeter and the microcontroller of 0.00840 V, and the scores fall in the range of values of the ADC module conversion error. SD Memory Card can be selected as a data logger for managing data storage easily. Keywords: Arduino Duemilanove, irigation, data acquisition
RANCANG BANGUN MODUL AKUISISI DATA UNTUK SISTEM IRIGASI OTOMATIS BERBASIS MIKROKONTROLER ARDUINO DUEMILANOVE
AKBAR RIYAN NUGROHO
Skripsi Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2011
Judul Nama NRP
: Rancang Bangun Modul Akuisisi Data Untuk Sistem Irigasi Otomatis Berbasis Mikrokontroler Arduino Duemilanove : Akbar Riyan Nugroho : G64070072
Menyetujui: Pembimbing I,
Pembimbing II,
Ir. Sri Wahjuni, M.T. NIP. 19680501 200501 2 001
Dr. Satyanto K. Saptomo, S.TP, M.Si NIP. 19730411 200501 1 002
Mengetahui : Ketua Departemen Ilmu Komputer
Dr. Ir. Sri Nurdiati, M.Sc. NIP. 19601126 198601 2 001
Tanggal Lulus :
PRAKATA Alhamdulilahirobbil’alamin, segala puji bagi Alloh yang telah memberikan kenikmatan iman sehingga bisa mengotimalkan potensi-potensi yang telah Alloh berikan. Skripsi yang berjudul Rancang Bangun Modul Akuisisi Data Untuk Sistem Irigasi Otomatis Berbasis Mikrokontroler Arduino Duemilanove dapat diselesaikan karena nikmat Alloh berupa akal untuk berfikir, ilmu yang bermanfaat, serta hati yang tergerak untuk melakukan hal yang bermanfaat. Sholawat serta salam saya tujukan kepada Nabi Muhammad, keluarganya, sahabat-sahabatnya, hingga umatnya hingga akhir zaman, dan semoga kita bisa mengikuti sunah beliau sehingga selamat dunia akhirat. Terima kasih kepada IPB melalui hibah penelitian IMHERE B2C IPB pada kegiatan Strengthening Agricultural Research For Food Security And Sovereignty pada sub kegiatan Advanced Infrastructure For Food Security And Sovereignty atas dukungan dana dan penyediaan alat dalam pengerjaan penelitian ini. Penulis menyadari bahwa tugas akhir ini dapat terselesaikan karena dukungan dan doa dari berbagai pihak. Pada kesempatan ini penulis ingin mengucapkan terima kasih kepada: 1. Orang tua tercinta, bapak Sumedi dan ibu sulasmi, adik saya yang saya sayangi Diah Ayu Widowati. Semoga Alloh membalas kebaikan serta doa-doa kalian. 2. Ibu Ir. Sri Wahjuni, M.T dan bapak Dr. Satyanto K. Saptomo, S.TP, M.Si selaku dosen pembimbing tugas akhir. Terima kasih atas kesabaran serta ilmu yang diberikan, semoga Alloh mencatatnya sebagai amalan kebaikan. 3. Bapak Hendra Rahmawan, S.kom, M.T selaku dosen penguji pada ujian skripsi. Semoga saya bisa segera memperbaiki tulisan ini dari masukan yang bapak berikan. 4. Ibu Dr. Ir. Sri Nurdiati, M.Sc karena nasehat-nasehat beliau, serta saya meminta maaf yang sedalam-dalamnya karena ketidak fahaman saya serta kurang amanahnya saya ketika menjadi Ketua Umum HIMALKOM. 5. Bapak Ahmad Ridha, S.kom, M.S selaku dosen pembimbing akademik. Berkat bapak saya bisa berjalan sesuai dengan arah yang benar, terutama saat mengambil mata kuliah. 6. Sahabat-sahabat satu perjuangan. Semoga kita bisa tetap istiqomah menggapai ridho Ilahi. Tetap berjuang dan terus berkarya dalam dakwah, karena kita diciptakan untuk beribadah kepada Alloh. 7. Sahabat-sahabatku yang pernah aku pimpin atau pernah memimpinku. Saya ucapkan mohon maaf jika banyak menyakiti kalian serta tidak amanah dalam melakukan kewajiban. 8. Seluruh staf Departemen Ilmu Komputer IPB yang telah banyak membantu baik selama penelitian maupun selama perkuliahan. Penulis meminta maaf karena menyadari bahwa dalam penulisan tugas akhir ini masih terdapat banyak kekurangan dan kelemahan dalam berbagai hal karena keterbatasan kemampuan penulis. Penulis berharap Semoga tugas akhir ini bermanfaat.
Bogor, Agustus 2011
Akbar Riyan Nugroho
RIWAYAT HIDUP Akbar Riyan Nugroho dilahirkan di Banyumas, Jawa Tengah, pada tanggal 14 Juli 1989 dan merupakan anak pertama dari pasangan bapak Sumedi dan ibu Sulasmi. Pada tahun 2007 penulis lulus dari Sekolah Menengah Atas Negeri (SMAN) 3 Malang dan pada tahun yang sama penulis diterima di Program Studi Ilmu Komputer Institut Pertanian Bogor melalui jalur Undangan Seleksi Masuk IPB (USMI). Pada tahun 2008 penulis aktif dalam organisasi Dewan Perwakilan Mahasiswa Keluarga Mahasiswa (DPMKM) sebagai anggota Divisi Internal dan Majelis Permusyawaratan Mahasiswa Keluarga Mahasiswa (MPMKM) sebagai Koordinator Badan Pengawas Mahkamah dan Konstitusi. Mulai tahun 2009 penulis aktif dalam organisasi Himpunan Mahasiswa Ilmu Komputer (HIMALKOM) sebagai Sekretaris Umum dan di tahun 2010 sebagai Ketua Umum HIMALKOM, selanjutnya di tahun 2011 aktif menjadi anggota Badan Pengawas Himpro. Selama kuliah di IPB, penulis pernah menjadi asisten praktikum mata kuliah Rangkaian Digital, Penerapan Komputer, Organisasi Komputer, Basis Data, dan Pendidikan Agama Islam. Pada tahun 2010 penulis meraih gelar peserta terbaik dalam acara Intensive-Student Technopreneurship Program (I-STEP). Penulis juga melakukan praktik kerja lapang di Bank Indonesia Kantor Pusat Jakarta.
DAFTAR ISI Halaman DAFTAR GAMBAR ...................................................................................................................... vii DAFTAR TABEL........................................................................................................................... vii DAFTAR LAMPIRAN ................................................................................................................... vii PENDAHULUAN ............................................................................................................................ 1 Latar Belakang ............................................................................................................................. 1 Tujuan Penelitian .......................................................................................................................... 1 Ruang Lingkup Penelitian ............................................................................................................. 1 Manfaat Penelitian ........................................................................................................................ 1 TINJAUAN PUSTAKA .................................................................................................................... 1 Arduino ........................................................................................................................................ 1 Arduino Duemilanove ATmega328P ............................................................................................. 1 Memori-memori ATmega328P...................................................................................................... 2 Arduino-0022 ............................................................................................................................... 2 USART ........................................................................................................................................ 3 Serial Monitor .............................................................................................................................. 3 ADC ............................................................................................................................................. 3 SD Module (SKU: DFR0071) ....................................................................................................... 4 METODE PENELITIAN .................................................................................................................. 4 Analisis Sistem ............................................................................................................................. 4 Perancangan ................................................................................................................................. 4 Implementasi ................................................................................................................................ 6 Pengujian...................................................................................................................................... 6 Analisis Kinerja ............................................................................................................................ 7 HASIL DAN PEMBAHASAN.......................................................................................................... 7 Pengambilan Data ......................................................................................................................... 7 Manajemen Memori ...................................................................................................................... 8 Simulasi Aktuator ......................................................................................................................... 9 I/O Device .................................................................................................................................... 9 Pengujian Sistem .......................................................................................................................... 9 KESIMPULAN DAN SARAN........................................................................................................ 12 Kesimpulan ................................................................................................................................ 12 Saran .......................................................................................................................................... 12 DAFTAR PUSTAKA ..................................................................................................................... 12 LAMPIRAN ................................................................................................................................... 13
DAFTAR GAMBAR Halaman 1 Skema Arduino Duemilanove.................................................................................................... 2 2 Program memory map ATmega328P. ....................................................................................... 2 3 Data memory map ATmega328P............................................................................................... 2 4 Tampilan Arduino-002. ............................................................................................................. 3 5 Serial monitor. .......................................................................................................................... 3 6 SD Modul (SKU: DFR0071). .................................................................................................... 4 7 Metode penelitian. .................................................................................................................... 4 8 Arsitektur diagram sistem irigasi otomatis secara keseluruhan. .................................................. 5 9 Blok diagram rancang bangun sistem menggunakan float switch. ............................................... 5 10 Blok diagram rancang bangun sistem menggunakan thermocouple........................................... 5 11 Flow chart rancang bangun menggunakan sensor float switch. ................................................. 6 12 Flow chart rancang bangun menggunakan sensor thermocouple............................................... 6 13 Blok diagram pengujian sistem menggunakan float switch. ...................................................... 6 14 Blok diagram pengujian sistem menggunakan thermocouple. ................................................... 7 15 Ilustrasi pengaruh resolusi adc terhadap nilai kode digital. ....................................................... 7 16 Ilustrasi kode program pengambilan data. ................................................................................ 8 17 Ilustrasi kode program penggunaan pin digital. ........................................................................ 9 18 Grafik nilai pengambilan data menggunakan multimeter dan mikrokontroler ......................... 11
DAFTAR TABEL Halaman 1 Perbedaan rancang bangun menggunakan sensor float Switch dan sensor thermocouple ............. 5 2 Hasil identifikasi memori pada arduino duemilanove beserta karekteristiknya ............................ 8 3 Hasil pengujian rancangan bangun menggunakan sensor float switch ....................................... 10 4 Hasil penghitungan data dengan tegangan referensi 5v ............................................................ 10 5 Hasil penghitungan data dengan tegangan referensi 4,76v ........................................................ 10 6 Hasil pengujian rancangan bangun menggunakan sensor thermocouple.................................... 11
DAFTAR LAMPIRAN Halaman 1 Blok diagram arsitektur AVR .................................................................................................. 14 2 Gambar sensor float switch ..................................................................................................... 15 3 Koneksi SD Modul dengan Arduino ........................................................................................ 15 4 Dokumentasi rancang bangun menggunakan sensor float switch .............................................. 16 5 Dokumentasi rancang bangun menggunakan sensor thermocouple ........................................... 16 6 Tampilan serial monitor dari rancang bangun menggunakan sensor float switch....................... 17 7 Tampilan serial monitor saat gagal koneksi antara SD Modul dengan mikrokontroler .............. 17 8 Tampilan serial monitor ketika akan melakukan pengaturan penggunaan sistem ...................... 18 9 Tampilan serial monitor ketika telah melakukan pengaturan penggunaan sistem ...................... 18 10 Harga serta alat-alat yang digunakan dalam rancang bangun menggunakan float switch ......... 19 11 Harga serta alat-alat yang digunakan dalam rancang bangun menggunakan thermocouple ...... 19 12 Kode program rancang bangun menggunakan sensor float switch .......................................... 19 13 Kode program rancang bangun menggunakan sensor thermocouple ....................................... 20
vii
PENDAHULUAN Latar Belakang Irigasi merupakan penambahan air secara buatan untuk mengatasi kekurangan kadar air tanah. Pada dasarnya bermacam-macam cara yang dilakukan dalam melakukan irigasi memunyai tujuan yang sama, tetapi dalam penerapannya dibutuhkan suatu kondisi yang berbeda. Kondisi tersebut menyesuaikan dengan keadaan lingkungan dan kebutuhan tanaman akan air. Sistem irigasi otomatis diterapkan untuk menciptakan lingkungan yang sesuai dengan kebutuhan. Satyanto et al (2011) mengembangkan sistem irigasi otomatis dengan Fuzzy Timer Control untuk mengontrol ketinggian air. Sistem irigasi otomatis yang dibangun diterapkan pada teknologi SRI untuk tanaman padi. Penelitian ini merupakan bagian kegiatan IMHERE IPB pada kegiatan Strengthening Agricultural Research For Food Security And Sovereignty pada sub kegiatan Advanced Infrastructure For Food Security And Sovereignty. Pelaksanaan kegiatan penelitian ini akan mengkaji Development of automated irrigation system for food production land dengan fokus penelitian pada mekanisme akuisisi data. Akuisisi data yang dilakukan menggunakan mikrokontroler Arduino Duemilanove. Tujuan Penelitian Penelitian ini bertujuan untuk: 1.
2.
Mengetahui mekanisme pengambilan dan penyimpanan data pada mikrokontroler Arduino Duemilanove. Membuat rancang bangun sistem irigasi otomatis berbasis mikrokontroler Arduino Duemilanove.
Ruang Lingkup Penelitian Ruang lingkup dari penelitian ini adalah: 1. 2. 3. 4.
Modul ADC sudah terintegrasi ke dalam minimum system. Pengambilan data dilakukan pada sensor dengan nilai keluaran 0-Vcc volt. Percobaan dilakukan pada lingkungan model. Tidak termasuk proses pengiriman data ke main controller.
5. 6.
Aktuator hanya berupa simulasi. Komunikasi dengan perangkat menggunakan komunikasi serial.
lain
Manfaat Penelitian Adanya rancang bangun mekanisme akuisisi data pada sistem irigasi otomatis yang dapat diadaptasikan sesuai dengan kebutuhan lapang.
TINJAUAN PUSTAKA Arduino Arduino merupakan rangkaian elektronik yang bersifat open-source, serta memiliki perangkat keras dan lunak yang mudah untuk digunakan. Arduino dapat mengenali lingkungan sekitarnya melalui berbagai jenis sensor dan dapat mengendalikan lampu, motor, dan berbagai jenis aktuator lainnya. Arduino memunyai banyak jenis, di antaranya adalah Arduino Nano, Arduino BT, LilyPad Arduino, Arduino Duemilanove, dan lainnya. (www.arduino.cc) Arduino Duemilanove ATmega328P Arduino Duemilanove dengan ATmega328P memunyai 14 digital input/output (6 di antaranya dapat digunakan untuk PWM outputs), 6 analog inputs, 16 MHz crystal oscillator, USB connection, power jack, ICSP header, dan reset button. Skema Arduino Duemilanove ATmega328P dapat dilihat pada Gambar 1 dengan ciri-ciri sebagai berikut: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Operating voltage 5V. Rekomendasi input voltage 7-12V. Batas input voltage 6-20V. Memiliki 14 buah digital input/output. Memiliki 6 buah Analog Input. DC Current setiap I/O Pin sebesar 40 mA. DC Current untuk 3.3V Pin sebesar 50 mA. Flash Memory 32 KB. SRAM 2 KB. EEPROM 1 KB. Clock Speed 16 MHz.
(www.arduino.cc)
1
Purphose Register), 64 I/O register, Additional I/O register, dan Internal SRAM. Data memory map dari SRAM dapat dilihat pada Gambar 3. Sifat dari memori ini adalah volatile sehingga data yang ada pada SRAM akan hilang ketika sudah tidak diberikan catu daya.
32 GPR 64 I/O register Gambar 1 Skema Arduino Duemilanove. Skema Arduino Duemilanove ATmega328P didasarkan pada blog diagram dari ATmega328P. Blog diagram tersebut dapat dilihat pada Lampiran 1.
160 extended I/O register Internal SRAM
0x0000 0x001F 0x0020 0x005F 0x0060 0x00FF 0x0100 0x07FF
Memori-memori ATmega328P
Gambar 3 Data memory map ATmega328P.
Manajemen memori dalam mikrokontroler penting dilakukan karena memori yang dimiliki mikrokontroler sangat terbatas. Pada Atmega328P terdapat tiga jenis memori, yaitu data memory, program memory, dan EEPROM. Bus ketiga memori tersebut terpisah, sehingga dapat mengakses ketiga jenis memori tersebut dalam waktu yang bersamaan.
EEPROM biasa digunakan untuk menyimpan data long-term karena sifatnya yang non-volatile. Ketika tidak mendapat catu daya, data yang tersimpan dalam EEPROM tidak akan hilang. EEPROM memiliki ketahanan tulis atau hapus sebanyak 10.000 kali (Atmel 2009).
ATmega328P menggunakan Flash Memory untuk program memory. Flash Memory dibagi menjadi dua bagian, yaitu Boot Loader dan Aplication Program. Pembagian ini bertujuan untuk keamanan perangkat lunak. Flash Memory memiliki ketahanan tulis atau hapus sebanyak 10.000 kali. Program memory map dapat dilihat pada Gambar 2. 0x0000
0x3FFF
Gambar 2 Program memory map ATmega328P.
Arduino-0022 Arduino-022 merupakan open-source Arduino environtment yang digunakan untuk penulisan kode. Dengan menggunakan Arduino-022 penulisan kode menjadi mudah dan kode yang ditulis dapat diunggah ke Arduino. Software ini dapat digunakan di Windows, Mac OS X, dan Linux. Arduino environtment ditulis dalam bahasa Java dengan didasarkan pada Processing, avr-gcc, dan open source software lainnya. Bahasa pemrograman Arduino didasarkan pada bahasa pemrograman C/C++ serta terhubung dengan AVR Libc sehingga dapat menggunakan fungsi-fungsi yang terdapat pada AVR Libc. AVR Libc berisi fungsi-fungsi yang digunakan untuk menggunakan AVR, seperti pengaturan register. Pada Arduino-0022 penggunaan AVR Libc dipermudah karena secara default library pada Arduino-0022 sudah mencakup AVR Libc tanpa kita harus tau AVR Libc mana yang digunakan. Jika dalam penulisan kode membutuhkan AVR Libc, maka penambahan AVR Libc pada header kode program dapat dilakukan. Tampilan Ardino-0022 dapat dilihat pada Gambar 4.
SRAM digunakan oleh ATmega328P untuk data memory. Kapasitas SRAM dari ATmega328P adalah 2KB. SRAM terbagi menjadi empat bagian yaitu 32 GPR (General
2
Gambar 5 Serial monitor. Gambar 4 Tampilan Arduino-002. (www.arduino.cc) USART USART (Universal Synchronous and Asynchronous Serial Receiver and Transmitter) dapat difungsikan sebagai transmisi data sinkron dan asinkron. Sinkron berarti clock yang digunakan antara transmitter dan receiver satu sumber clock. Asinkron berarti transmitter dan receiver memunyai sumber clock yang berbeda. USART terbagi dalam tiga blog yaitu clock generator, transmitter, dan receiver (Ardi 2010). Komunikasi serial ini penting difahami karena selain beberapa interface menggunakan mode serial, komunikasi ini bisa kita manfaatkan sebagai pemantau program saat berjalan (debugging). Misalkan kita akan menganalisis suatu kondisi suhu, ini bisa kita lihat dari monitor dengan ditransmisikan ke komputer secara serial (Ary et al 2008). Serial Monitor Pada Arduino-0022 terdapat serial monitor. Serial monitor berfungsi untuk menampilkan data yang terdapat pada Arduino. Selain itu, melalui Serial Monitor juga dapat mengirimkan data ke Arduino. Pengirim data ke Arduino dilakukan dengan cara memasukkan data yang ingin dikirim dan dan menekan tombol send atau menekan enter (www.arduino.cc). Tampilan dari Serial Monitor dapat dilihat pada Gambar 5. Baud-rate pada serial monitor harus sama dengan Serial.begin pada kode program. Hal tersebut dilakukan agar terjadi kecocokan dalam komunikasi. Baud-rate memiliki satuan bit per second.
ADC ADC atau kepanjangan dari Analog to Digital Converter merupakan alat yang digunakan untuk mengubah data analog menjadi data digital. Pada Arduino Duemilanove sudah terdapat modul ADC, sehingga dapat langsung digunakan. Fitur ADC yang terdapat pada ATmega328P adalah sebagai berikut: 1. 2. 3. 4. 5. 6.
Resolusi mencapai 10-bit. 0,5 LSB Integral Non-linearity. Akurasi mencapai ± 2 LSB. Waktu konversi 13-260 μs. Memunyai 6 saluran ADC. Optional Left Adjustment untuk pembacaan hasil ADC. 7. 0 - vcc untuk kisaran input ADC. 8. Disediakan 1,1V tegangan referensi ADC. 9. Mode konversi kontinyu atau konversi. 10. Interupsi ADC. 11. Sleep mode noise canceler.
(Atmel 2009). Sinyal input dari pin ADC akan dipilih oleh multiplexer (register ADMUX) untuk diproses oleh ADC. Karena converter ADC dalam chip hanya satu buah sedangkan saluran masukannya lebih dari satu, maka dibutuhkan multiplexer untuk memilih input pin ADC secara bergantian. ADC memunyai rangkaian untuk mengambil sampel dan hold (menahan) tegangan input ADC, sehingga tetap dalam keadaan konstan selama proses konversi. Sinyal input ADC tidak boleh melebihi tegangan referensi. Nilai digital sinyal input ADC untuk resolusi 10-bit (1024) ditulis dalam Persamaan 1. Kode digital = (Vinput / Vref)x1024 (1)
3
Nilai digital sinyal input ADC untuk resolusi 8bit (256) ditulis dalam Persamaan 2: Kode digital = (Vinput / Vref)x256 (2) (Andi 2010). Dengan demikian untuk mencari nilai digital, dapat dinyatakan dengan Persamaan 3.
METODE PENELITIAN Penelitian ini dibagi ke dalam beberapa tahapan, yaitu analisis sistem, perancangan, implementasi, pengujian, dan analisis kinerja. Alur metode penelitian dapat dilihat pada Gambar 7.
Kode digital=(tegangan yang masuk / tegangan referensi)xresolusi (3)
Analisis Sistem
SD Module (SKU: DFR0071) Perancangan
SD Card Shield atau SD Modul merupakan solusi untuk mengirim data ke SD card. SD Modul dapat dilihat pada Gambar 6.
Implementasi
Pengujian
Analisis Kerja Gambar 7 Metode penelitian. Gambar 6 SD Modul (SKU: DFR0071). Pinout dari SD Card Shield dapat dihubungkan ke Arduino maupun mikrokontroler lainnya, sehingga bermanfaat untuk menambah kapasitas tempat penyimpanan data dan pencatatan data. SD Card Shield ini dapat langsung dipasang pada Arduino dan terdapat switch untuk memilih flash card slot. Keistimewaan dari SD Module ini adalah: 1. Terdapat modul untuk standar SD card dan Micro SD (TF) card. 2. Terdapat switch untuk memilih flash card slot. 3. Dapat dipasang langsung pada Arduino. 4. Dapat digunakan untuk mikrokontroler lain. (www.dfrobot.com).
Analisis Sistem Tahap ini dilakukan untuk memprediksi cara kerja sistem dalam melakukan akuisisi data hingga memprediksi mekanisme pengujian sistem. Hal-hal tersebut meliputi: 1. 2.
3. 4. 5.
Cara memperoleh data. Analisis memori yang digunakan beserta kegunaan, perbedaan, dan cara penyimpanan data. Simulasi aktuator. Menentukan I/O device untuk memantau program saat dijalankan. Pengujian sistem.
Perancangan Sistem irigasi otomatis dibangun untuk memudahkan pemantauan dan pengontrolan kebutuhan air di suatu tempat. Gambar 8 merupakan rancangan sistem irigasi secara keseluruhan yang terdiri dari dua bagian yaitu field controller dan main controller.
4
Main Controller
Field Controller
Penyimpanan Data
Komputer
GSM
GSM
Mikrokontroler
Sensor
Aktuator
Gambar 8 Arsitektur diagram sistem irigasi otomatis secara keseluruhan. Dalam penelitian kali ini akan dibangun rancang bangun sistem irigasi otomatis khususnya pada mekanisme akuisisi data. Secara garis besar rancangan sistem yang akan dibangun meliputi mekanisme pengambilan data, penyimpanan data, I/O device, dan aktuator. Terdapat dua model rancang bangun sistem guna mencapai sistem irigasi pada Gambar 8, yaitu sebagai berikut: 1.
2.
Sistem konvensional berbasis dua state. Sistem dibangun menggunakan sensor float switch. Pemilihan sensor ini karena keluaran dari sensor float switch hanya bernilai high atau low. Sistem yang mendukung Fuzzy Timer
Control. Sistem ini dibangun menggunakan sensor thermocouple. Sensor ini dipilih karena nilai keluarannya sesuai dengan keadaan lingkungan saat pengambilan data, sehingga mendukung Fuzzy Timer Control. Perbedaan rancang bangun menggunakan sensor float switch dan sensor thermocouple dapat dilihat pada Tabel 1, sedangkan blok diagram rancang bangun menggunakan sensor float switch dan sensor thermocouple dapat dilihat pada Gambar 9 dan Gambar 10. Alur program rancang bangun menggunakan sensor float switch dan sensor thermocouple dapat dilihat pada Gambar 11 dan Gambar 12.
Tabel 1 Perbedaan rancang bangun menggunakan sensor float switch dan sensor thermocouple No
Keterangan
Rancang Bangun Menggunakan Sensor Float Switch
Rancang Bangun Menggunakan Sensor Thermocouple
1.
Sensor
Float Switch
Thermocouple
2.
Mekanisme Penyimpanan Data
Tidak Menggunakan
Menggunakan
3.
Simulasi Aktuator
Ada
Ada
4.
Tujuan
Pengaturan irigasi yang hanya didasarkan pada keadaan ON/OFF
Membangun sistem irigasi mendukung Fuzzy Timer Control
yang
Penyimpanan Data I/O Device
Mikrokontroler
Sensor I/O Device
Mikrokontroler
Sensor
Aktuator Aktuator
Gambar 9 Blok diagram rancang bangun sistem menggunakan float switch.
Gambar 10 Blok diagram rancang bangun sistem menggunakan thermocouple.
5
Mulai
Baca Sensor pada port A0, A1
Valve=High
A0>0 A1==0 Valve=Low
Gambar 11 Flow chart rancang bangun menggunakan sensor float switch.
sesuai dengan Gambar 13. Aktuator akan disimulasikan secara real time dengan LED. Sensor memperoleh data yang berasal dari tabung air, dimana ketinggian air pada tabung dapat diatur. Dokumentasi rancang bangun menggunakan sensor float switch dapat dilihat pada Lampiran 4. Sensor float switch terhubung dengan Arduino melalui port A0 dan A1, LED melalui port digital no 13, dan komunikasi dengan komputer melalui USB Serial Port. Pada antar muka serial monitor akan ditampilkan nilai dari kedua sensor flaot switch, sehingga kita bisa mengetahui dan memantau nilainya. Tampilan dari antar muka serial monitor untuk rancang bangun menggunakan sensor float switch dapat dilihat pada Lampiran 6.
Mulai
c
A
B D
Create File .csv
E A = Mikrokontroler B = Komputer C = Tabung Air
Setting Awal
Ya Ambil Data
Tidak Simulasi Valve
Tulis Data
waktu==samplingTime
Gambar 12 Flow chart rancang bangun menggunakan sensor thermocouple. Implementasi Rancangan dari sistem akan diterapkan pada lingkungan model. Sensor dipilih atau diatur agar memiliki nilai keluaran 0-Vcc. Nilai keluaran tersebut dibatasi karena modul ADC hanya bisa mengenali input dengan nilai tidak melebihi tegangan referensi. Tegangan referensi yang digunakan sebesar Vcc. Pengujian Rancang bangun dengan sensor float switch diuji dengan membangun lingkungan percobaan
D = LED E = Float Switch
Gambar 13 Blok diagram pengujian sistem menggunakan float switch. Rancang bangun dengan sensor thermocouple diuji dengan pengambilan data dalam waktu 10 menit sebanyak sepuluh kali. Data yang diperoleh dibandingkan dengan nilai akurasi ADC pada manual book mikrokontroler. Aktuator disimulasikan secara real time dengan LED. Lingkungan percobaan sistem kedua dapat dilihat pada Gambar 14. Dokumentasi rancang bangun menggunakan sensor float switch dapat dilihat pada Lampiran 5. Sensor thermocouple terhubung dengan Arduino melalui port A5, LED melalui port digital no 9, komunikasi dengan komputer melalui USB Serial Port, dan untuk komunikasi Arduino dengan SD Modul dapat dilihat pada Lampiran 3. Pada antar muka serial monitor rancang bangun menggunakan sensor thermocouple akan ditampilkan pengaturan penggunaan sistem, meliputi: 1. 2. 3.
Lama pengambilan data. Batas atas air. Batas bawah air.
6
Sebelumnya juga akan dilakukan pengecekan terhadap koneksi dari SD Modul. Jika koneksi terhadap SD Modul gagal, maka tampilan serial monitor dapat dilihat pada Lampiran 7. Setelah koneksi antara SD Modul dan mikrokontroler berhasil, maka akan dilakukan pengaturan penggunaan sistem, yaitu memasukkan nilai dari pengambilan data, batas atas, dan batas bawah. Tampilan serial monitor saat akan dilakukan pengaturan sistem dapat dilihat pada Lampiran 8 dan pada Lampiran 9 dapat dilihat tampilan serial monitor ketika progam berjalan. Saat program berjalan pada serial monitor akan ditampilkan no pengambilan data, data dari A0, dan data dari A1. C
A
B
Diketahui: Resolusi 1=10-bit Resolusi 2 = 8-bit Vref = 5 V Vinput = (Kode Digital x Vref)/1024 Maka nilai Vinput untuk setiap satuan Kode Digital adalah: Pada Resolusi 1: Vinput1 = (1x5)/1024 = 0,0048 V Pada Resolusi 2: Vinput2 = (1x5)/256 = 0,0195 V Jadi, terbukti resolusi 1 mampu mengenali input lebih detail dari pada resolusi 2.
E
D A = Mikrokontroler B = Komputer C = SD Card
baik. Berdasarkan Persamaan 3, sebagai ilustrasi perhatikan Gambar 15 di bawah ini.
D = LED E = Termocouple
Gambar 14 Blok diagram pengujian sistem menggunakan thermocouple. Analisis Kinerja Berdasarkan data yang diperoleh dan perlakuan-perlakuan yang dilakukan, maka akan dilakukan analisis. Analisis ini dilakukan agar data hasil pengujian dapat digunakan dan dijadikan rujukan untuk pembangunan sistem lebih lanjut.
HASIL DAN PEMBAHASAN Pengambilan Data Sensor merupakan alat yang digunakan untuk mengenali lingkungan. Sensor dapat terhubung secara langsung dengan mikrokontroler melalui port analog. Data yang diberikan sensor berupa data analog, sedangkan mikrokontroler dalam pengolahan data menggunakan data digital. Oleh sebab itu supaya data yang diterima mikrokontroler berupa data digital dibutuhkan modul ADC.
Gambar 15 Ilustrasi pengaruh resolusi adc terhadap nilai kode digital. Ilustrasi pada Gambar 15 menjelaskan pentingnya untuk melakukan analisis nilai yang akan dikeluarkan sensor. Hal tersebut dikarenakan mikrokontroler memunyai batas kemampuan membaca masukan sesuai dengan resolusi dari ADC. Jika membutuhkan akurasi yang tinggi, maka resolusinya harus diperbesar. Pada ATmega328P digunakan resolusi 10-bit atau 1024. Modul ADC terletak pada port C dari mikrokontroler atau biasa disebut dengan pin analog. Arduino Duemilanove memunyai 6 pin analog yang dapat digunakan untuk membaca masukan dari sensor. Dikarenakan mikrokontroler hanya memunyai satu register untuk menyimpan hasil konversi yaitu ADLAR, maka pengambilan data dilakukan secara bergantian untuk setiap pin analog. Penulisan kode program menggunakan Arduino-0022, dimana pin analog di kodekan dengan angka 05 atau A0-A5. Pada Gambar 16 dapat dilihat ilustrasi penggunaan pin analog pada kode pemrograman.
Resolusi data dari modul ADC nantinya akan mempengaruhi akurasi dari data. Semakin besar resolusinya, maka akurasinya semakin
7
berfungsi sebagai indikator ketinggian air. Berbeda halnya dengan float switch, sensor thermocouple memberikan nilai masukan yang bervariasi antara 0-Vcc.
void setup () { … } void loop () { … //kode program untuk membaca sensor pada pin analog 1 dan kemudian disimpan pada variabel sensorValue1
Nilai dari thermocouple dipengaruhi oleh suhu. Jika suhu meningkat, maka nilai masukan ke mikrokontroler akan semakin besar. Nilai keluaran thermocouple mencerminkan keadaan lingkungan saat itu, sehingga memungkinkan untuk dikembangkan ke arah Fuzzy Timer Control. Untuk implementasi sistem irigasi dalam menggunakan Fuzzy Timer Control, sensor thermocouple dapat diganti dengan sensor tekanan air atau kelembapan tanah. Penggantian tersebut tidak menjadi masalah dengan syarat sensor pengganti memunyai karakteristik keluaran yang sama dengan sensor thermocouple.
sensorValue1 = analogRead(A1); //kode program untuk membaca sensor pada pin analog 2 dan kemudian disimpan pada variabel sensorValue1 sensorValue2 = analogRead(2); … } Gambar 16 Ilustrasi kode program pengambilan data.
Manajemen Memori Arduino Duemilanove memiliki tiga jenis memori yaitu SRAM, EEPROM, dan Flash memory, selain itu bisa juga ditambah dengan SD Card. Memori-memori tersebut memiliki fungsi dan karakteristik yang berbeda-beda. Table 2 menampilkan hasil identifikasi memori pada Arduino Duemilanove beserta karakteristiknya.
Sensor yang digunakan dalam percobaan adalah float switch dan thermocouple. Sensor float switch hanya memberikan nilai 0 atau 1, sehingga nilai sensor yang tertera pada serial monitor atau yang dikenali mikrokontroler adalah 0 atau 1023. Jika dianalogikan, float switch mirip dengan saklar. Float switch
Tabel 2 Hasil identifikasi memori pada arduino duemilanove beserta karekteristiknya No
Keterangan
Flash Memory
SRAM
EEPROM
1
Fungsi
Tempat kodekode program
Memori tempat eksekusi program yang dilakukan oleh ALU
Tempat menyimpan informasi yang sifatnya long-term
Data loggerMemory
2
Sifat
Non-volatile
Volatile
Non-volatile
Non-volatile
3
Kapasitas
32 KBytes
2 KBytes
1 KBytes
1 GBytes
Percoabaan kali ini membutuhkan data memory, program memory, dan data logger memory. Data memory digunakan untuk membantu eksekusi program yang dilakukan oleh ALU (Arithmatich Logic Unit) dan mengendalikan bermacam-macam pheripheral seperti port, USART, timer/counter, dan lainlain. Program memory digunakan untuk menyimpan kode-kode program dari sistem yang dibangun. Data logger memory digunakan untuk mencatat serta menyimpan data hasil pembacaan sensor.
SD Card
ATmega328P telah menyediakan data memory dan program memory, sehingga kita bisa langsung menggunakannya. Secara default, data memory akan difasilitasi oleh ATmega328P berupa SRAM. Program memory akan menggunakan flash memory. EEPROM yang disediakan oleh ATmega328P bisa digunakan sebagai data logger memory, tetapi ada beberapa pertimbangan yang menjadikan pencarian solusi lain terkait penggunaan EEPROM untuk data logger memory yaitu: 1.
Hanya mampu melakukan tulis/hapus sebanyak 100.000 kali.
8
2.
Maintenance susah dilakukan karena embedded ke board mikrokontroler.
Menjawab permasalahan tersebut, kita akan menggunakan SD Card. Walaupun SD Card juga hanya mampu melakukan tulis/hapus sebanyak 100.000 kali, tetapi mudah untuk dilakukan maintenance. Hal tersebut dikarenakan SD Card dipasang secara portable. Data yang disimpan ke dalam SD Card berupa file dengan format csv. Cara penyimpanan dalam format csv dipilih karena akan memudahkan untuk memanipulasi data hasil pembacaan dari sensor. Di setiap pengambilan data akan ditentukan sampling time, batas atas air, batas bawah air, dan akan dilakukan pencatatan hasil pembacaan dari sensor. SD Card terhubung dengan mikrokontroler dengan menggunakan SD Modul. Koneksi antara SD Modul dengan Arduino Duemilanove dapat dilihat pada Lampiran 3. SD Card ini hanya digunakan untuk rancang bangun sistem menggunakan sensor thermocouple. Pada rancang bangun pertama tidak digunkan SD Card karena pada rancang bangun pertama hanya ingin diketahui keberhasilan mikrokontroler dalam mengenali nilai keluaran sensor dan nilai keluaran dari sensor juga hanya bernilai high atau low, sehingga tidak perlu disimpan saat akan dilakukan analisis. Simulasi Aktuator Aktuator merupakan peralatan mekanis yang berfungsi untuk mengontrol suatu sistem. Pada sistem irigasi, aktuator digunakan untuk mengontrol valve. Valve berfungsi untuk mengatur aliran air, seperti membuka atau menutup pipa air untuk irigasi. Pada percobaan kali ini akan dibangun simulasi aktuator. Simulasi dibangun menggunakan LED. LED berfungsi sebagai penanda berjalannya irigasi. Jika lampu LED menyala, menandakan irigasi menyala atau pipa air terbuka. Jika lampu LED mati, menandakan tidak ada irigasi atau pipa air tertutup. Simulasi ini dilakukan menggunakan pin digital pada Arduino. Kode program pengaturan penggunaan pin digital dapat dilihat pada Gambar 17.
// Pemilihan pin digital untuk simulasi valve #define valve 9 void setup() { //mengatur pin digital sebagai output pinMode(valve, OUTPUT); } void loop(){ … //pin digital di set menyala digitalWrite(valve, HIGH); … //pin digital di set mati digitalWrite(valve, LOW); … } Gambar 17 Ilustrasi kode program penggunaan pin digital. Pada Gambar 17, nilai variabel valve adalah 9. Pendefinisian ini berguna untuk menentukan nomer pin digital yang akan digunakan. Kata HIGH menunjukkan pin digital tersebut menyala, sedangkan LOW menunjukkan pin digital tersebut mati. I/O Device Pemantauan program saat program dijalankan perlu dilakukan. Pemantauan ini dilakukan agar kode yang ditulis dapat segera diperbaiki jika terjadi kesalahan. Selain itu, kita juga dapat melihat aliran data selama program berjalan. Proses tersebut dapat dilakukan pada software Arduino-0022. Software ini akan membantu dalam proses debugging dan upload. Selain itu terdapat fasilitas serial monitor untuk menampilkan data yang terdapat pada Arduino. Percobaan kali ini dibangun pada lingkungan model dan menggunakan software Ardunio0022, sehingga proses-proses tersebut akan dilakukan menggunakan I/O device berupa komputer. Komunikasi yang dibangun antara komputer dan mikrokontroler menggunakan USART. Pengujian Sistem Hasil rancang bangun menggunakan sensor float switch dapat dilihat pada Tabel 3. Cara kerja dari sensor float switch adalah nilai keluaran dari sensor adalah High ketika switch berada di bawah atau menggantung dan akan bernilai low pada saat switch berada di atas. Pada saat air mencapai batas bawah, maka LED
9
akan menyala hingga batas atas. Pada saat air berada di batas atas, LED dalam keadaan mati hingga mencapai batas bawah. Dengan kata lain LED akan selalu mengikuti keadaan awal high/low hingga nilai dari batas atas adalah low yang menyebabkan LED mati dan nilai dari batas bawah high yang menyebabkan LED menyala. Agar lebih jelas, gambar dari float switch dapat dilihat pada Lampiran 2.
0.013V untuk tegangan referensi 5V. untuk lebih jelasnya dapat dilihat pada Tabel 4. Tabel 4 Hasil penghitungan data dengan tegangan referensi 5v No
Posisi Air
Keadaan LED
Keadaan LED
(Awal)
(Saat ini)
Ketera ngan
1
Di atas batas atas
Menyala
Mati
Sukses
2
Di bawah batas bawah
Mati
Menyala
Sukses
3
Di antara dua batas
Mati
Mati
Sukses
4
Di antara dua batas
Menyala
Menyala
Sukses
Pada uji coba menggunakan thermocouple, dilakukan pengambilan data selama sepuluh menit sebanyak sepuluh kali. Pengambilan dilakukan pada pukul enam pagi. Sebelum data dari thermocouple diambil, nilai keluaran dari sensor diukur terlebih dahulu menggunakan multimeter. Rata-rata data yang dihasilkan oleh ADC nantinya akan dibandingkan dengan hasil ukur multimeter. Setelah itu, akan dibandingkan dengan nilai kesalahan konversi ADC pada manual book. Setelah dilakukan percobaan untuk pengambilan pertama, hasil pengukuran menggunakan multimeter adalah 1,149V. Ratarata nilai digital dari pengambilan data selama sepuluh menit adalah 244,994. Kemudian dilakukan penghitungan menggunakan Persamaan 1, maka diperoleh tegangan input sebesar 1,192V. Modul ADC memunyai rentang kesalahan sebesar ± 2 LSB atau setelah dikonversi menggunakan Persamaan 1, modul ADC memunyai rentang kesalahan sebesar ±
Nilai (V)
1
Multimeter
1,149
2
Mikrokontroler
1,196
Selisih
0,047
Tabel 3 Hasil pengujian rancangan bangun menggunakan sensor float switch No
Keterangan
Dari penghitungan yang dilakukan, ternyata diperoleh selisih di luar rentang kesalahan dari modul ADC. Karena selisih terlalu besar, maka akan dilakukan pengujian. Salah satu konstanta yang berpengaruh adalah tegangan referensi. Pengujian dilakukan dengan mengukur tegangan referensi pada mikrokontroler. Dari hasil pengukuran, diperoleh nilai Tegangan referensi sebesar 4,76V. Jadi, terjadi penurunan tegangan pada mikrokontroler sehingga perlu dilakukan perhitungan ulang menggunakan Tegangan referensi 4,76V. Dengan demikian rentang kesalahannya menjadi ± 0,0092V. Penurunan tegangan ini bisa saja terjadi karena umur pakai alat atau hambatan alat yang bertambah karena faktor waktu dan lingkungan. Hasil dari penghitungan ulang dapat dilihat pada Tabel 5. Tabel 5 Hasil penghitungan data dengan tegangan referensi 4,76v No
Keterangan
Nilai (V)
1
Multimeter
1,149
2
Mikrokontroler
1,138
Selisih
0,011
Berdasarkan Tabel 5, dapat dilihat selisih dari dua pengukuran tersebut semakin mendekati rentang kesalahan konversi modul ADC. Supaya didapatkan pembanding hasil uji dan agar pengujian semakin baik, maka akan dilakukan uji coba lagi sebanyak 9 kali. Hasil dari sepuluh kali uji coba dapat dilihat pada Tabel 6. Gambar 18 menggambarkan grafik nilai pengambilan data menggunakan multimeter dan mikrokontroler dengan sumbu x merupakan pengambilan data percobaan sebanyak sepuluh kali dan sumbu y merupakan nilai keluaran sensor.
10
Tabel 6 Hasil pengujian rancangan bangun menggunakan sensor thermocouple Uji
Multimeter
Mikrokontroler
1
1,149
1,13884
0,01015
2
1,139
1,13046
0,00853
3
1,134
1,12578
0,00821
4
1,130
1,12132
0,00867
5
1,127
1,11968
0,00731
6
1,127
1,11606
0,01093
7
1,121
1,11151
0,00948
8
1,117
1,10964
0,00735
9
1,118
1,11257
0,00542
10
1,120
1,11208
0,00791
Keluaran Sensor (V)
Rata-rata
Selisih
0.00840
1.16 1.15 1.14 1.13 1.12 1.11 1.1 1.09 1.08
Multimeter Mikrokontroler 1
2
3
4
5
6
7
8
9
10
Pengambilan Data Gambar 18 Grafik nilai pengambilan data menggunakan multimeter dan mikrokontroler Nilai grafik pada Gambar 18 selalu turun, hal tersebut dikarenakan thermocouple menggunakan tegangan tambahan berupa baterai 9V dan nilai tegangan baterai tersebut selalu turun. Pada pengambilan data lima dan enam nilai pembacaan multimeter sama. Hal tersebut dikarenakan saat dilakukan pengukuran dengan multimeter, tegangan baterai belum turun. Terbukti dengan nilai pengukuran dengan mikrokontroler yang turun. Pada pengambilan data delapan hingga sepuluh terjadi penaikan nilai, hal tersebut dikarenakan suhu ruangan telah meningkat. Peningkatan tersebut terjadi karena kenaikan suhu yang mengakibatkan beda potensial pada thermocouple meningkat. Analisis tesebut membuktikan, rancang bangun menggunakan sensor thermocouple menghasilkan nilai pembacaan sensor dengan kesalahan di antara rentang kesalahan konversi
modul ADC. Percobaan yang dilakukan menghasilkan nilai yang sama dengan keterangan pada manual book. Rancang bangun menggunakan sensor float switch memungkinkan untuk diterapkan pada sistem irigasi berbasis dua state. Harga minimum pembangunan sistem ini dapat dilihat pada Lampiran 10. Penerapan rancang bangun menggunakan sensor thermocouple perlu ada penyesuaian terkait sensor. Kita tidak mungkin menggunakan sensor thermocouple jika akan membangun sistim irigasi. Harga minimum pembangunan sistem ini dapat dilihat pada Lampiran 11. Dalam penerapannya, perlu yang diperhatikan dan disesuaikan adalah instalasi lapang alat tersebut, karena biaya yang dikeluarkan bisa lebih mahal. Hal tersebut dikarenakan memungkinkan adanya tambahan-
11
tambahan alat seperti kabel, sumber tegangan, dan kotak pengaman.
KESIMPULAN DAN SARAN Kesimpulan Arduino Duemilanove dapat melakukan pengambilan data serta memunyai modul ADC, sehingga memudahkan dalam konversi data dari data analog menjadi data digital. Modul ADC pada Arduino Duemilanove memiliki rentang kesalahan sebesar ± 2 LSB dan sudah diuji, sehingga dalam pembangunan sistem yang membutuhkan data dengan akurasi tinggi perlu diperhatikan rentang kesalahan konversi data. Selain itu, pemilihan resolusi juga menjadi pertimbangan untuk data yang membutuhkan akurasi tinggi.
Irrigation System for Production Field : Fuzzy Timer Control. Winoto Ardi. 2010. Mikrokontroler AVR ATmega8/32/16/8535 dan Pemrogramannya dengan Bahasa C pada WinAVR. Informatika: Bandung. Anonim. Arduino. http://arduino.com [23 Juli 2011] Anonim. Arduino Duemilanove. http://arduino.cc/en/Main/ArduinoBoardDue milanove [23 Juli 2011]. Anonim. SD Modul (Arduino Compatible). http://dfrobot.com/index/.php?route=product /product&product_id=163 [23 Juli 2011].
SD Card dapat dipilih sebagai data logger memory karena memudahkan dalam melakukan pengelolaan penyimpanan data. Kemudahan ini dikarenakan SD Card bersifat portable terhadap sistem. Data yang disimpan ke dalam SD Card, disimpan dalam format .csv agar data mudah dimanipulasi. Komunikasi serial dapat digunakan untuk berkomunikasi dengan perangkat lain dengan melakukan penyesuaian terhadap baud-rate. Dalam penelitian kali ini digunkana baud-rate sebesar 9600 bit per second. Saran Penelitian ini masih terbatas pada lingkungan model sehingga perlu untuk dilakukan uji coba lapang. Rancang Bangun sistem masih dalam tahap mekanisme akuisisi data, sehingga perlu dikembagkan rancang bangun pada mekanisme penyimpanan data, pengiriman data, pengolahan data, dan aktuator.
DAFTAR PUSTAKA Atmel. 2009. 8-bit AVR Microcontroller with 4/8/16/32K Bytes In-System Programmable Flash ATmega48PA/ ATmega88PA/ ATmega168PA/ ATmega328P. Orchard Parkway San Jose: Atmel Corporation. Heryanto AM et al. 2008. Pemrograman Bahasa C untuk Mikrokontroler ATMEGA8535. Andi: Yogyakarta. Saptomo SK, Setiawan BI, Tusi A, Iskandar MA. 2011. Development of Automated
12
LAMPIRAN
13
Lampiran 1 Blok diagram arsitektur AVR
14
Lampiran 2 Gambar sensor float switch
Switch
Lampiran 3 Koneksi SD Modul dengan Arduino
15
Lampiran 4 Dokumentasi rancang bangun menggunakan sensor float switch
Lampiran 5 Dokumentasi rancang bangun menggunakan sensor thermocouple
16
Lampiran 6 Tampilan serial monitor dari rancang bangun menggunakan sensor float switch
Lampiran 7 Tampilan serial monitor saat gagal koneksi antara SD Modul dengan mikrokontroler
17
Lampiran 8 Tampilan serial monitor ketika akan melakukan pengaturan penggunaan sistem
Lampiran 9 Tampilan serial monitor ketika telah melakukan pengaturan penggunaan sistem
18
Lampiran 10 Harga serta alat-alat yang digunakan dalam rancang bangun menggunakan float switch No
Alat
Jumlah
Harga Satuan (Rp)
Total Harga (Rp)
1
Arduino Duemilanove
1
235.000
235.000
2
Sensor float switch
2
65.000
130.000
3
LED
1
8.000
8.000
Total
373.000
Lampiran 11 Harga serta alat-alat yang digunakan dalam rancang bangun menggunakan thermocouple No
Alat
Jumlah
Harga Satuan (Rp)
Total Harga (Rp)
1
Arduino Duemilanove
1
235.000
235.000
2
Sensor Thermocouple
1
20.000
20.000
3
Baterai 9 V
1
7.500
7.500
4
SD Card
1
38.000
38.000
5
SD Modul
1
100.000
100.000
6
LED
1
8.000
8.000
Total
408.500
Lampiran 12 Kode program rancang bangun menggunakan sensor float switch // program untuk menjaga ketinggian air dengan simulasi valve menggunakan LED #define sensor 2 //jumlah sensor yang digunakan #define valve 13 //port digital yang digunakan untuk simulasi valve int valueA0; int valueA1; void setup() { Serial.begin(9600); //boud-rate untuk komunikasi dengan serial monitor pinMode(valve, OUTPUT); //mengeset pin digital sebagai output pinMode(2,OUTPUT); digitalWrite(2, HIGH); } void loop(){ //fungsi untuk membaca nilai dari sensor dan //menyimpannya ke dalam suatu variabel valueA0=analogRead(A0); delay(3000); valueA1=analogRead(A1);
//simulasi valve menggunakan LED //lampu akan menyala jika air berada di batas bawah if (valueA0>0){ digitalWrite(valve, HIGH); } //Menampilkan hasil pembacaan sensor pada Serial Monitor Serial.print ("nilai dari batas bawah: ");
19
Serial.println(valueA0); delay(3000); //lampu akan mati jika air berada dibatas atas if (valueA1==0){ digitalWrite(valve, LOW); } //Menampilkan hasil pembacaan sensor pada Serial Monitor Serial.print("nilai dari batas atas:"); Serial.println(valueA1); delay(3000); } Lampiran 13 Kode program rancang bangun menggunakan sensor thermocouple /* program datalogger menggunakan SD Card sebagai memori Setting program meliputi : -sampling time -penentuan batas atas -penentuan batas bawah -interupt (setting ulang pengoperasian) dengan cara memasukkan sembarang nilai ke serial monitor */ #include <Time.h> #include <SdFat.h> #include <SdFatUtil.h> #define LOG_INTERVAL 1000 #define SENSOR_COUNT 3 #define ECHO_TO_SERIAL 1 #define WAIT_TO_START 1 #define SYNC_INTERVAL 1000 #define valve 9 //port digital untuk simulasi valve yaitu lampu Led #define sensor 5 //port analog yang digunakan untuk sensor uint32_t syncTime = 0; // time of last sync() char settingPoint[8]="0"; int count=0; //sebagai penanda array penyimpanan hasil Serial.read ke settingPoint int batasAtas; int batasBawah; int nilaiSensor; int samplingTime; int hit=0; time_t t; time_t n; int selisih; //sebagai indikator sampling time int ket = 0; //sebagai indikator keterangan penulisan sampling time, batas atas, dan batas bawah pada file SdFat sd; SdFile file; ArduinoOutStream cout(Serial); char buf[50]; #define error(s) sd.errorHalt_P(PSTR(s)) void setup() { Serial.begin(9600);
20
pinMode(valve, OUTPUT); //mengeset pin digital sebagai output } void loop() { start(); //Perintah untuk mengeset nilai sampling time Serial.println("Masukkan Nilai Seberapa Lama Data Akan Diambil (dalam menit)"); while(!Serial.available()); samplingTime: dataSerial(); if (count==8){ count=0; samplingTime=atoi(settingPoint); } else{ goto samplingTime; } ulangBatasAtas: //Perintah untuk mengeset nilai batas atas Serial.println("Memasukkan nilai settingPoint batas atas (0-1023): "); while(!Serial.available()); batasAtas: dataSerial(); if (count==8){ count=0; batasAtas=atoi(settingPoint); } else{ goto batasAtas; } if (batasAtas>1023 || batasAtas<0) { goto ulangBatasAtas; } ulangBatasBawah: //Perintah untuk mengeset nilai batas bawah Serial.println("Memasukkan nilai settingPoint batas bawah (0-1023): "); while(!Serial.available()); batasBawah: dataSerial(); if (count==8){ count=0; batasBawah=atoi(settingPoint); } else{ goto batasBawah;
21
} if (batasBawah>1023 || batasBawah<0) { goto ulangBatasBawah; } Serial.print("nilai sampling time:" ); Serial.println(samplingTime); Serial.print("nilai batas atas:" ); Serial.println(batasAtas); Serial.print("nilai batas bawah:" ); Serial.println(batasBawah);
ambilData(); software_reset(); }
//fungsi untuk memulai & membuat file .CSV void start() { Serial.println("Initializing SD card..."); if (!sd.init(SPI_HALF_SPEED)) sd.initErrorHalt(); Serial.println("card initialized."); char name[] = "LOGGER00.CSV"; for (uint8_t i=0; i < 100; i++) { name[6] = i/10 + '0'; name[7] = i%10 + '0'; if (file.open(name, O_CREAT | O_EXCL | O_WRITE)) break; }
if (!file.isOpen()) error("file.open"); cout << pstr("Logging to: ") << name << endl;
obufstream bout(buf, sizeof(buf)); //Untuk memberikan nama header table data bout << pstr("No"); bout << pstr(",Nilai"); bout << pstr(",Valve");
#if ECHO_TO_SERIAL cout << buf << endl; #endif bout << "\r\n"; file.write(buf);
file.sync(); if (file.writeError) error("gagal menulis header tabel");
22
}
//Fungsi untuk mengambil data dari serial monitor void dataSerial() { settingPoint[count]=Serial.read(); count=count+1; int merge = atoi(settingPoint); Serial.println(merge); } //Fungsi untuk mengambil data dari sensor void ambilData(){
t=now(); while(selisih<samplingTime) { interupt(); n=now(); //memasukkan waktu saat ini ke variable t selisih=minute(n)-minute(t); //mencari selisih waktu untuk memberhentikan loopoing nilaiSensor=analogRead(sensor); Serial.println(nilaiSensor); ledSwitch(); hit++; sdCard(hit,nilaiSensor); } } //Fungsi simulasi valve pada LED void ledSwitch() { //led menyala jika nilai sensor kurang dari batas bawah if (nilaiSensor
batasAtas){ digitalWrite(valve, LOW); } }
//Fungsi untuk menulis pada sdCard void sdCard(int n, int nilai) { uint32_t m; do { m = millis(); } while(m % LOG_INTERVAL);
obufstream bout(buf, sizeof(buf)); // Menulis urutan data yang diambil bout << n; // Menulis data yang diambil bout << ',' << nilai; // Menulis keadaan valve
23
if (digitalRead(valve)>0) { bout << pstr(",Menyala"); } else { bout << pstr(",Mati"); }
#if ECHO_TO_SERIAL cout << buf << endl; #endif bout << "\r\n"; file.write(buf);
if ((millis() - syncTime) >= SYNC_INTERVAL) { file.sync(); syncTime = millis(); } if (file.writeError) error("gagal menulis data"); if (m == millis()) delay(1); } // fungsi untuk mereset void software_reset(){ asm volatile ("jmp 0"); } // fungsi untuk mensetting ulang kembali ketika arduino sedang beroperasi void interupt() { if(Serial.available()) { asm volatile ("jmp 0"); start(); } }
24
Penguji: Hendra Rahmawan, S.Kom, M.T
25