Menampilkan Suhu dari sensor LM35 dan Arduino ke Visual Basic


Sebenernya banyak jenis data yang bisa ditampilkan di visual basic, tidak hanya suhu. Tapi ini berhubung banyak permintaan dan mumpung ketemu pemecah masalahnya, tidak ada salahnya saya bagi ke teman” sekalian. Sudah pasti tujuan akhirnya adalah seperti ini:

 

Langkah-langkah membuat sensor suhu dengan Arduino dan VB6:

  1. Pasang LM5 pada Arduino. Rangkaian seperti ini:
  2. Buat program seperti ini pada software Arduino, kemudian upload ke board Arduino.
    /* Program Suhu dan VB 6
     Bangli 2011
     */
    // deklarasi variabel
    float tempC;
    int tempPin = 0;
    void setup()
    {
     // buka serial port, set baud rate 9600 bps
     Serial.begin(9600);
    }
    void loop()
    {
     // baca data dari sensor
     tempC = analogRead(tempPin);
     // konversi analog ke suhu
     tempC = (5.0 * tempC * 100.0)/1024.0;
     // kirim data via serial berupa nilai biner
     Serial.print((int)tempC,BYTE);
     // tarik nafas sejenak
     delay(1000);
    }
  3. Buat sebuah form pada VB6 yang berisi Label1 (unutk output Suhu) dan Label2 (untuk output derajat celsius) kemudian salin program sebagai berikut:

    Private Sub Form_Load()
      With MSComm1
        'non aktifkan dulu serial port
        If .PortOpen Then .PortOpen = False
        'set serial port yang ingin digunakan
        .CommPort = 3
        'set baud rate,parity,databits,stopbits
        .Settings = "9600,N,8,1"
        'set DTR and RTS
        .DTREnable = True
        .RTSEnable = True
        'aktifkan event oncomm event
        .RThreshold = 1
        'non aktifkan event oncomm
        .SThreshold = 0
        'aktifkan serial port
        .PortOpen = True
      End With 'MSComm1
      'tampilkan tanda derajat
      Label2.Caption = Chr(176) + "C"
    End Sub
    Private Sub MSComm1_OnComm()
      Dim strInput As String
      With MSComm1
        'test event data masuk
        Select Case .CommEvent
          Case comEvReceive
            'tampilkan data dari Arduino
            strInput = .Input
            Label1.Caption = Asc(Mid(strInput, 1, 1))
        End Select
      End With 'MSComm1
    End Sub
  4. Jalankan program VB tersebut dalam keadaan Arduino terhubung dengan komputer. Jangan lupa menyesuaikan nomor port pada program VB anda dengan port yang dipakai Arduino (sudah tau kan gimana cara’a ngecek port yang dipakai😀 Good Luck).

