1 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 <LiquidCrystal.h>
2
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);
3 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);
4
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
5 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 <DHT11.h> #include <LiquidCrystal.h> #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() {
6
//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
7 //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("% ");
8 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
9 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.
10
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 <DHT11.h> #include <LiquidCrystal.h> #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
11 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;
12
// 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;
13 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
14 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
15 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
16
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
17 Flow chart Program arduino
Yes
No
Gambar 3.8 Diagram alir (flowchart) struktur hasil pengukuran suhu, kelembaban dan intensitas cahaya untuk output pada LCD&Serial to PC
Start
end 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) Jika HUMI= 0 Dan Temp = 0 Kirim Serial “Error”
Kirim Serial data Temp: dataTemp()
Kirim Serial data Light: dataLight()
Kirim Serial data Light: dataHumi()
18
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
PublicClass Form1
' Dim SerialPort1 As New System.IO.Ports.SerialPort() Dim inputData AsString = ""
19
PublicEvent DataReceived As
IO.Ports.SerialDataReceivedEventHandler
Dim CN As ADODB.Connection Dim RS As ADODB.Recordset
Dim Series1 AsNew Series Dim Series2 AsNew Series
' Terima data dari Port Serial
PrivateSub 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))
EndSub
PublicSub DoUpdate()
'Ambil data dari variabel inputdata
OnErrorGoTo ErrHan
20
Dim temp() AsString Dim hum() AsString Dim Light() AsString Dim data() AsString Dim maxi AsString
Dim nilai() AsString Dim suhuX(5) AsString Dim suhuY(5) AsString
' 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
21 '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 EndIf '... errhan: Exit Sub EndSub
22
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) HandlesMyBase.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() AsString Dim port AsString
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) ForEach port In ports
ComboBox1.Items.Add(port) ' tampilkan port yang terbaca ' ListBox1.Items.Add(port)
23 SerialPort1.PortName() = ComboBox1.Text
EndSub
PrivateSub 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
EndSub
PrivateSub Form1_FormClosed(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosedEventArgs) _
HandlesMyBase.FormClosed
' tutup port serial
SerialPort1.Close()
EndSub
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click If SerialPort1.IsOpen = FalseThen Button1.Text = "CLOSE"
Button1.BackColor = SystemColors.Control ComboBox1.Enabled = False
24
SerialPort1.Open() ' buka Port Else
Button1.Text = "OPEN" ComboBox1.Enabled = True Button1.BackColor = Color.Red SerialPort1.Close() 'tutup port
EndIf
EndSub
PrivateSub Button4_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button4.Click End
EndSub
EndClass
25 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
26
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
No
Yes
Gambar 3.11 Diagram alir/Flowchart frogram VBnet Start end Init Serial_IO() BaudRate = 9600, SetPort 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
Kirim Serial data Temp: dataTemp()
Kirim Serial data Light: dataLight()
Kirim Serial data Humi: dataHumi()
TextBox1Temp(0) salin ke variable TextBox1 TextBox2Hum(1) salin ke variable TextBox2 TextBox3Cahaya(2)salin kevariableTextBox3
Try Open Port Number Open