• Tidak ada hasil yang ditemukan

Rancang Bangun Alat Ukur Sisa Volume Tangki Bbm Berbasis Mikrokontroler Atmega 8535 Dengan Tampilan Android Chapter III V

N/A
N/A
Protected

Academic year: 2017

Membagikan "Rancang Bangun Alat Ukur Sisa Volume Tangki Bbm Berbasis Mikrokontroler Atmega 8535 Dengan Tampilan Android Chapter III V"

Copied!
16
0
0

Teks penuh

(1)

BAB 3

Metodologi Percobaan

3.1.

Diagram Blok Sistem

Gambar 3.1 Diagram blok system

3.2.

Rangkaian Arduino uno

(2)

Arduino Uno adalah papan sirkuit berbasis mikrokontroler ATmega328. IC (integrated

circuit) ini memiliki 14 input/output digital (6 output untuk PWM), 6 analog input, resonator

kristal keramik 16 MHz, Koneksi USB, soket adaptor, pin header ICSP, dan tombol reset. Hal

inilah yang dibutuhkan untuk mensupport mikrokontrol secara mudah terhubung dengan

kabel power USB atau kabel power supply adaptor AC ke DC atau juga battery.

Arduino Uno berbeda dari semua board mikrokontrol diawal-awal yang tidak

menggunakan chip khusus driver FTDI to-serial. Sebagai penggantinya penerapan

USB-to-serial adalah ATmega16U2 versi R2 (versi sebelumnya ATmega8U2). Versi Arduino Uno

Rev.2 dilengkapi resistor ke 8U2 ke garis ground yang lebih mudah diberikan ke mode DFU.

3.3.

Rangkaian Driver relay dan pompa

Gambar 3.3. Rangkaian Driver relay dan pompa

Rangkaian driver relay atau sering disebut dengan penggerak relay atau saklar elektrik, ini

(3)

Ketika basis diberikan supply maka colektor dan emitter dalam keadaan satu rasi. Sehingga

relay hidup dan menutup katupnya. Diode berfungsi sebagai menghidari arus balik.

3.4.

Flowchat Sistem

Gambar 3.4. Flowchat Sistem

START

INIT

Baca waktu RTC

Waktu sama

?

Tdk

Ya

Bandingkan waktu RTC dgn

waktu Schedule

Aktifkan pompa air

Update data schedule

Ada data

serial ?

Ya

Tdk

(4)

3.5. Rangkaian RTC

Komponen Realtime clock adalah komponen IC penghitung yang dapat difungsikan sebagai

sumber data waktu baik berupa data jam, hari, bulan maupun tahun. Komponen DS1307

berupa IC yang perlu dilengkapi dengan komponen pendukung lainnya seperti crystal sebagai

sumber clock dan Battery External 3,6 Volt sebagai sumber energy cadangan agar fungsi

penghitung tidak berhenti.Bentuk komunikasi data dari IC RTC adalah I2C yang merupakan

kepanjangan dari Inter Integrated Circuit. Komunikasi jenis ini hanya menggunakan 2 jalur

komunikasi yaitu SCL dan SDA. Semua microcontroller sudah dilengkapi dengan fitur

komunikasi 2 jalur ini, termasuk diantaranya Arduino Microcontroller

.

(5)

BAB 4

PENGUJIAN DAN HASIL

4.1.

Pengujian rangkaian Arduino uno

Pengujian sistem arduino uno dilakukan dengan memprogram sistem arduino uno

untuk membuat Pin.4 menjadi nilai positif negative 0 dan 1 yang diulang ulang dengan delay

100 ms. kemudian keluaran tegangan dari Pin.4 akan diukur dengan avometer.

Pengujian sistem arduino uno ini untuk memastikan bahwa sistem arduino yang

digunakan pada penelitian ini tidak rusak. Sehingga program yang ditanamkan pada

microcontroller mampu untuk mengontrol suhu dan kelembaban ruang seperti yang

diharapkan. Untuk pengujian arduino dapat digunaka program standar sebagai berikut :

// INIT Library #include <Wire.h> #include <TimeLib.h> #include <DS1307RTC.h> #include <SoftwareSerial.h> #include <AT24CX.h>

AT24CX mem;

const byte addrJam1 = 10; const byte addrMenit1 = 20; const byte addrDetik1 = 30; const byte addrJam2 = 40; const byte addrMenit2 = 50; const byte addrDetik2 = 60;

const byte pinPump = 11;

SoftwareSerial mySerial(A0, A1); // RX, TX

long timePump;

