20
BAB III
PERANCANGAN ALAT
Pada bab ini akan dibahas perancangan hardware dan software Sitem Kontrol Blending berbasis Arduino dan Visual Basic. Arduino akan mengolah data yang didapatkan oleh sensor yang nantinya akan dikirimkan ke komputer melalui port serial dan akan ditampilkan melalui Graphical User Interface (GUI) yang dibangun dengan aplikasi buatan Microsoft, yakni Visual Basic.NET. Antarmuka grafis yang dibangun nantinya akan dirancang sedemikian rupa sehingga program bisa berinteraksi dengan Arduino, sehingga selain mengambil data dari Arduino, program antarmuka nantinya juga dapat mengolah, sekaligus mengirim data ke Arduino. Pembuatan alat dibagi dalam beberapa kelompok yang masing – masing mempunyai fungsi sendiri – sendiri.
3.1
DIAGRAM BLOK
Secara garis besar diagram blok perancangan sistem yang akan dubangun adalah sebagai berikut: VISUAL BASIC (INTERFACE)
ARDUINO (KONTROL)
RELAY
SENSOR ULTRASONIK
POMPA
TANGKI
Gambar 3.1 Diagram Blok Sistem Kontrol Blending
http://digilib.mercubuana.ac.id/
21
Berdasarkan gambar diagram blok di atas, maka secara sederhana dapat dijelaskan prinsip kerja sistem yang akan dibangun adalah sebagai berikut : 1. Sensor Ultrasonik, merupakan pendeteksi dari sistem yang akan dibangun. Sensor ultrasonik memperoleh data berupa besaran pulsa listrik, yang nantinya akan diolah oleh Arduino sehingga diperoleh jarak, yakni jarak antara level ketinggian air dan posisi sensor ultrasonik sendiri. 2. Arduino, merupakan komponen utama dari sistem yang akan dibangun. Arduino akan mengolah data pulsa listrik yang diterima dari sensor ultrasonik, mengirimnya ke komputer melalui port serial, dan sebaliknya, mengolah data yang dikirim komputer, serta mengirim hasil pengolahan berupa output digital ke Relay Shield. 3. Interface, merupakan alat penunjang sistem yang dipakai untuk memberikan gambaran visual dari hasil pengolahan sensor ultrasonik dan Arduino, selain itu, komputer juga dipakai untuk memberikan data dan perintah / kontrol ke Arduino sebagai inputan dari Arduino untuk pengolahan data dan kontrol relay shield. 4. Relay shield, merupakan rangkaian yang digunakan sebagai output kontrol dari Arduino, yang mempunyai komponen utama berupa relay yang nantinya akan digunakan untuk menghidupkan dan mematikan pompa. 5. Pompa, merupakan alat yang digunakan untuk memopakan cairan ke tangki blending. 6. Tangki, merupakan sarana untuk tempat proses blending gasoline yang setiap ketinggian level cairannya akan dipantau oleh Sensor Ultrasonik secara realtime.
3.2
WIRING HARDWARE
Skema wiring hardware, Arduino dengan seluruh komponen secara keseluruhan sebagai berikut:
http://digilib.mercubuana.ac.id/
22
Gambar 3.2 Skema Wiring Hardware 3.3
PEMBUATAN PROGRAM ARDUINO
Pembuatan program untuk sistem kontrol dibuat berdasarkan rancangan flowchart sebagai berikut: Mulai
Input Level Initial & Final Blending Calculate: Level 1 = ((Final - Initial) / 4) + Initial Level 2 = ((Final - Initial) / 4) + Level 1 Level 3 = ((Final - Initial) / 4) + Level 2 Level 4 = ((Final - Initial) / 4) + Level 3
Kirim Sinyal ke Aktuator
A
Gambar 3.3 Flowchart Pengolahan Data
http://digilib.mercubuana.ac.id/
23
Pompa 2 OFF Pompa 1 ON
A
Pompa 1 ON
Level 3 Tercapai?
Tidak
Ya
Tidak
Level 1 Tercapai?
Pompa 1 OFF Pompa 2 ON
Ya Pompa 1 OFF Pompa 2 ON
Level 4 Tercapai?
Tidak
Ya Level 2 Tercapai?
Pompa 2 OFF Ya Selesai
Gambar 3.4 Flowchart Kontrol Berdasarkan flowchart diatas program kontrol dibuat dengan menggabungkan beberapa prinsip dasar pemrograman Arduino hingga menjadi kontrol sistem. Berikut akan dibahas prinsip dasar dari masing – masing bagian program arduino yang digunakan. 3.3.1 Dasar Pemrograman Pemrograman Arduino menggunakan bahasa pemrograman Arduino yang dibangun berbasis bahasa Wiring dan lingkungan pengembangannya (Arduino Environment Development) dibangun berbasis Processing.
Wiring menurut situs reminya di
http://digilib.mercubuana.ac.id/
24
http://www.wiring.org.co/ merupakan kerangka pemrograman yang bersifat open source yang digunakan untuk memprogram mikrokontroler. Sedangkan processing menurut situs resminya di http://www.processing.org/, processing merupakan bahasa pemrograman yang bersifat terbuka (open source) dan merupakan lingkungan pengembangan yang ditujukan untuk orang – orang yang ingin membuat gambar, animasi, dan interaksi. Processing pada awalnya dikembangkan sebagai perangkat lunak untuk menghasilkan sketchbook dan digunakan untuk mengajarkan dasar – dasar pemrograman komputer dalam konteks visual. Setiap programmer komputer pada awal belajarnya akan memulai belajar pemrograman dengan menampilkan kalimat “Hello World!” di layar monitor. “Hello World!” dalam lingkungan komputasi fisik yakni berupa LED (Light Emitting Diode = Dioda emisi cahaya) yang berkedip, nyala dalam waktu tertentu kemudian padam beberapa saat kemudian dan nyala lagi untuk beberapa saat, begitu seterusnya. LED merupakan indikator berupa lampu kecil yang membutuhkan daya yang relatif kecil untuk bekerja. Dan, di papan Arduino sudah built in LED yang terhubung ke pin digital 13. Untuk menyalakan LED secara berkedip, diperlukan kode yang cukup
sederhana.
Hal pertama yang harus dituliskan dalam kodenya adalah
menentukan variabel yang mendefinisikan pin Arduino mana yang terhubung dengan LED. Uniknya, dalam bahasa pemrograman Arduino, variabel ini nantinya akan memakai nomor pin-nya saja, sehingga kita dapat dengan mudah mengubah nomor pin sesuai keinginan jika sewaktu – waktu diperlukan. Sebagai contoh, dalam kode untuk LED berkedip ini memakai variabel integer (dalam Arduino disebut int). 1. int led = 13; Hal kedua yang perlu dilakukan adalah mengkonfigurasi pin yang terhubung ke LED sebagai output. Konfigurasi pin Arduino sebagai output dapat dilakukan dengan memaki fungsi pinMode ( ) yang diletakkan dalam fungsi setup ( ). 1. void setup ( ) 2. { 3. pinMode (led, OUTPUT ); 4. }
http://digilib.mercubuana.ac.id/
25
Akhirnya, untuk menghidupkan dan mematikan LED, kita dapat memakai fungsi digitalWrite ( ). Untuk menghidupkan digunakan logika HIGH, dan untuk mematikan LED digunakan logika LOW. Karena keterbatasan kemampuan mata manusia, maka apabila kita hanya memakai fungsi digitalWrite dengan logika HIGH dan LOW saja, maka kita tidak dapat melihat perubahan yang terjadi pada LED, karena nyala dan padamnya LED terlalu cepat. Untuk menyiasati masalah tersebut, kita harus menambahkan fungsi delay ( ) untuk memperlambat nyala dan padamnya LED. Fungsi delay ( ) dalam bahasa pemrograman Arduino menggunakan satuan milidetik, sehingga misalnya kita menginginkan tundaan waktu 1 (satu) detik, maka kita harus menggunakan delay sebesar 1000. 1. void loop( ) { 2. digitalWrite(led, HIGH); 3. delay(1000); 4. digitalWrite(led, LOW); 5. delay (1000); 6. } Kode keseluruhan untuk menyalakan dan memadamkan LED adalah sebagai berikut :
Gambar 3.5 Program LED Berkedip
http://digilib.mercubuana.ac.id/
26
Keterangan kode program : 1. Keterangan program dapat dijadikan komentar dengan cara menambahkan tanda “ /* “ dan diakhiri tanda “ */ “ jika yang ingin dijadikan komentar lebih dari satu baris, sebagai contoh dari program di atas adalah baris ke-1 sampai baris ke-4. Selain itu, komentar dapat diperoleh dengan cara menambahkan tanda “ // ” jika hanya 1 (satu) baris yang akan dijadikan komentar. Sebagai contoh yakni baris ke-5, ke-8, dst. Komentar tidak akan dieksekusi oleh program Arduino, karena dianggap bukan kode program. 2. Kode LED berkedip ini merupakan kode dasar yang nantinya dapat dipakai untuk menghidupkan relay shield yang akan digunakan dalam sistem kendali yang akan dibangun.
3.3.2 Pemrograman Komunikasi Serial Seperti disinggung di Bab II, komunikasi serial yang dipakai untuk komunikasi Arduino ke komputer dan sebaliknya, dilakukan oleh kombinasi pin RX dan TX di masing – masing bagian, yakni di Arduino dan komputer itu sendiri. Karena tuntutan kemajuan zaman, dimana port serial standar yang berbasis RS 232 makin jarang ditemui di komputer yang beredar di pasaran, Arduino memakai port USB (Universal Serial Bus). Walaupun demikian sebenarnya komunikasi serial masih berlangsung, hanya saja dalam komunikasi serial tersebut melalui sebuah rangkaian terintegrasi yang berfungsi mengkonversi data RX dan TX mikrokontrol Arduino ke mode USB.
Gambar 3.6 Diagram Komunikasi Serial Arduino dan Komputer Rangkaian konverter serial yang dipakai menggunakan komponen utama berupa IC ATMega8U (Arduino Uno R2) atau ATMega16U2 (Arduino Uno R3).
http://digilib.mercubuana.ac.id/
27
Gambar 3.7 Chip ATMega16U2 sebagai konverter RS-232 Sebelum membahas
lebih
lanjut
pemrograman komunikasi serial,
perlu
diketahui bahwa terdapat suatu fungsi pada Arduino IDE yang memungkinkan kita dapat untuk mengirim data serial ke Arduino dan menerima data dari Arduino, yaitu Serial Monitor. Fungsi ini dapat dipanggil dengan pilihan pada bagian Tools > Serial Monitor. Setelah itu sesuaikan baudrate pada Serial Monitor dengan program.
Gambar 3.8 Serial Monitor pada Arduino IDE Berikut adalah contoh pemrogram komunikasi serial. Program ini dirancang jika Arduino menerima data serial dengan karakter tertentu maka akan mengaktifkan / menonaktifkan LED. Dan juga akan menampilkan data yang diterima ke serial monitor,dalam artian Arduino mengirimkan kembali data yang diterima ke serial.
http://digilib.mercubuana.ac.id/
28
Gambar 3.9 Program Komunikasi Serial 3.3.3 Pemrograman Sensor Ultrasonik Jenis sensor ultrasonic yang digunakan adalah HC – SR04. Sensor ini tidak membutuhkan library tambahan pada pemrograman Arduino IDE sehingga dapat langsung deprogram seperti berikut:
http://digilib.mercubuana.ac.id/
29
Gambar 3.10 Program Sensor HC-SR04 Pada program ini sensor HR-SR04 membutuhkan konfigurasi pin, yaitu Pin 13 digunakan sebagai Echo dan Pin 12 digunakan sebagai Trig pada board Arduino. Untuk pembacaan sensor, arduino menampilkan data yang dibaca ke port serial. Agar bisa melihat data yang dibaca sensor HR-SR04 dapat menggunkan Serial Monitor pada IDE Arduino.
http://digilib.mercubuana.ac.id/
30
Gambar 3.11 Wiring Sensor HR-SR04 3.4
PEMBUATAN PROGRAM VISUAL BASIC.NET
VB.NET adalah salah satu bahasa pemrograman Komputer Tingkat Tinggi. Bahasa Pemrograman
Adalah
Perintah-perintah
yang
dimengerti oleh
computer
untuk
melakukan tugas-tugas tertentu Bahasa pemrograman VB.NET dikembangkan oleh Microsoft , Merupakan Salah Satu Bahasa Pemrograman Yang Object Oriented Program(OOP) atau Pemrograman yang berorientasi Pada Object. Kata “Visual” menunjukkan cara yang digunakan untuk membuat Graphical User Interface (GUI). Dengan Cara ini, kita tidak perlu lagi menuliskan Instruksi pemrograman dalam kodekode baris hanya untuk membuat sebuah Desaign Form/Aplikasi. Tetapi dengan sangat mudah yakni kita cukup melakukan Drag and drop object-object yang akan kita gunakan. VB.Net dapat kita jdaikan alat Bantu untuk membuat berbagai macam program computer. Aplikasi VB.NET hanya dapat dijalankan pada system Operasi Windows. Pemakaian komponen atau obyek dalam perancangan dan pembuatan aplikasi berbasis
bahasa
pemrograman
apapun
adalah
mutlak,
tak
terkecuali bahasa
pemrograman Visual Basic. Obyek dalam Visual Basic digunakan sebagai elemen
http://digilib.mercubuana.ac.id/
31
antarmuka dalam program yang akan dibuat. Prinsip sederhana dari pemakaian obyek ini adalah kita harus memindah, mengubah ukuran, mengatur tata letak atau setting property-nya. Berikut contoh – contoh obyek dalam Visual Basic beserta fungsinya secara singkat : 1. TextBox : tempat input/menampilkan teks, bebas diubah 2. Label : teks pada form; tidak dapat langsung di ubah 3. Command Button : menjalankan perintah/proses jika di tekan 4. Frame : pengelompokan kontrol-kontrol secara visual/fungsional 5. CheckBox : menampilkan kondisi Y/N atau T/F 6. Form : tempat kerja program aplikasi 7. ComboBox : kombinasi textbox & listbox, pilih dari list atau ketik 8. ListBox : multiselect 9. PictureBox : menampilkan gambar 10. Image : menampilkan gambar, tapi tidak bisa sebagai kontainer kontrol 11. Option Button : mirip dengan checkbox, tapi hanya satu pilihan yg dapat di pilih 12. HS/VS ScrollBar : scrollbar Horizontal dan Vertikal 13. Line : membentuk garis 14. Data : data binding 15. OLE (Object Lingking and Embedding) : lokasi program eksternal, seperti: word ms, dll 16. Project : sekumpulan modul aplikasi itu sendiri 17. Module : modul fungsi- fungsi kontrol 18. Code Editor : tempat sintaks/coding 19. Pointer : untuk memilih kontrol Seperti yang telah dibahas pada bab sebelumnya, pada pemrograman Visual Basic form digunakan sebagai komponen utama untuk mendesain tampilan program. Secara umum sebuah komponen/objek dalam Visual Basic memiliki 3 karakteristik utama yaitu: Properti, Event dan Metode. Berikut merupakan beberapa program yang terdiri dari komponen-komponen yang digunakan dalam pemrogram sistem kontrol:
http://digilib.mercubuana.ac.id/
32
3.4.1 Menampilkan Waktu dan Tanggal Untuk menapilkan waktu dan tanggal dibutuhkan 2 objek Label dan 1 objek Timer dengan code program sebagai berikut: Public Class Form1 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = Format(Now, "dd MMMM yyyy") Label2.Text = Format(Now, "hh:mm:ss") End Sub End Class
Gambar 3.12 Desain tampilan Jam dan Tanggal setelah Start Debugging 3.4.2 Menampilkan Port yang Tersedia pada Komputer COM Port dari komputer harus diketahui terlebih dahulu agar VB.NET dapat melakukan
komunikasi serial dengan Arduino.
Berikut adalah program untuk
mengambil dan mengetahui port mana sajakah yang tersedia pada komputer. Imports System.IO.Ports Private Sub GetSerialPortNames() For Each sport As String In My.Computer.Ports.SerialPortNames cmbPort.Items.Add(sport) Next
http://digilib.mercubuana.ac.id/
33
End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim BaudRates() As String = {"300", "1200", "2400", "4800", "9600", "14400", "19200", "28800", "38400", "57600", "115200"} cmbBaud.Items.AddRange(BaudRates) cmbBaud.SelectedIndex = 4 Try GetSerialPortNames() cmbPort.SelectedIndex = 0 Catch MsgBox("No ports connected.") End Try End Sub
Selain itu Baudrate juga harus ditentukan agar komunikasi serial dapat terjadi karena Baudrate berfungsi sebagai setting kecepatan untuk berkomunikasi serial. Pada program dibuat beberapa nilai kecepatan atau Baudrate yang ditampilkan berupa List Box seperti hal nya dengan COM Port. Jika tidak ada COM Port yang terhubung maka akan muncul Message Box sebagai informasi bahwa tidak ada COM Port yang terhubung.
Gambar 3.13 Tampilan List Box COM Port dan Baudrate
http://digilib.mercubuana.ac.id/
34
3.4.3 Komunikasi Serial dengan Arduino Berikut adalah program dan gambar GUI untuk memulai dan mengakhiri komunikasi serial pada VB.NET Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click Try sp.BaudRate = cmbBaud.SelectedItem.ToString sp.PortName = cmbPort.SelectedItem.ToString sp.Open() If sp.IsOpen Then btnConnect.Visible = False cmbPort.Enabled = False cmbBaud.Enabled = False btnDisconnect.Visible = True End If Catch sp.Close() End Try End Sub Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click Try sp.Close() btnConnect.Visible = True btnDisconnect.Visible = False cmbPort.Enabled = True cmbBaud.Enabled = True Exit Sub Catch MessageBox.Show("Some kind of problem.") End Try End Sub
http://digilib.mercubuana.ac.id/
35
Gambar. 3.14 Desain GUI untuk koneksi komunikasi serial. Ketika VB.NET sudah terkoneksi dengan komunikasi serial maka List Box dari COM Port dan Baudrate tidak akan bisa diklik. Begitu juga dengan tombol Connect seperti gambar berikut.
Gambar 3.15 Program VB.NET saat terkoneksi. Sedangkan pada saat tidak terkoneksi maka tombol Disconnect akan hilang sehingga tidak bisa diklik seperti gambar berikut.
Gambar 3.16 Program VB.NET saat tidak terkoneksi.
3.4.4 Relay Kontrol Kode program berikut adalah program untuk mengotrol On / Off relay. Program ini juga akan memberikan indicator yang akan meberitahukan bahwa relay dalam keadaan On / Off.
http://digilib.mercubuana.ac.id/
36
Private Sub btnOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOn.Click picOn.Visible = True SerialPort1.Open() SerialPort1.Write("1") SerialPort1.Close() End Sub Private Sub btnOff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff.Click picOn.Visible = False SerialPort1.Open() SerialPort1.Write("0") SerialPort1.Close() End Sub
Pada saat relay On maka indicator berwarna hijau. Jika relay Off maka indicator akan berwarna merah seperti gambar berikut.
Gambar 3.17 Tampilan GUI saat indikator ON dan OFF
http://digilib.mercubuana.ac.id/
37
3.4.5
Menampilkan Data yang Dikirim dan Diterima
Pada program ini data yang diterima dari Arduino akan ditampilkan pada Text Box secara continue. Properties Text Box dibuat agar dapat discroll keatas dan kebawah untuk melihat semua data yang telah diterima dari Arduino. Sub ShowString(ByVal myString As String) txtIn.AppendText(myString) End Sub Delegate Sub myMethodDelegate(ByVal [text] As String) Dim myDelegate As New myMethodDelegate(AddressOf ShowString) Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived Dim str As String = sp.ReadExisting() Invoke(myDelegate, str) End Sub
Sedangkan untuk kode program untuk mengirim data ke Arduino adalah sebagai berikut. System.Object, ByVal e As System.EventArgs) Handles btnSend.Click If sp.IsOpen() Then sp.WriteLine(txtMessage.Text) txtMessage.Text = "" End If End Sub
Data yang akan dikirim ke Arduino diinput terlebih dahulu pada sebuah Text Box. Selanjutnya data yang telah diinout tersebut dikirik ke arduino dengan mengklik sebuah tombol Send [8]. Berikut adalah desain tampilan GUI dari program.
http://digilib.mercubuana.ac.id/
38
Gambar 3.18 Tampilan Kirim dan Terima Data Dari kesulurahan program diatas maka dibuatlah GUI program Sistem Kontrol Blending dengan menggabungkan program-program tersebut hingga menjadi sebuah sistem. GUI dibuat berdasarkan flowchart berikut. Mulai
Auto / Manual Input Level Initial & Final Blending
Kirim Data ke Arduino
Proses Blending oleh Arduino
Pompa 1
ON
Pompa 2
OFF
ON
Monitoring Level
Selesai
Gambar 3.19 Flowchart GUI Sistem
http://digilib.mercubuana.ac.id/
OFF
39
Pada flowchart diatas untuk proses blending terdapat 2 pilihan, yaitu auto dan manual. Jika memilih mode manual, kita dapat mengaktifkan /menonaktifkan pompa 1 dan pompa 2 secara langsung dengan menekan tombol ON/OFF. Jika memilih mode auto, untuk menjalankan proses blending kita harus menginput data seperti data level initial dan level final blending yang diinginkan. Setelah input data selesai, proses dapat dijalankan dengan menekan tombol Start dan jikaingin mengakhiri proses yang sedang berjalan dapat dilakukan dengan menekan tombol Stop dan tombol Reset untuk mereset data yang telah diinput sehingga siap untuk memulai proses auto lagi dari awal. Selain itu pada mode ini juga melakukan stop sementara dan melanjutkan proses kembali tanpa harus mereset data yang telah diinput dengan cara ketika proses yang sedang berjalan tombol Stop ditekan (tombol reset tidak ditekan) dan dilanjutkan kembali dengan menekan tombol Start, maka proses akan dilanjutkan hingga selesai.
http://digilib.mercubuana.ac.id/