• Tidak ada hasil yang ditemukan

Membaca dan Merekam Data dari Sensor

N/A
N/A
Protected

Academic year: 2021

Membagikan "Membaca dan Merekam Data dari Sensor"

Copied!
14
0
0

Teks penuh

(1)

 

Membaca dan Merekam Data dari Sensor 

 

Pendahuluan

 

Pada

 

bagian

 

ini

 

akan

 

dibahas

 

mengenai

 

contoh

 

akuisisi

 

data

 

secara

 

real

 

time

 

dari

 

sensor

 

yang

 

terhubung

 

dengan

 

komputer

 

melalui

 

jalur

 

USB.

 

Pada

 

contoh

 

kasus

 

ini

 

digunakan

 

sensor

 

DHT11

 

yang

 

akan

 

mengirimkan

 

data

 

suhu

 

dan

 

kelembaban

 

udara

 

(RH)

 

secara

 

berkala.

 

Data

 

yang

 

dikirim

 

kemudian

 

akan

 

dibaca

 

dan

 

disimpan

 

menggunakan

 

program

 

visual

 

basic

 

dan

 

selanjutnya

 

data

 

akan

 

ditampilkan

 

dalam

 

bentuk

 

grafik

 

untuk

 

visualisasi.

 

 

Skema

 

Rangkaian

 

Gambar

 

1

   

menunjukkan

 

skema

 

rangkaian

 

sensor

 

DHT11

 

yang

 

terhubung

 

dengan

 

mikrokontroler

 

Arduino

 

Uno.

 

Sensor

 

ini

 

memiliki

 

4

 

pin/kaki

 

yaitu

 

Vcc,

 

Data

signal,

 

GND1,

 

dan

 

GND2.

 

Pin

 

Vcc

 

dihubungkan

 

dengan

 

sumber

 

tegangan

 

3.3

 

Volt,

 

pin

 

GND1

 

dan

 

GND2

 

dihubungkan

 

dengan

 

ground,

 

dan

 

pin

 

Data

signal

 

dihubungkan

 

pada

 

digital

 

pin

 

yang

 

akan

 

kita

 

gunakan

 

untuk

 

membaca

 

data

 

dari

 

sensor.

 

Selanjutnya

 

mikrokontroler

 

Arduino

 

akan

 

terhubung

 

dan

 

berkomunikasi

 

dengan

 

komputer

 

melalui

 

jalur

 

USB.

 

 

 

 

Gambar

 

1.

 

Skema

 

rangkaian

 

untuk

 

pembacaan

 

sensor

 

DHT11.

 

(2)

Program

 

pada

 

mikrokontroler

 

Arduino

 

Berikut

 

ini

 

adalah

 

list

 

program

 

pada

 

mikrokontroler

 

Arduino.

 

Untuk

 

sensor

 

DHT11

 

ini

 

telah

 

tersedia

 

library

 

program

 

DHT11.h.

 

Sebagaimana

 

ditunjukkan

 

pada

 

skema

 

rangkaian

 

pada

 

Gambar

 

X,

 

pada

 

contoh

 

ini

 

digunakan

 

pin

 

digital

 

4

 

untuk

 

pembacaan

 

data.

 

Untuk

 

update

 

pembacaan

 

data

 

dilakukan

 

setiap

 

3

 

detik.

 

Untuk

 

mengubahnya

 

bisa

 

dilakukan

 

dengan

 

mengubah

 

nilai

 

variable

 

update_time’

sesuai

 

dengan

 

interval

 

yang

 

diinginkan

 

(dalam

 

millisecond).

 

/* Program pembacaan suhu dan RH dengan sensor DHT11 */

#include <DHT11.h>

int pin=4;

DHT11 dht11(pin); long cur_time, time0; int update_time=3000; float cur_Temp, cur_RH;