int cntPump = 0; // isi dengan satuan detik lamanya pompa aktif

// var untuk Hasil baca dr RTC byte rJam;

byte rMenit; byte rDetik;

// var untuk Hasil baca dr eeprom byte rJam1;

byte rMenit1; byte rDetik1;

byte rJam2; byte rMenit2; byte rDetik2;

// var untuk Set schedule byte sJam1;

(6)

byte sDetik1; byte sJam2; byte sMenit2; byte sDetik2;

String tJam; String tDetik; String tMenit; boolean stringComplete = false; int Proses = 0;

// Init awal arduino void setup() {

Serial.begin(9600); pinMode(pinPump,OUTPUT); digitalWrite(pinPump,LOW); inputString.reserve(20); Serial.println("START1#"); mySerial.begin(9600);

mySerial.println("START2#"); LoadTime();

mySerialEvent(); // tunggu data serial masuk if (stringComplete) { // jika ada data masuk maka Serial.println(inputString);

// jika perintah untuk seting schedule 1 //AJJMMDD --> A JAM MENIT DETIK

if (inputString.substring(0,1) == "A" && inputString.length() == 7 ) { Serial.print("Set Schedule 1:");

}else if (inputString.substring(0,1) == "B" && inputString.length() == 7) { //BJJMMDD --> B JAM MENIT DETIK

Serial.print("Set Schedule 2:"); SplitTime(inputString);

SaveTimeB(); LoadTime();

mySerial.println("#BOK*");

// jika perintah untuk menghidupkan pompa }else if (inputString == "P1"){

(7)

// perintah untuk mengirim waktu schedule }else if (inputString == "GET"){

LoadTime();

Serial.println("Send Schedule time"); mySerial.print("#");

mySerial.print(rJam1); mySerial.print(":"); mySerial.print(rMenit1); mySerial.print(":"); mySerial.print(rDetik1); mySerial.print("-"); mySerial.print(rJam2); mySerial.print(":"); mySerial.print(rMenit2); mySerial.print(":"); mySerial.print(rDetik2); mySerial.println("!"); }

// baca waktu RTC setiap detik kemudian bandingkan dengan data schedule if (GetTime(1000)){

CekSchedule(); }

// Jika pompa akan di aktifkan selama isi variabel cntPump if (cntPump > 0){

//Serial.println(cntPump);

if (millis() > timePump + 1000) {

void SplitTime(String dtTime){ tJam = dtTime.substring(1,3); Serial.print("Split:");

Serial.print(iJam); Serial.print(":");

mem.write(addrJam1, iJam); mem.write(addrMenit1, iMenit); mem.write(addrDetik1, iDetik); Serial.print("SaveA:");

Serial.print(iJam); Serial.print(":"); Serial.print(iMenit); Serial.print(":"); Serial.println(iDetik);

}

(8)

mem.write(addrJam2, iJam); mem.write(addrMenit2, iMenit); mem.write(addrDetik2, iDetik); Serial.print("SaveB:");

Serial.print(iJam); Serial.print(":"); Serial.print(iMenit); Serial.print(":"); Serial.println(iDetik);

}

// Ambil data schedule void LoadTime(){

rJam1 = mem.read(addrJam1); rMenit1 = mem.read(addrMenit1); rDetik1 = mem.read(addrDetik1);

rJam2 = mem.read(addrJam2); rMenit2 = mem.read(addrMenit2); rDetik2 = mem.read(addrDetik2); Serial.print("Load:");

Serial.print(rJam1); Serial.print(":"); Serial.print(rMenit1); Serial.print(":"); Serial.print(rDetik1); Serial.print("-"); Serial.print(rJam2); Serial.print(":"); Serial.print(rMenit2); Serial.print(":"); Serial.println(rDetik2);

}

// baca waktu RTC void showTime(){ tmElements_t tm; Serial.println(rDetik); }

}

// baca waktu RTC dengan interval boolean GetTime(int Interval){

if (millis() < timerGetTime + Interval) return false; timerGetTime = millis();

// Cek data schedule dengan waktu RTC void CekSchedule(){

if (rJam1 == 0 && rMenit1 == 0 && rDetik1 == 0 ){ //Serial.println("Schedule A gak aktif"); }else{

//Serial.println("Schedule A aktif");

if (rJam == rJam1 && rMenit == rMenit1 && rDetik == rDetik1){ cntPump = 10;

} }

(9)

}else {

//Serial.println("Schedule B aktif");

if (rJam == rJam2 && rMenit == rMenit2 && rDetik == rDetik2){ cntPump = 10;

} }

}

