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;
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 (nilaiSensorbatasAtas){ 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
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(); } }