BAB 3 METODE PENELITIAN
3.1
Metode perancangan Pada bagian yang merupakan bagian (bab.3), ini jika pada bab sebelumnya
pada bab metodologi penelitian telah dipelajari tentang: mikrokontroller AVR khususnya ATmega328, arduino v1.0.4 yang merupakan program yang digunakan pada penelitian ini, prinsip kerja sensor: suhu, intensitas cahaya dan konsep perancangan untuk menggabungkan beberapa rangkaian sensor dengan sistem rangkaian “Multi-channel Data Logger” maka pada bab ini akan dilakukan proses aplikasi yang langsung pada pembuatan aplikasinya perancangan rangkaiannya yang dijelaskan melalui diagram alir (Flowchart) yang dibuat sesuai dengan cara kerja rangkaiannya dan penelitian terhadap hasil akhirnya yang sudah melalui kajian ulang pada proses pengujian akhir sistem yang telah di verifikasi hasil pengujian sistemnya seperti pada penjelasan dibawah ini :
3.1.1 Perancangan sensor suhu Pada tahap ini dimulai dengan perancangan sensor suhu (LM35), dengan melakukan penulisan program list yang ditulis seperti dibawah ini :
Program list :
#include
39 1
LiquidCrystal lcd (13, 12, 11, 10, 9, 8);//pin yang digunakan lcd int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to //the resolution is 10 mV / degree centigrade with a //500 mV offset to allow for negative temperatures
void setup() { lcd.begin(16, 2); lcd.setCursor(0,1); lcd.write("TEMP: "); lcd.setCursor(13,1); lcd.write("C"); Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } }
void loop() { //getting the voltage reading from the temperature sensor int reading = analogRead(sensorPin);
// converting that reading to voltage, for 3.3v arduino use 3.3
2
float voltage = reading * 5.0; voltage /= 1024.0;
// now print out the temperature float temperatureC = voltage* 100 ; //converting from 10 mv per degree wit 500 mV offset //to degrees ((volatge - 500mV) times 100) // now convert to Fahrenheight float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
if(temperatureC >30.0) { lcd.setCursor(0,0); lcd.print("Bahaya"); lcd.setCursor(7,1); lcd.print((int)temperatureC); } else { lcd.setCursor(0,0); lcd.print("Normal"); lcd.setCursor(7,1); lcd.print((int)temperatureC); Serial.print("temp:"); Serial.print(temperatureC);
3
Serial.println(); delay(1000); } }
Dari hasil penulisan program seperti diatas maka akan hasil keluaran pada LCD adalah sebagai berikut seperti pada gambar (3.1 dan 3.2) dibawah ini:
Gambar 3.1 Hasil pengukuran suhu pada LCD
Gambar 3.2 Hasil pengukuran suhu pada serial pc
4
Dari gambar (3.1 dan 3.2) menyatakan proses koding pada pengukuran suhu telah berhasil dilakukan, dengan keluaran (Output) pada LCD dan Serial monitor.
3.1.2
Perancangan sensor suhu dan kelembaban Pada tahap ini dimulai dengan perancangan sensor suhu (LM35) dan
kelembaban (DHT11) dengan melakukan penulisan program list yang ditulis seperti dibawah ini :
Program list :
#include #include #include <math.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);//pin yang digunakan lcd int sensorPin = 0; //Analog PIN0 (sensor LM35) //resolusi 10 mV / derajat celcius //500 mV offset untuk temperatur dibawah minus
int pin=3;//pin DHT11 output DHT11 dht11(pin); void setup() { //menampilkan tulisan temperatur baris atas
5
//init serial Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } lcd.begin(16, 2); }
void loop() { //variable unutk DHT11 int err; float temp, humi;
//variable untuk LM35 int reading = analogRead(sensorPin); // converting that reading to voltage, for 3.3v arduino use 3.3 float voltage = reading * 5.0; voltage /= 1024.0;
// mulai mengkonversi temperatur float temperatureC = voltage* 100 ; //konversi dari 10 mv per derajar dengan 500 mV offset
6
//menjadi derajat ((votage - 500mV) times 100)
float temperature = (temperatureC * 9.0 / 5.0) + 32.0; if((err=dht11.read(humi, temp))==0) {
//ambil data dari LM35 lcd.setCursor(0,0); lcd.print("Temp:"); lcd.setCursor(6,0); lcd.print((int)temperatureC); lcd.print("^C");
Serial.print("Temperature:"); Serial.print((int)temperatureC); Serial.print("^C ");
//ambil data dari DHT11 //Serial.print("temp:"); // Serial.print(temp);
Serial.print("Humidity:"); Serial.print((int)humi); Serial.print("% ");
7
lcd.setCursor(0,1); lcd.print("Humi:"); lcd.setCursor(6,1); lcd.print((int)humi); lcd.print("%"); /* aktifkan komentar dibawah ini untuk membaca perbandingan lcd.setCursor(11,1); lcd.print(temp); */ } else { Serial.println(); Serial.print("Error No :"); Serial.print(err); Serial.println(); } delay(DHT11_RETRY_DELAY); //delay for reread }
Dari hasil penulisan program seperti diatas maka akan hasil keluaran pada LCD adalah sebagai berikut seperti pada gambar (3.3 dan 3.4) dibawah ini :
8
Gambar 3.3 Hasil pengukuran suhu dan kelembaban pada LCD
Gambar 3.4 Hasil pengukuran suhu dan kelembaban udara pada serial monitor
Dari gambar (3.3 dan 3.4), menyatakan proses koding pada pengukuran suhu dan kelembaban telah berhasil dilakukan, dengan keluaran (Output) pada LCD dan Serial monitor.
9
3.1.3
Perancangan sensor suhu, kelembaban dan intensitas cahaya Pada tahap ini dimulai dengan perancangan sensor suhu (LM35),
kelembaban udara (DHT11) dan sensor intensitas cahaya (LDR)dengan melakukan penulisan program list yang ditulis seperti dibawah ini :
Program list : #include <SoftwareSerial.h>
#include
#include
#include <math.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8); int tempPin = A0; //Analog PIN0 (sensor LM35) //resolusi 10 mV / derajat celcius //500 mV offset untuk temperatur dibawah minus
float lightPin = A1;
int pin=3;//pin DHT11 output DHT11 dht11(pin); void setup() { //menampilkan tulisan temperatur baris atas
//init serial
10
Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } lcd.begin(16, 2); }
void loop() { //variable unutk DHT11 int err; float temp, humi, light;
//variable untuk LM35 int reading = analogRead(A1); int baca = analogRead(A0); // converting that reading to voltage, for 3.3v arduino use 3.3 float voltage = baca * 6.0; voltage /= 1024.0;
float Light=reading*5.0; Light/=1024.0; float lightX= Light*100;
11
// mulai mengkonversi temperatur float temperatureC = voltage* 100 ; //konversi dari 10 mv per derajat dengan 500 mV offset //menjadi derajat ((votage - 500mV) times 100) float temperature = (temperatureC * 9.0 / 5.0) + 32.0;
if((err=dht11.read(humi, temp))==0) {
//ambil data dari LM35 lcd.setCursor(0,0); lcd.print("Temp:"); lcd.setCursor(6,0); lcd.print((int)temperatureC); lcd.print(" ");
Serial.print("temp:"); Serial.print((int)temperatureC); Serial.print("^C ");
lcd.setCursor(10,0); lcd.print("Light:"); //ambil data dari LDR;
12
lcd.setCursor(10,1);//pastikan posisi kursor diatur disini... kolom ke 10 baris pertama lcd.print((int)lightX); lcd.print(" "); //kirim ke serial Serial.print("Light:"); Serial.print((int)lightX); Serial.print("Lux ");
//ambil data dari DHT11 //Serial.print("temp:"); // Serial.print(temp);
Serial.print("hum:"); Serial.print((int)humi); Serial.print("% ");
lcd.setCursor(0,1); lcd.print("Hum :"); lcd.setCursor(6,1); lcd.print((int)humi); lcd.print(" "); /* aktifkan komentar dibawah ini untuk membaca perbandingan lcd.setCursor(11,1);
13
lcd.print(temp); */ } else { Serial.println(); Serial.print("Error No :"); Serial.print(err); Serial.println(); } delay(DHT11_RETRY_DELAY); //delay for reread }
void showData (int light)//fungsi pisah string dan tampil data LDR { String s2; s2 = String (light) + "Lux"; lcd.setCursor(11,0); lcd.print(s2); } Dari hasil penulisan program seperti diatas maka akan hasil keluaran pada LCD adalah sebagai berikut seperti pada gambar(3.5 dan 3.6) dibawah ini :
14
Gambar 3.5 Hasil pengukuran suhu,kelembaban dan intensitas cahaya pada LCD
Gambar 3.6 Hasil pengukuran suhu,kelembaban dan intensitas cahaya pada serial monitor
Dari gambar (3.5 dan 3.6), menyatakan proses koding pada pengukuran suhu, kelembaban dan intensitas cahaya telah berhasil dilakukan, dengan keluaran (Output) pada LCD dan Serial monitor. Maka metode penelitian dan perancangan
15
telah berhasil membuat rangkaian dengan konsep “Multi-channel Data Logger”, dimana sensor-sensor telah digabungkan menggunakan rangkaian arduino uno yang berbasiskan pada mikrokontroller ATmega328. Berikut ini merupakan gambar stuktur rancangan rangkaian multichannel data logger melalui penjelasan menggunakan skematik rangkaian (gambar 3.6) diagram alir /Flowchart gambar (gambar 3.7) adalah sebagai berikut:
Skematik rangkaian
Gambar 3.7 Skematik rangkaian pengukuran suhu,kelembaban udara dan intensitas cahaya menggunakan rangkaian arduino uno
16
Flow chart Program arduino
Start
Init header file library Init LCD(), Init Serial()
Get data Voltage. A0 pin( lm35 out)
Temp = ( voltage * 6.0 ) / 1024 Cahaya= (Light * 5)/1024
Panggil Fungsi DHT 11 (pin3)
Yes Kirim Serial “Error”
Jika HUMI= 0 Dan Temp = 0
No Kirim Serial data Temp: dataTemp()
Kirim Serial data Light: dataLight()
Kirim Serial data Light: dataHumi()
end
Gambar 3.8 Diagram alir (flowchart) struktur hasil pengukuran suhu, kelembaban dan intensitas cahaya untuk output pada LCD&Serial to PC
17
3.2
Metode perancangan program VisualBasic/vbnet Setelah berhasil merancang perangkat aplikasi multichannel data logger
pada pengukuran suhu,kelembaban udara dan intensitas cahaya telah dengan keluaran (Output) pada LCD 16x2 dan serial monitor pada aplikasi program arduino uno v.1.0.4 maka pada tahapan selanjutnya perancang system akan melakukan penyempurnaan hasil, dimana dibuata rancangan program khusus untuk tampilan keluaran(Outputn)nya, yang menggunakan aplikasi dari program VisualBasic2010/vbnet2010, dengan menuliskan pada layar (form.1) seperti penjelasan melalui program list adalah sebagai berikut dibawah ini :
'programmer : Antonius Nur ' vb net 2010 Imports System Imports System.Drawing Imports System.Windows.Forms Imports System.Data Imports System.Data.OleDb Imports ADODB Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1 ' Dim SerialPort1 As New System.IO.Ports.SerialPort() Dim inputData As String = "" Dim inputData2 As String = ""
18
Public Event DataReceived As IO.Ports.SerialDataReceivedEventHandler
Dim CN As ADODB.Connection Dim RS As ADODB.Recordset
Dim Series1 As New Series Dim Series2 As New Series
' Terima data dari Port Serial Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _ ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived inputData = SerialPort1.ReadExisting 'atau mengunakan perintah SerialPort1.ReadLine
Me.Invoke(New EventHandler(AddressOf DoUpdate))
End Sub
Public Sub DoUpdate() 'Ambil data dari variabel inputdata On Error GoTo ErrHan RS = New ADODB.Recordset
19
Dim temp() As String Dim hum() As String Dim Light() As String Dim data() As String Dim maxi As String
Dim nilai() As String Dim suhuX(5) As String Dim suhuY(5) As String
' Dim temp As String ' Dim hum As String ' Dim data As String
maxi = TextBox5.Text
data = inputData.Split(" ") temp = data(0).Split(":") hum = data(1).Split(":")
' RS.Open("select * from tbldata ", CN, 3, 3) ' Me.Text = temp(1).ToString.Trim.Length ' If temp(1).ToString.Trim.Length > 0 And hum.ToString.Trim.Length > 0 Then
20
'RS.AddNew() 'RS.Fields("temp").Value = temp(1) 'RS.Fields("hum").Value = hum
'RS.Update() 'End If
TextBox1.Text = inputData & TextBox1.Text TextBox2.Text = temp(1) TextBox3.Text = hum(1) nilai = TextBox2.Text.Split(".")
ProgressBar1.Value = nilai(0) '........... If ProgressBar1.Value < 30 Then Shape.BackColor = Color.Lime Else Shape.BackColor = Color.Red End If '..............
errhan: Exit Sub End Sub
21
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load CN = New ADODB.Connection CN.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\db.mdb;") CN.CursorLocation = CursorLocationEnum.adUseClient CN.Open()
Dim ports() As String Dim port As String
SerialPort1.BaudRate = 9600 'setting baudrate SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.DataBits = 8 SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.Handshake = IO.Ports.Handshake.None SerialPort1.RtsEnable = True 'mendeteksi Nomor Port dan ditampilkan di Combox ports = System.IO.Ports.SerialPort.GetPortNames ComboBox1.Text = ports(0) 'ListBox1.Text = ports(0) For Each port In ports ComboBox1.Items.Add(port) ' tampilkan port yang terbaca ' ListBox1.Items.Add(port) Next port
22
SerialPort1.PortName() = ComboBox1.Text
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 'Pilih nomor Com Port sesuai di combobox SerialPort1.PortName() = ComboBox1.Text End Sub Private Sub Form1_FormClosed(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosedEventArgs) _ Handles MyBase.FormClosed ' tutup port serial SerialPort1.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If SerialPort1.IsOpen = False Then Button1.Text = "CLOSE" Button1.BackColor = SystemColors.Control ComboBox1.Enabled = False
23
SerialPort1.Open() ' buka Port Else Button1.Text = "OPEN" ComboBox1.Enabled = True Button1.BackColor = Color.Red SerialPort1.Close() 'tutup port End If End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click End End Sub
End Class
Gambar 3.9 Tampilan awal program VisualBasic2010/vbnet2010
24
Seperti pada (gambar 3.9) diatas tampilan keluaran (Output) merupakan hasil rancangan untuk tampilan program untuk menampilkan hasil pengolahan data dari rangkaian multichannel data logger pada pengukuran suhu, kelembaban udara dan intensitas cahaya. Jika rangkaian dihubungkan dengan kabel serial USB maka pada bagian COM port akan diisi oleh port yang digunakan pada aplikasi program arduino uno dan untuk memulai mencetak hasil klik bagian token open maka program akan memproses keluaran (Output) yang merupakan hasil keluaran dari rangkaian sensor suhu, kelembaban dan intensitas cahaya.
Gambar 3.10 Tampilan program VisualBasic2010/vbnet2010
Seperti pada (gambar 3.10) diatas tampilan keluaran (Output) yang merupakan hasil rancangan untuk tampilan program untuk menampilkan hasil pengolahan data dari rangkaian multichannel data logger pada pengukuran suhu, kelembaban udara dan intensitas cahaya. Jika rangkaian dihubungkan dengan kabel serial USB maka pada bagian COM port akan diisi oleh port yang digunakan diamana port yang digunakan 25
yaitu port (COM4) pada aplikasi program arduino uno dan untuk memulai mencetak hasil klik bagian token open maka program akan memproses keluaran(Output)yang merupakan hasil keluaran dari rangkaian sensor suhu,kelembaban dan intensitas cahaya. Seperti pada (gambar 3.2c) dibawah ini: Flow chart Program VB NET
Start
Init Serial_IO() BaudRate = 9600,
SetPort
Try Open Port Number
data=SerialPort. DataReceived
Pisah String “ : “ dari Nilai data(x) Split function()
Tempdata(0) salin ke variable Temp Humdata(1) salin ke variable Hum cahayadata(2) salin ke variable Cahaya
TextBox1Temp(0) salin ke variable TextBox1 TextBox2Hum(1) salin ke variable TextBox2 TextBox3Cahaya(2)salin kevariableTextBox3
Kirim Serial data Temp: dataTemp()
Kirim Serial data Light: dataLight()
Kirim Serial data Humi: dataHumi()
end
Gambar 3.11 Diagram alir/Flowchart frogram VBnet 26
No Open ComPort
Yes