// penanganan komunikasi serial void mySerialEvent() {

while (mySerial.available()) {

char inChar = (char)mySerial.read(); Serial.print(inChar);

if (inChar > 30 ) inputString += inChar; if (inChar == 13 ) {

stringComplete = true; }

} }

Dan kemudian untuk mengupload program, menggunakan tool upload pada arduino.

Apabila pin 13 atau bisa di lihat pada led yang telah disediakan pada arduino, akan terlihat led

akan hidup dan mati selama 1 detik dan berulang ulang. Pengujian ini bertujuan untuk

mengertahui arduino dapat digunakan dengan baik atau tidak.

4.2.

Pengujian rangkaian relay dan pompa

Untuk pengujian relay yaitu diberikan tegangan pada kaki basis di transistor, maka

transistor BC547 akan aktif (satu rasi) . Hal ini menyebabkan kumparan pada relay dialiri arus

listrik. Dengan demikian, kontak relay akan terhubung. Dioda berfungsi sebagai komponen

pengaman transistor arus balik yang mungkin timbul akibat dari aktifnya kumparan relay.

maka transistor dalam keadaan tidak aktif, untuk pengujian relay dengan program di bwah ini.

Void main(){

pinMode(8, OUTPUT);

}

void loop(void) {

digitalWrite(8,HIGH);

delay(1000);

digitalWrite(8,LOW);

delay(1000); }

Setelah program di download ke mikrokontroler, Relay Akan Mengalami Kondisi

(10)

4.3.

Pengujian Rangkaian RTC

Jika sudah terinstall pada software arduino sekarang kita jalankan software arduino

tersebut lalu kita buat sketch seperti dibawah ini

:

'-=-=-=-=-=-=-=-=-=-=-=-=-= Sub Read_date

'-=-=-=-=-=-=-=-=-=-=-=-=-= ' Read Clock Data

I2cstart

' Generate start I2cwbyte Ds1307w ' Slave address I2cwbyte Date_addmap ' Address of SECONDS REG I2cstop

' Generate Stop I2cstart

' Repeated start I2cwbyte Ds1307r ' Slave address (read) I2crbyte Reg_date , Ack I2crbyte Reg_month , Ack I2crbyte Reg_year , Nack I2cstop

' Generate Stop

' set numeric variables Num_date = Makedec(reg_date) Num_month = Makedec(reg_month) Num_year = Makedec(reg_year) End Sub

(11)

4.4.

Pengujian keseluruhan

Pengujian rangkaian yaitu dengan program sebagai berikut.

#Region Project Attributes

#ApplicationLabel: PENYIRAM TANAMAN #VersionCode: 1

#VersionName:

#SupportedOrientations: portrait #CanInstallToExternalStorage: true #End Region

#Region Activity Attributes #FullScreen: true #IncludeTitle: false

#End Region

Sub Process_Globals

Dim Serial1 As Serial Dim AStreams As AsyncStreams Dim connected As Boolean Dim TeksSend As String

End Sub ' init global Sub Globals

Dim S As String Dim S_in As String Private lblInfo As Label Private btnConnect As Button Private btnDisconnect As Button Dim DataInOld As String

Dim i As Int Dim j As Float Dim idx As Int Dim ss As String

'Dim dtSchedules(6) As String Dim dtSchedule(6) As Int Dim idx As Int

Private btnExit As Button Private SpnJamA As Spinner Private SpnMenitA As Spinner Private SpnDetikA As Spinner Private btnUpdateA As Button Private SpnJamB As Spinner Private SpnMenitB As Spinner Private SpnDetikB As Spinner Private btnUpdateB As Button Private btnPumpOff As Button Private btnPumpOn As Button Private btnGetInfo As Button Private Label1 As Label

End Sub

'kirim data ke

Sub SendData(dt As String) If connected Then

Dim Buffer() As Byte TeksSend = dt & Chr(13)

Buffer = TeksSend.GetBytes("UTF8") AStreams.Write(Buffer)

Log("Send:" & dt) End If

End Sub

'init serial dan form ketika pertama kali aktif Sub Activity_Create(FirstTime As Boolean)

If FirstTime = True Then

Serial1.Initialize("Serial1") End If

(12)

For i = 0 To 59

' cek komunikasi bluetooth ketika aktif Sub Activity_Resume

If Serial1.IsEnabled = False Then

Msgbox("Segera aktifkan Bluetooth ", "") Else

Serial1.Listen End If

End Sub

Sub Activity_Pause (UserClosed As Boolean) If UserClosed Then

AStreams.Close End If

End Sub