void setup(){ Serial.begin(9600); cur_time=millis(); time0=millis(); } void loop(){ int err;

float temp, humi;

while ((millis()-cur_time)< update_time){ if((err=dht11.read(humi, temp))==0){ cur_Temp=temp;

cur_RH=humi; }

delay(DHT11_RETRY_DELAY); //delay for reread }

// Update Sensor Data:

Serial.print(millis()-time0); Serial.print(","); Serial.print(cur_Temp); Serial.print(","); Serial.print(cur_RH); Serial.println(); cur_time=millis(); }

(3)

Program

 

Visual

 

Basic

 

pembacaan

 

dan

 

perekaman

 

data

 

dari

 

sensor

 

 

Pemrograman dengan Visual Basic diawali dengan membuat desain layout tampilan seperti pada  Gambar 2 untuk menampilkan data hasil pembacaan  dari sensor DHT11 yang dikirim dalam format text.   Tampilan antarmuka   terdiri dari TextBox untuk menampilkan data Kelembaban dan Suhu , sebuah  tombol   CommandButton   untuk mengakhiri program, dan MsChart untuk menampilkan grafik secara  real time.  

 

Gambar 2. Desain layout untuk menampilkan data pembacaan sensor 

Langkah selanjutnya adalah penulisa kode program sesuai kebutuhan fungsional tampilan. Pada saat  program dijalankan VB akan mengaktifkan jalur komunikasi serial melalui Port Comm 4 dengan perintah  sebagai berikut :                     

Private Sub Form_Load()

With MSComm1

If .PortOpen Then .PortOpen = False .CommPort = 4 .Settings = "9600,N,8,1" .DTREnable = True .RTSEnable = True .RThreshold = 1 .SThreshold = 0 .PortOpen = True End With With Text1 .BackColor = vbWhite .Locked = True .Text = "" End With End Sub

(4)

Selanjutnya  diperlukan  perintah  untuk membaca  data  dari file  dengan  nama “dataku.txt”    dan  menampilkannya dalam bentuk grafik dengan kode program berikut : 

Private Sub MSComm1_OnComm()

Dim strInput As String Dim str() As String Dim nfile As String

Static strBuffer As String Dim boComplete As Boolean Dim intPos As Integer

Dim t(1000), h(1000), s(1000), jr, j

'---Membaca data untuk grafik--- jr = 0

Open App.Path + "\dataku.txt" For Input As #1 Do Until EOF(1) jr = jr + 1 Input #1, t(jr), h(jr), s(jr) Loop Close #1 '---Menampilkan Grafik--- Grafik.Visible = True With Grafik .Refresh .RowCount = jr .ColumnCount = 2 For j = 1 To jr .Row = j: .RowLabel = ""

.Column = 1: .Data = h(j): .ColumnLabel = "Kelembaban" .Column = 2: .Data = s(j): .ColumnLabel = "Suhu"

Next j End With

Open App.Path + "\dataku.txt" For Append As #3 With MSComm1

'---test data masuk--- Select Case .CommEvent

Case comEvReceive ' Pembacaan data

' Terima dan tambahkan ke buffer strInput = .Input

strBuffer = strBuffer & strInput Do

' Pengecekan apakah input ke buffer sudah lengkap

' NOTE: pengirim data berhenti tiap ada code Carriage Return intPos = InStr(strBuffer, vbCrLf)

If intPos <> 0 Then  

(5)

Perintah untuk menghentikan program yang tersimpan pada tombol dengan

tulisan STOP.

Private Sub Save_Click()

End End Sub

' Rekord data lengkap ' Ekstrak data ke buffer

strInput = Mid$(strBuffer, 1, intPos - 1) str = Split(strInput, ",")

Text1.Text = CInt((Val(str(0) - 521) / 1000)) Text2.Text = str(1)

Text3.Text = str(2)

Write #3, Val(Text1.Text), Val(Text2.Text),Val(Text3.Text) ' Pengecekan keberadaan data lain di buffer

If intPos + 1 < Len(strBuffer) Then ' Pengiriman data ke awal buffer ' kembali ke looping

strBuffer = Mid(strBuffer, intPos + 2) Else

' tidak ada data di buffer ' selesai

strBuffer = "" boComplete = True End If

Else

' Pembacaan rekord selesai ' Keluar

boComplete = True End If

Loop Until boComplete = True End Select

End With 'MSComm1 Close #3

End Sub  

(6)

Perintah penambahan data bila TextBox penampil suhu nilainya berubah.

 

Setelah  seluruh  kode  program  selesai  diketik  selanjutnya  adalah  menjalankan  program  untuk  mengetahui apakah desain layout telah sesuai dengan rancangan tampilan yang diharapkan.  Gambar 3  menunjukkan tampilan program pada saat dijalankan. 

 

Gambar 3. Tampilan program pada saat berjalan (Running mode) 

   

Private Sub Textbox1_Change()

If InStr(Textbox1.Text, Chr(42)) = 0 Then Open "dataku.txt" For Append As #1

Print #1, Textbox1.Text Close #1

Else End If End Sub

(7)

 

Mengirim Perintah dari Komputer ke 

Aktuator 

 

Pendahuluan

 

Pada

 

bagian

 

ini

 

akan

 

dibahas

 

mengenai

 

komunikasi

 

computer

 

dengan

 

perangkat

 

(

device

)

 

lain.

 

Dalam

 

contoh

 

kasus

 

ini,

 

komputer

 

akan

 

dihubungkan

 

dengan

 

Mikrokontroler

 

Arduino

 

Uno

 

dan

 

beberapa

 

LED.

 

Komputer

 

akan

 

mengirimkan

 

perintah

 

sehingga

 

dapat

 

mengatur

 

penyalaan

 

LED

 

sesuai

 

dengan

 

pola

pola

 

tertentu

 

yang

 

telah

 

ditetapkan

 

sebelumnya.

 

 

Skema

 

Rangkaian

 

Gambar

 

4

 

menunjukkan

 

rangkaian

 

yang

 

digunakan

 

dalam

 

contoh

 

ini.

 

Tiga

 

buah

 

LED

 

(kuning,

 

hijau

 

dan

 

merah)

 

dihubungkan

 

dengan

 

pin

 

digital

 

(2,3,

 

dan

 

4)

 

sebagai

 

output.

 

Untuk

 

membatasi

 

arus

 

bisa

 

ditambahkan

 

resistor

 

220

 

 

330

 

ohm.

 

Perlu

 

dipastikan

 

bahwa

 

polaritas

 

(positif

 

dan

 

negatif)

 

dari

 

LED

 

tidak

 

terbalik.

 

Selanjutnya

 

mikrokontroler

 

Arduino

 

akan

 

terhubung

 

dan

 

berkomunikasi

 

dengan

 

komputer

 

melalui

 

jalur

 

USB.

 

 

 

 

(8)

 

Program

 

pada

 

mikrokontroler

 

Arduino

 

Pada

 

contoh

 

ini,

 

Mikrokontroler

 

Arduino

 

diprogram

 

agar

 

ketika

 

menerima

 

perintah

 

dari

 

computer,

 

maka

 

Arduino

 

akan

 

mengatur

 

penyalaan

 

LED

 

sesuai

 

dengan

 

pola

 

yang

 

telah

 

ditetapkan

 

sebalumnya.

 

Ada

 

6

 

(enam)

 

nilai

 

input

 

dan

 

pola

 

penyalaan

 

LED

 

yang

 

digunakan

 

dalam

 

contoh

 

ini

 

sebagaimana

 

ditunjukkan

 

dalam

 

Tabel

 

XI.

 

 

Tabel

 

1.

 

Input

 

dan

 

pola

 

penyalaan

 

LED

 

Input

 

Pola

 

penyalaan

 

LED

 

‘1’

 

 

(angka

 

1)

 

LED

 

merah

 

ON;

 

LED

 

lainnya

 

OFF

 

‘2’

 

 

(angka

 

1)

 

LED

 

merah

 

ON;

 

LED

 

lainnya

 

OFF

 

‘3’

 

 

(angka

 

1)

 

LED

 

merah

 

ON;

 

LED

 

lainnya

 

OFF

 

‘4’

 

 

(angka

 

1) 

Semua

 

LED

 

ON

 

‘5’

 

 

(angka

 

1) 

Semua

 

LED

 

ON

 

dan

 

OFF

 

secara

 

serentak

 

dalam

 

interval

 

tertentu

  

(berkedip

 

atau

 

blinking

)

 

Karakter

 

lain 

Semua

 

LED

 

OFF

 

 

Berikut

 

ini

 

list

 

program

 

yang

 

digunakan

 

pada

 

mikrokontroler

 

Arduino.

 

 

/* Program Penyalaan LED berdasarkan perintah dari Komputer */

int led_Red = 4; int led_Green = 3; int led_Yellow = 2;

void setup(){

Serial.begin(9600);

pinMode (led_Red, OUTPUT); pinMode (led_Green, OUTPUT); pinMode (led_Yellow, OUTPUT); }

void loop(){

while (Serial.available() == 0);

int command = Serial.read()-'0';

switch (command){

case 1 : //Input ‘1’ --> Red LED ON while (Serial.available() == 0) { digitalWrite(led_Red,HIGH); } digitalWrite(led_Red,LOW); break;

(9)

case 2 : // Input ‘2’ --> Green LED ON while (Serial.available() == 0) { digitalWrite(led_Green,HIGH); } digitalWrite(led_Green,LOW); break;

case 3 : // Input ‘3’ --> Yellow LED ON while (Serial.available() == 0) { digitalWrite(led_Yellow,HIGH); } digitalWrite(led_Yellow,LOW); break;

case 4 : // Input ‘4’ --> All LED ON while (Serial.available() == 0) { digitalWrite(led_Red,HIGH); digitalWrite(led_Green,HIGH); digitalWrite(led_Yellow,HIGH); } digitalWrite(led_Red,LOW); digitalWrite(led_Green,LOW); digitalWrite(led_Yellow,LOW); break;

case 5 : //Input ‘5’ -->Yellow LED Blinking Blinking_LED();

break;

default : // for other Input --> All LED Off digitalWrite(led_Red,LOW); digitalWrite(led_Yellow,LOW); digitalWrite(led_Green,LOW); command = 0; } } void Blinking_LED() { while (Serial.available() == 0) { digitalWrite(led_Red,HIGH); digitalWrite(led_Green,HIGH); digitalWrite(led_Yellow,HIGH); delay (100); digitalWrite(led_Red,LOW);

(10)

digitalWrite(led_Green,LOW); digitalWrite(led_Yellow,LOW); delay(100); } digitalWrite(led_Red,LOW); digitalWrite(led_Yellow,LOW); digitalWrite(led_Green,LOW); return; }

 

 

Program

 

Visual

 

Basic

 

pembacaan

 

data

 

dari

 

sensor

 

 

Pemrograman dengan Visual Basic diawali dengan membuat desain layout tampilan kontrol aktuator  seperti pada Gambar 5. Combo Box digunakan untuk memilih jalur komunikasi yang digunakan oleh  program VB sesuai dengan jalur komunikasi yang aktif pada Arduino.  Beberapa tombol  lain disediakan  untuk   mengaktifkan aktuator yang terhubung dengan 3 buah lampu LED.   Sebuah tombol dengan  tulisan CLOSE disediakan untuk menutup komunikasi, dan tombol dengan tulisan SELESAI digunakan  untuk mengakhiri program. 

  Gambar 5. Desain layout untuk tampilan komunikasi kontrol aktuator   

Langkah awal saat program dijalankan adalah pencarian jalur komunikasi serial yang tersedia. Perintah  untuk mencari dan menghubungkan jalur komunikasi serial adalah sebagai berikut : 

               

(11)

                                                                                               

' ---Mencari Port COM yang aktif---

Dim InBuffStr As String Dim flagBlink As Boolean

Private Sub Form_Load()

For i = 1 To 40

On Error Resume Next MSComm1.CommPort = i On Error Resume Next MSComm1.PortOpen = True On Error Resume Next MSComm1.PortOpen = False

If Err.Number = 0 Then

cmbComPort.AddItem ("COM" + Str(i)) End If Next i With MSComm1 .Handshaking = comNone .InputMode = 0 .InputLen = 0 .RThreshold = 1 .RTSEnable = False .Settings = "9600,n,8,1" .SThreshold = 1 .PortOpen = False End With For i = 0 To 5 lblLED(i).BackColor = vbWhite Next i MSComm1.Output = "*" disableButton End Sub

Private Sub MSComm1_OnComm()

Dim InBuff As String

Select Case MSComm1.CommEvent

Case comEvReceive ' Menerima RThreshold # char. End Select

(12)

                                                     

Kode program untuk mengatur  fungsi masing‐masing tombol kontrol  adalah sebagai berikut :                                          

'--- Me-Nonaktifkan semua tombol lampu

Public Sub disableButton()

For i = 0 To 5

cmdLED(i).Enabled = False Next i

End Sub

'--- Mengaktifkan semua tombol lampu

Public Sub disableButton()

For i = 0 To 5

cmdLED(i).Enabled = True Next i

End Sub

'---Membuka koneksi ke PORT : COM---

Private Sub cmdOpenCom_Click()

PortNum = Val(Mid$(cmbComPort.Text, 4)) If cmdOpenCom.Caption = "OPEN" Then If PortNum > 0 Then MSComm1.CommPort = PortNum MSComm1.PortOpen = True cmdOpenCom.Caption = "CLOSE" enableButton End If Else

If cmdOpenCom.Caption = "CLOSE" Then MSComm1.PortOpen = False cmdOpenCom.Caption = "OPEN" disableButton End If End If End Sub ' ---Tombol SELESAI

Private Sub Command1_Click()

Call cmdLED_Click(5) End

(13)

                                                                               

Gambar 6 menunjukkan tampilan program pada saat dijalankan.  Gambar 6(a) menunjukkan  tampilan  pada saat tombol   “LED 2”   (lampu hijau) diaktifkan, sedangkan Gambar 6(b) menunjukkan tampilan  pada saat   tombol “Semua Menyala” diaktifkan.   Tampilan pada antar muka VB menampilkan kondisi  nyata status lampu LED yang terhubung dengan Arduino (kecuali   tampilan pada menu “Semua  Berkedip”). 

 

‘---Tombol pengatur nyala lampu LED---

Private Sub cmdLED_Click(Index As Integer)

Dim x

MSComm1.Output = Str(Index + 1)

If Index = 0 Then 'Bila tombol merah ditekan

lblLED(0).BackColor = vbRed lblLED(1).BackColor = vbWhite lblLED(2).BackColor = vbWhite End If

If Index = 1 Then 'Bila tombol hijau ditekan

lblLED(0).BackColor = vbWhite lblLED(1).BackColor = vbGreen lblLED(2).BackColor = vbWhite End If

If Index = 2 Then 'Bila tombol kuning ditekan

lblLED(0).BackColor = vbWhite lblLED(1).BackColor = vbWhite lblLED(2).BackColor = vbYellow End If

If Index = 3 Then 'Bila semua LED dinyalakan

lblLED(0).BackColor = vbRed lblLED(1).BackColor = vbGreen lblLED(2).BackColor = vbYellow End If

If Index = 4 Then 'Bila Semua LED berkedip

lblLED(0).BackColor = vbRed lblLED(1).BackColor = vbGreen lblLED(2).BackColor = vbYellow End If

If Index = 5 Then 'Bila semua LED dimatikan

lblLED(0).BackColor = vbWhite lblLED(1).BackColor = vbWhite lblLED(2).BackColor = vbWhite End If

(14)

      (a)    (b) 

Gambar 6. Tampilan antar muka kontrol lampu LED pada mode berjalan. 

 

Gambar

Gambar  1    menunjukkan  skema  rangkaian  sensor  DHT11  yang  terhubung  dengan  mikrokontroler  Arduino  Uno.  Sensor  ini  memiliki  4  pin/kaki  yaitu  Vcc,  Data‐signal,  GND1,  dan  GND2.  Pin  Vcc  dihubungkan  dengan  sumber  tegangan  3.3  Volt,  pin  GND1  dan  GND2  dihubungkan dengan ground, dan pin Data‐signal dihubungkan pada digital pin yang akan kita  gunakan untuk membaca data dari sensor. Selanjutnya mikrokontroler Arduino akan terhubung  dan berkomunikasi dengan komputer melalui jalur USB.        Gambar 1. Skema rangkaian untuk pembacaan sensor DHT11.   
Gambar 2. Desain layout untuk menampilkan data pembacaan sensor 
Gambar 3. Tampilan program pada saat berjalan (Running mode) 
Gambar  4  menunjukkan  rangkaian  yang  digunakan  dalam  contoh  ini.  Tiga  buah  LED  (kuning,  hijau dan merah) dihubungkan dengan pin digital (2,3, dan 4) sebagai output. Untuk membatasi  arus  bisa  ditambahkan  resistor  220  –  330  ohm.  Perlu  dipastikan  bahwa  polaritas  (positif  dan  negatif)  dari  LED  tidak  terbalik.  Selanjutnya  mikrokontroler  Arduino  akan  terhubung  dan  berkomunikasi dengan komputer melalui jalur USB. 

Referensi

Dokumen terkait

Pada metode Dalcroze, improvisasi memiliki peran penting untuk meningkatkan musikalitas siswa (Dopo, 2018). Improvisasi pada metode Dalcroze untuk menemukan solusi siswa

Dilarang untuk me-reproduksi dokumen ini tanpa diketahui oleh Program Studi Teknik Informatika 2.2.1.13 Fungsi Tampil Data Jenis Makanan..

Kategori kurang efektif sebanyak 20 responden (23%), hal ini disebabkan di dalam pemahaman melanggar HAM memiliki faktor yang mempengaruhi mereka bertindak kejahatan

Berdasarkan uraian diatas, penelitian tentang pengaruh pemberian Bioinsektisida dari isolate Beauveria basianna dan Metarizhium anisopliae dengan pengaruh sinar UV

Melihat dari identifikasi masalah yang ada, dapat dirumuskan masalah yang muncul adalah bagaimana Gedung Pemuda di Kota Manado dengan tema Arsitektur Perilaku

Hendaknya dalam mewujudkan arsitektur yang maju harus dipertimbangkan iklim yang paling utama, bila ditelaah lebih dalam, bangunan tradisional Indonesia adalah bangunan yang paling

Berdasarkan definisi karakter dan subkarakteristik aspek functionality , pengujian dilakukan dengan checklist daftar fungsi untuk melihat kesesuaian kesatuan fungsi

Hasil nilai rata-rata tekanan intraokular ini lebih tinggi dibandingkan penelitian yang dilakukan oleh Rene, et al pada populasi orang Eropa, menunjukkan dari