58 comments

    1. errornya gimana ? bisa dijelaskan lebih spesifik lg ?
      saran saya, jangan copas program di atas, mendingan ketik ulang, pasti working🙂

  1. mas bisa di jelaskan ngga sintak yg ini…

    Private Sub MSComm1_OnComm()
    Dim strInput As String
    With MSComm1
    ‘test event data masuk
    Select Case .CommEvent
    Case comEvReceive
    ‘tampilkan data dari Arduino
    strInput = .Input
    Label1.Caption = Asc(Mid(strInput, 1, 1))
    End Select
    End With ‘MSComm1
    End Sub

  2. mas bagai mana caranya jika saya mempunya dua buah sensor, dan nanti nya masing” sensor tersebut langsung tampil di label masing”…
    contoh:
    sensor 1 tampil di lbl_1
    dan sensor dua tampil di lbl_2…

    1. Kirim datanya dari arduino dalam 1 baris, kemudian di vb pake fungsi “mid” untuk memilah data untuk menampilkan di label1 dan label 2

      1. Fungsi Mid dalam VB untuk mendapatkan beberapa karakter dari 1 baris kata/kalimat. Contoh Mid(“cicinkwordpress”,7,9) maka yg muncul adalah “wordpress” karena dihitung dari karakter yg no 7 sebanyak 9 karakter.

    2. ‘tampilkan data dari Arduino
      ‘strInput = Mid(.Input, 1, 6)
      strInput = .Input
      Form1.Label4.Caption = strInput
      Label4.Caption = strInput
      Temp = Mid(strInput, 1, 10)
      If Len(Mid(strInput, 1, 6)) = 6 Then
      If (Mid(strInput, 1, 2) = “U0”) Or (Mid(strInput, 3, 6) = “U1”) Then
      Form_Main.Label1.Caption = Mid(strInput, 1, 6)
      Label1.Caption = Mid(strInput, 1, 6)
      End If
      End If
      End Select
      End With ‘MSComm1

      ini sintax saya mas, tetapi kenapa dia tetep satu baris dan ngga mau kepotong…?

      1. kalau di arduino memang tampilan di serial monitornya 1 baris pasti mau. kalau ngga pke aja vb.net.

  3. setelah saya coba kenapa hasilnya anh ya mas, saya menggunakan sensor ultrasonik…
    jadi hanya angka 9, 10, 119 yg muncul,,,
    kira” apa nya salah…

      1. maksud saya, kalau di serial monitor arduino dan di vb hasilnya sama, maka koneksi VB dan arduino tidak ada masalah. Jadi masalahnya di coding mikrokontrolnya.

      2. ouch gitu ya mas,,,
        saya hanya menggunakan serial print biasa saja mas, dan saya bingung ko di sintax mas menggunakan ini serial print nya “((int)tempC,BYTE);” bisa dijelaskan mas,,,

        saya bole minta YM mas ngga, biar nanya nya lebih enak

      3. pastikan di serial monitor ditampilkan secara 1 baris continue..
        kemudian di vb tinggal dipenggal karakternya. Untuk lebih mudahnya pake aja vb.net

  4. Untuk Postingan selanjutnya mungkin saya akan menjelaskan bagaimana caranya menghubungkan Arduino dengan VB.NET

  5. syntax error -> Serial.print((int)tempC,BYTE);
    comment nya the BYTE keyword is no longer supported
    itu knpa ya?

    1. Owh..itu perintah ‘BYTE’ ga support sama jenis mikrokontrolnya. Biasanya Jenis Arduino Leonardo ga support BYTE lg. Solusinya coba hapus aja syntax BYTE nya trs upload ulang

      1. BYTE nya diganti DEC gmana ?
        Arduino UNO yang saya gunakan. Dibaca di VB nya berupa biner ?
        Terima kasih

      2. Owh berarti masalhnya di IDE nya gan.. jangan dlu pke Arduino IDE versi 1.0 ke atas.. karena udah ga support syntax BYTE lg.. pasti working..selamat mencoba. dan kalau sempat dikabarin ya biar pembaca yg lain tau😀

    1. Kurang tau saya mas.. saya juga masih nyari” soalnya Arduino Leonardo saya cuma bisa dipake di jenis Arduino IDE 1.0 ke atas dan code BYTE nya tidak bisa dipake. Tapi kalo mas ga pake Arduino Leonardo mending download aja IDE yg dibawah 1.0 di situs resminya arduino. Pasti ada.

  6. kalo di ganti BYTE nya, pembacaan di VB nya beda ya…
    Bisa dijelaskan ga mas ? Saya butuh banget keterangan tiap codenya…
    Punya source lengkapnya mas ?

    1. kalo agan pake arduino 1.0 ke atas, hilangin aja syntax BYTE nya. Contoh : Serial.print(13, BYTE) menjadi >> Serial.print(13).

      Pembacaan di vb tetap sama yaitu Serialport.read

      Semoga sukses🙂

  7. mau tanya mas, skripsi saya tentang sensor gas, lah inputan nya ada 2 gas CO sama NO, tapi pas di run program vibi nya, semua pada ke baca pada 1 list saja, gmn caranya buat misah hasil dari gas CO sendiri dan NO sendiri, dan seringkali program pada vibi ngebaca nya acak, contoh :
    sen
    sor ga
    s Co
    lah ngbaca d tampilannya kayak gitu, gmn biar jadi 1 baris, mohon pencerahan nya

    1. bisa gan.. sesuaiin aja coding di vb nya.. supaya listview tidak bertambah terus.. tambahin limit 10-20 list data aja.. karena mikrokontrol sifatnya looping terus

  8. gan mau tanya nih kalo baca data dari atmega8535 bisa ga pake script code diatas?
    mohon bantuannya ya gan, saya mau baca data dari atmega 8535 ke vb6

  9. mas, saya mau nanya kekmana cara memanggil data dari sensor ke vb6 saya menngunakan arduino dan sensor saya pake dua sensor, sensor warna dan sensor tekanan jdi kekmana tu sintax nya. saya kesulitan untuk menampilkan hasil sensor ke arduino nya. ini untuk TA saya mas mhon di bantu ya..

    1. diatas sudah jelas kynya mba. Kalau mba pke 2 sensor, kirim aja datanya ke serial dengan 1 baris aja (misalnya cuma dipisah spasi) jadi pas dibaca di vb jd gampang.. baca lewat jumlah karakter dan posisi karakter

  10. Kak, mohon pencerahannya. saya mau buat sistem monitoring dengan sensor DHT11, Arduino dengan interfacenya di VB 6. Caranya menampilkan data yang diterima sensor di VB 6 bagaimana kak? Error terus waktu compilenya. Trims kak.

  11. Kak. Mau tanya. codingku ini apa udah bener. kok bagian .strInput=.Input kok muncul error reading comm device. COM arduino saya COM4 kak. Mohon penjelasannya ya. dwimaulana1996@gmail.com

    Private Sub Command1_Click()
    MSComm1.CommPort = 4
    ‘tergantung COM port yang digunakan
    MSComm1.Settings = “9600,n,8,1”
    ‘contoh setting serial port
    MSComm1.InputLen = 0
    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True

    If MSComm1.PortOpen = False Then
    MSComm1.PortOpen = True
    End If

    Select Case MSComm1.CommEvent
    ‘ Errors
    Case comEventRxParity
    ‘ Parity Error.
    MsgBox “Parity”
    ‘ Events
    Case comEvReceive
    ‘ Received RThreshold # of chars.
    End Select
    End Sub

    Private Sub Command2_Click()
    If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
    End If
    End Sub

    Private Sub MSComm1_OnComm()
    Dim strInput As String
    With MSComm1
    ‘tes event data masuk
    Select Case .CommEvent
    Case comEvReceive
    ‘tampilkan data dari arduino
    strInput = .Input
    Label7.Caption = Asc(Mid(strInput, 1, 1))
    End Select
    End With ‘MSComm1
    End Sub
    Private Sub Form_Load()
    ‘menampilkan tanggal dan jam
    aHari = Array(“Minggu”, “Senin”, “Selasa”, “Rabu”, “Kamis”, “Jumat”, “Sabtu”)
    Timer1.Interval = 1000
    Timer1.Enabled = True

    ‘kode cek port serial yang aktif
    On Error Resume Next
    Dim i As Integer
    For i = 1 To 100
    MSComm1.CommPort = i
    MSComm1.PortOpen = True
    If MSComm1.PortOpen Then
    Combo1.AddItem “COM” & i
    MSComm1.PortOpen = False
    Else
    End If
    Next
    End Sub

  12. Kak. Ada yg salah dengan syntax ini? kok sewaktu compile, bagian strIput=.input error. error reading comm device. maksudnya apa ya kak?

    Private Sub Command1_Click()
    MSComm1.CommPort = 4
    ‘tergantung COM port yang digunakan
    MSComm1.Settings = “9600,n,8,1”
    ‘contoh setting serial port
    MSComm1.InputLen = 0
    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True

    If MSComm1.PortOpen = False Then
    MSComm1.PortOpen = True
    End If

    Select Case MSComm1.CommEvent
    ‘ Errors
    Case comEventRxParity
    ‘ Parity Error.
    MsgBox “Parity”
    ‘ Events
    Case comEvReceive
    ‘ Received RThreshold # of chars.
    End Select
    End Sub

    Private Sub Command2_Click()
    If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
    End If
    End Sub

    Private Sub MSComm1_OnComm()
    Dim strInput As String
    With MSComm1
    ‘tes event data masuk
    Select Case .CommEvent
    Case comEvReceive
    ‘tampilkan data dari arduino
    strInput = .Input
    Label7.Caption = Asc(Mid(strInput, 1, 1))
    End Select
    End With ‘MSComm1
    End Sub

    Private Sub Form_Load()
    ‘kode cek port serial yang aktif
    On Error Resume Next
    Dim i As Integer
    For i = 1 To 100
    MSComm1.CommPort = i
    MSComm1.PortOpen = True
    If MSComm1.PortOpen Then
    Combo1.AddItem “COM” & i
    MSComm1.PortOpen = False
    Else
    End If
    Next
    End Sub

  13. Arduino: 1.6.12 (Windows 10), Board: “Arduino/Genuino Uno”

    c:12: error: The ‘BYTE’ keyword is no longer supported.
    As of Arduino 1.0, the ‘BYTE’ keyword is no longer supported.

    Serial.print((int)tempC,BYTE);

    ^

    exit status 1
    The ‘BYTE’ keyword is no longer supported.

  14. gan saya pake visual studio 2013, di arduino ide nya udh muncul. tapi di vbnya gak muncul, portnya sudah saya atur juga.
    awalnya yg label2.caption itu eror gan

    ‘tampilkan tanda derajat
    Label2.Caption = Chr(176) + “C”

    terus pas saya ganti label2.text gak eror lagi, tapi nilainya gak muncul gan. minta pencerahananya gan, untuk yg di form vbnya harus digimanain atau labelnya diapain.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s