'Listing program pada menu connect, berfungsi untuk menkoneksi ke baluetooth Sub mnuConnect_Click

Dim PairedDevices As Map

PairedDevices = Serial1.GetPairedDevices Dim l As List

l.Initialize

For i = 0 To PairedDevices.Size - 1

l.Add(PairedDevices.GetKeyAt(i)) 'add the friendly name to the list Next

Dim res As Int

res = InputList(l, "Pilih device", -1) 'show list with paired devices If res <> DialogResponse.CANCEL Then

Serial1.Connect(PairedDevices.Get(l.Get(res))) 'convert the name to mac address

End If End Sub

'Listing program pada menu disconnect, berfungsi untuk memutuskan komunikasi ke baluetooth

Sub mnuDisconnect_Click

If connected Then AStreams.Close lblInfo.Text = "Disconnect" End Sub

' status koneksi bluettoh

Sub Serial1_Connected (Success As Boolean) If Success Then

ToastMessageShow("Koneksi berhasil", False)

AStreams.Initialize (Serial1.InputStream ,Serial1.OutputStream ,"AStreams")

connected = True

lblInfo.Text = "Connect" btnConnect.Visible = False btnDisconnect.Visible = True SendData("GET")

Else

connected = False

lblInfo.Text = "Disconnect" btnConnect.Visible = True btnDisconnect.Visible = False

Msgbox(LastException.Message, "Koneksi gagal") End If

End Sub

' pengolahan data yang masuk melalui bluetooth Sub AStreams_NewData (Buffer() As Byte)

(13)

Dim Dts As String Dim DataInt As Int

'============================================================== S = BytesToString(Buffer, 0, Buffer.Length, "UTF8")

If s.Trim = "#" Then S_in = "" S_in = S_in & S.trim

Log(s.Trim)

If S_in.Length > 2 Then

If S_in.SubString2(0,1) = "#" AND S_in.SubString(S_in.Length-1) = "*" Then

Log( "Comand:" & S_in.trim) If S_in.Length < 10 Then

DataIn = S_in.SubString2(1,S_in.Length - 1) S_in = ""

If DataInOld <> DataIn Then DataInOld = DataIn 'DataInt = DataIn If DataIn = "AOK" Then

lblInfo.Text = "Update Schedule 1 : SUKSES" Else If DataIn = "BOK" Then

lblInfo.Text = "Update Schedule 2 : SUKSES" Else If DataIn = "P1" Then

lblInfo.Text = "Pompa aktif" Else If DataIn = "P0" Then

lblInfo.Text = "Pompa padam" Else

lblInfo.Text = DataIn End If

End If End If DataIn = ""

Else If S_in.SubString2(0,1) = "#" AND S_in.SubString(S_in.Length-1) = "!" Then

'S_in = #0:0:0-0:0:0!

' ex:Time Get:#9:0:0-15:30:0! Log("Time Get:" & S_in.trim) If S_in.Length < 25 Then

'DataIn = 0:0:0-0:0:0

DataIn = S_in.SubString2(1,S_in.Length - 1) S_in = ""

idx = 0

DataIn = DataIn & "-"

For i = 0 To DataIn.Length - 1

'Log(DataIn.SubString2(i,i+1)) If DataIn.SubString2(i,i+1) = ":" OR DataIn.SubString2(i,i+1) = "-" Then

dtSchedule(idx) = Dts

Log(idx & ":" & dtSchedule(idx)) idx = idx + 1

Dts = "" Else

Dts = Dts & DataIn.SubString2(i,i+1) End If

Next

(14)

End Sub

'Jika terjadi error pada komunikasi Sub AStreams_Error

ToastMessageShow(LastException.Message, True) lblInfo.Text = "Disconnect"

btnConnect.Visible = True btnDisconnect.Visible = False End Sub btnConnect.Visible = True btnDisconnect.Visible = False End Sub

'tombol hidupkan pompa Sub btnPumpOff_Click

SendData("P0") End Sub

'tombol matikan pompa Sub btnPumpOn_Click

SendData("P1") End Sub

' tombol refresh data schedule dr arduino Sub btnGetInfo_Click

SendData("GET") End Sub

' tombol update data schedule 1 ke arduino Sub btnUpdateA_Click

Dim dtSend As String Dim dtS As String

dtS = "00" & SpnJamA.SelectedItem

dtSend = "A" & dtS.SubString(dtS.Length - 2) dtS = "00" & SpnMenitA.SelectedItem

dtSend = dtSend & dtS.SubString(dtS.Length - 2) dtS = "00" & SpnDetikA.SelectedItem

dtSend = dtSend & dtS.SubString(dtS.Length - 2) Log("Update A:" & dtSend)

SendData(dtSend) End Sub

' tombol update data schedule 2 ke arduino Sub btnUpdateB_Click

Dim dtSend As String Dim dtS As String

dtS = "00" & SpnJamB.SelectedItem

dtSend = "B" & dtS.SubString(dtS.Length - 2) dtS = "00" & SpnMenitB.SelectedItem

dtSend = dtSend & dtS.SubString(dtS.Length - 2) dtS = "00" & SpnDetikB.SelectedItem

dtSend = dtSend & dtS.SubString(dtS.Length - 2) Log("Update B:" & dtSend)

(15)

Pengujian ini dilakukan dengan menghubungkan android melalui bloetooth dan mengirimkan

pesan waktu penyiramannya dan diperoleh data sebagai berikut:

Update

Waktu

Status Pompa

Schedule 1

08:15:00

Hidup

Schedule 2

09:15:00

Hidup

Schedule 1

10:15:00

Hidup

Schedule 2

11:15:00

Hidup

Tabel 4.4. Data Percobaan

(16)

BAB V

KESIMPULAN DAN SARAN

1.1

Kesimpulan

Pengambilan data yang dilakukan dengan dua waktu yang berbeda pada percobaan

diatas adalah sebagai contoh bahwa penyiraman dibagi dalam dua schedule dan schedule

tersebut dapat diubah oleh pengguna dalam waktu singkat. Data-data tersebut adalah sebagai

berikut :

1.

Pada waktu Pengujian alat, kita harus menunggu alat menyiram pada saat waktu yang

sudah ditentukan.

2.

Kita dapat mengatur waktu penyiraman dua kali dalam sehari, kita dapat mengubah

waktu penyiraman, dan penyiraman akan terus berlangsung seperti waktu yang kita atur

sebelumnya.

3.

Alat ini masih kurang efektif karena jangkauan peyiraman masih rendah karena pompa

yang digunakan berdaya rendah.

1.2

Saran

Beberapa tambahan yang diperlukan dalam meningkatkan kemampuan alat ini adalah:

1.

Supaya rangkaian yang digunakan tidak terganggu, sebaiknya alat ini dikemas dalam

bentuk yang lebih aman dan terlindungi, sehingga penggunaannya lebih efektif.

2.

Dengan beberapa pengembangan dan penyempurnaan sistem dari alat ini akan dapat

lebih baik lagi hasilnya.

3.

Diharapkan kedepannya alat ini dapat di kembangkan dengan tampilan LCD yang lebih

menarik dan dapat dibaca dari jarak yang cukup jauh.

4.

Diharapkan kedepannya desain alat penyiram otomatis ini lebih praktis dalam packaging.

Gambar

Gambar 3.1 Diagram blok system
Gambar 3.3.  Rangkaian Driver relay dan pompa
Gambar 3.4.  Flowchat Sistem
Gambar 3.5. Rangkaian RTC
+3

Referensi

Dokumen terkait

Alat ini terdiri dari sensor ultrasonik HC SR-04 yang berfungsi untuk mengukur jarak ataupun ketinggian, LCD M1632, dan dilengkapi dengan bluetooth sebagai

Alat ini terdiri dari sensor ultrasonik HC SR-04 yang berfungsi untuk mengukur jarak ataupun ketinggian, LCD M1632, dan dilengkapi dengan bluetooth sebagai

Dengan demikian, penulis tertarik untuk mengaplikasikan teknologi untuk merancang sebuah alat yang dapat mengurangi permasalahan ketidakpastian pengukuran dengan membuat

Sensor adalah suatu alat atau rangkaian alat yang dipakai untuk merubah su atu besaran tertentu menjadi besaran lain dengan cara “merasakan / mendeteksi” dalam

Puji syukur penulis ucapkan kepada Tuhan Yang Maha Esa, yang telah memberikan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan penyusunan skripsi ini

Dan terhubung dengan pin A7, A6, dan A5 pada Mikrokontroler, yang nantinya data yang diterima oleh sensor yang masuk ke pin Analog dan diubah menjadi nilai

Walaupun berbrda compiler, program C yang sudah dibuat tetap bisa digunakan oleh mikrokontroler tipe lain dengan sedikit penyesuaian terutama untuk akses SFR dan keyword khusus

Berdasarkan tabel 4 diatas diketahui suhu yang didapatkan dari hasil objek yang sama dan waktu yang sama, hasil di atas merupakan hasil dari dua alat ukur yang berbeda