Thursday, 4 December 2014

Antarmuka Serial Port VB 2010 (Komunikasi Serial Arduino - VB 2010)

Seperti halnya mikrokontroller yang memiliki port UART, arduino dapat melakukan komunikasi dengan device lain secara serial. Kali ini untuk interface yang digunakan ialah aplikasi yang dibuat menggunakan VB2010 . Sebagai contohnya dapat di lajutkan kelangkah berikut.

1. Aplikasi Monitoring
Buat desain formnya (misal seperti ini)


Untuk penamaan components nya adalah : ComboBox_COM, ComboBox_BAUD, Button_Connect, Button_Disconnect, TextBox_DataSend, Button_Send, TextBox_DataReceive.
Jangan lupa juga tambahkan serial port.


ok, lanjut ke codenya :


Imports System.IO.Ports
Imports System.Threading
Public Class Form1
    Dim WithEvents sp As New SerialPort
    Private Sub GetSerialPortNames()
        For Each sport As String In My.Computer.Ports.SerialPortNames
            ComboBox_COM.Items.Add(sport)
        Next
    End Sub
    Sub ShowString(ByVal myString As String)
        TextBox_DataReceive.AppendText(myString)
        TextBox_DataReceive.Select(TextBox_DataReceive.TextLength, 0)
        TextBox_DataReceive.ScrollToCaret()
    End Sub

    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myDelegate As New myMethodDelegate(AddressOf ShowString)
    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"}

        ComboBox_BAUD.Items.AddRange(BaudRates)
        ComboBox_BAUD.SelectedIndex = 4
       
        Try
            GetSerialPortNames()
            ComboBox_COM.SelectedIndex = 0
        Catch
            MsgBox("No ports connected.")
        End Try
    End Sub

    Private Sub Button_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Connect.Click
        Try
            sp.BaudRate = ComboBox_BAUD.SelectedItem.ToString
            sp.PortName = ComboBox_COM.SelectedItem.ToString
            sp.Open()
            If sp.IsOpen Then
                Button_Connect.Enabled = False
                ComboBox_COM.Enabled = False
                ComboBox_BAUD.Enabled = False
                Button_Disconnect.Enabled = True
            End If
        Catch
            sp.Close()
        End Try
    End Sub

    Private Sub Button_Disconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Disconnect.Click
        Try
            sp.Close()
            Button_Connect.Enabled = True
            Button_Disconnect.Enabled = False
            ComboBox_COM.Enabled = True
            ComboBox_BAUD.Enabled = True
            Exit Sub
        Catch
            MessageBox.Show("Some kind of problem.")
        End Try
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If sp.IsOpen() Then
            MessageBox.Show("Disconnect before closing")
            e.Cancel = True
        End If
    End Sub
    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

  
    Private Sub Button_Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Send.Click
        Dim data As String
        data = TextBox_DataSend.Text
        If sp.IsOpen() Then
            'sp.WriteLine(data)
            sp.Write(TextBox_DataSend.Text)
            TextBox_DataSend.Text = ""
        End If
    End Sub
End Class




2. Arduino code
Berikut untuk arduino codenya, silahkan di upload ke arduino (butuh LM35) atau via simulasi ISIS Proteus..

float temp;
int dataPin = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  temp = analogRead(dataPin);
  temp = temp * 0.48828125; //(SUPPLY_VOLTAGE x 1000 / 1024) / 10
  Serial.print(temp);
  Serial.println();
  delay(1000);
}


3. Running program
Setelah semuanya beres, mari kita jalankan aplikasi monitoringnya. Karena untuk arduinonya saya menggunakan simulasi, maka diperlukan konektor (virtual serial port)yang akan digunakan untuk menghubungkan Proteus ISIS dengan Aplikasi monitoring. Pilih COM port yang digunakan (virtual dan proteus), disini saya memakai COM 2. kemudian pilih tombol connect. Setelah terhubung, jalankan simulasi arduino yang ada di Proteus ISIS.
Hasilnya kurang lebih seperti ini :


Baca selengkapnya

Monday, 25 August 2014

Simulasi Arduino dengan Proteus ISIS

Walau agak ketinggalan semoga informasi ini sangat membantu. Ok langsung aja, Proteus ISIS merupakan aplikasi simulasi yang sudah sangat tenar di dunia elektronika (menurut saya). Aplikasi ini sngat membantu dalam proses eksperiment yang setidaknya dapat meminimalisir kerusakan hardware dan ribetnya proses ujicoba. Dengan adanya revolusi board AVR yang telah membuat mikrokontroller jenis ini dikenal dimana-mana (arduino -red) maka disediakan pula library board Arduino untuk simulasi di Proteus ISIS. Untuk Versi proteus berapa saja  yang dapat menambahkan library ini saya kurang begitu tahu. Namun untuk proteus yang saya gunakan adalah versi 7.8 SP2


Menambahkan Library Arduino ke Proteus ISIS:
  1. Silahkan download file librarynya di (dropbox) atau (google drive)
  2. copy-kan ARDUINO.LIB dan ARDUINO.IDX ke folder 'library' di direktori instal Proteus ISIS.
  3. selesai.. library sudah ter install

Mendesain Skema di Proteus ISIS:
  • Pilih component mode kemudian pilih pick
  • untuk mencari coba ketikkan "ARDUINO"
  • untuk percobaan silahkan hubungkan pin 13 dengan ground (percobaan blink)


Menulis program Arduino
  • Jalankan Arduino IDE
  • Buka sample program yang memanfaankan pin 13 , misal blink (File => examples => basics => blink)
  • Setting Arduino IDE agar file hasil compile nya (.hex) terlihat  (file => preferences => cheklist pada compilation)
  • kembali ke program dan klik tombol verify.
  • sekarang dapat diketahui letak hasil  compilenya (.hex)

Melakukan Simulasi di Proteus ISIS
  • Masukkan file hasil compile tadi ke arduino proteus (double klik arduinonya kemudian isikan letak file hex nya)
  • pilih OK dan jalankan simulasinya. (led akan blink sesuai dengan program)

Baca selengkapnya

Sunday, 3 February 2013

16x2 LCD BASIC MODUL

Modul LCD 16x2  merupakan suatu display yang digunakan untuk menapilkan suatu karakter yang diberikan oleh sistem, dalam hal ini sistem yang meberikan informasi adalah mikrokontroler.  Untuk berkomunikasi dengan mikrokontroler, LCD berdasarkan panjang datanya mempunyai dua buah metode antarmuka, yaitu antarmuka 4 bit dan antarmuka 8 bit. 

Pada metode antarmuka 8 bit, data yang ditulis atau dibaca oleh mikrokontroler ke/dari LCD dilakukan dalam sekali proses.  Sedangkan untuk metode antarmuka 4 bit, penulisan atau pembacaan dilakukan sebanyak dua kali untuk 8 bit data.  Antarmuka LCD 4 bit diatur pada mode penulisan data, dengan menghubungkan kaki R/W ke GND. Dengan metode 4 bit, penggunaan port I/O pada miktokontroller dapat dikurangi sehingga port dapat digunakan untuk proses I/O yang lain.









Dalam rangkaian ini, terdapat trimpot (trimmer potensiometer) dengan nilai sebesar 10KΩ.  Fungsi dari trimpot tersebut digunakan untuk mengatur contrast dari karakter yang ditampilkan pada LCD.  Jangan lupa untuk memperhatikan konfigurasi pin I/O dari LCD di program yang akan dibuat.

Untuk file eaglenya dapat diunduh (Google drive)

Semoga Bermanfaat.
Baca selengkapnya

Friday, 1 February 2013

Real Time Clock DS1307 Application


Real Time Clock merupakan suatu chip (IC) yang memiliki fungsi sebagai penyimpan waktu dan tanggal. DS 1307 merupakan real-time clock (RTC) menggunakan jalur data parallel yang dapat menyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100. Secara otomatis bulan dan tanggal akandisesuaikan untuk bulan yang kurang dari 31 hari termasuk untuk tahun yang akan datang. Operasi jam baik 24 jam atau 12 jam dengan format indikator AM/PM. DS1307 memiliki built-in powersense circuit dapat mendeteksi kegagalan daya (power filure), dan secara otomatis berpindah ke suplai cadangan.

Komunikasi dengan RTC DS1307 adalah serial dengan 1 kabel (I2C), dimulai ketika terjadi perubahan kondisi SDA “1” ke “0” dengan kondisi SCL “1” dan berakhir saat kondisi SDA berubah dari “0” ke “1” dengan SCL “1”. Kemudian untuk menuliskan perintah dengan mengirimkan data “11010000”, sedangkan perintah untuk membaca memori adalah “11010001”.

Dalam penggunaannya DS1307 harus menggunakan beberapa komponen tambahan (yang biasanya dipaket dalam bentuk modul) seperti resistor sebagai pull up pada jalur SDA dan SCL, kristal, dan batterai 3V.Untuk modul DS1307 mungkin akan saya posting(bila sempat, hehehe)

Salah satu aplikasi dari DS1307 ialah sebagai jam digital dengan menggabungkannya ke sistem mikrokontroler. berikut merupakan simulasi dari penggunaan DS1307 pada jam digital:



Bagian program yang utama dari sistem ini ialah pada pengaturan komunikasi antara mikrokontroler dengan DS1307 yang digunakan untuk membaca dan menulis data dari/ke mikrokontroler atau DS1307.


Dim Weekday As Byte
Getdatetime:
   I2cstart
   I2cwbyte Ds1307w
   I2cwbyte 0
   I2cstart
   I2cwbyte Ds1307r
   I2crbyte _sec , Ack
   I2crbyte _min , Ack
   I2crbyte _hour , Ack
   I2crbyte Weekday , Ack
   I2crbyte _day , Ack
   I2crbyte _month , Ack
   I2crbyte _year , Nack
   I2cstop
   _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
   _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
   Return

Setdate:
   _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
   I2cstart
   I2cwbyte Ds1307w
   I2cwbyte 4

   I2cwbyte _day
   I2cwbyte _month
   I2cwbyte _year
   I2cstop
  Return

Settime:
   _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
   I2cstart
   I2cwbyte Ds1307w
   I2cwbyte 0

   I2cwbyte _sec
   I2cwbyte _min
   I2cwbyte _hour
   I2cstop
  Return


Sub program Getdatetime digunakan untuk membaca data berupa detik, menit, jam , hari, tanggal, bulan, dan tahun. sementara itu, untuk sub program setdate digunakan untuk menulis data tanggal, bulan ,tahun dengan alamat datanya adalah 4 dan sub program settime digunakan untuk menulis detik, menit, dan jam dengan alamat datanya adalah 0.

Untuk selengkapnya (simulasi) dapat dilihat pada file ini. semoga bermanfaat.

Baca selengkapnya

Friday, 18 January 2013

PISAH DATA PADA VISUAL BASIC 6

Dalam penggunaan VB6 sebagai aplikasi untuk membuat software interface terkadang memerlukan pisah/pecah data. Hal ini dikarenakan data yang dikirim oleh mikrokontroler dilakukan secara serial, yang dimana data tersebut dikirim secara bersamaan.

Ok, langsung saja.., sebagai contoh kita akan memecah data menjadi 3 bagian (3 data)
Buka VB6, siapkan dua buah textbox dan sebuah button


Copy text2 dan kemudian paste
Apabila muncul dialog box(membuat control array) maka pilih yes. Dengan begitu maka akan memiliki nama yang sama tetapi indexnya berbeda.



Masukkan listing berikut pada button

Private Sub Command1_Click()
Dim pisah() As String
Dim i As Byte

On Error GoTo salah
      
    pisah = Split(Text1.Text, "*")
    For i = 0 To 3
        If i < 4 Then
            Text2(i).Text = CStr(pisah(i))
            End If
            Next i

    Exit Sub
salah:
    Exit Sub
End Sub

Maksud dari

pisah = Split(Text1.Text, "*")

adalah karakter * digunakan sebagai pembatas dari data yang akan dipecah
dengan kata lain format data yang masuk ke text1 adalah
              
data*data*data

Jalankan program dan masukkan data ke text1 setelah itu klik button.



ok... itu aja, semoga bermanfaat..


Baca selengkapnya

Saturday, 27 October 2012

Sistem minimum AVR 40 pin (ATmega 8535/16/32)

Seperti postingan pada sistem minimum AVR 28 pin, kali ini saya akan sharing tentang sistem minimum mikrokontroler AVR yang memiliki 40 pin seperti ATmega 8535, ATmega16 dan ATmega32. Secara umum sistem minimum ini memiliki bagian-bagian yang sama dengan sistem minimum AVR 28 pin, yang dimana terdiri atas regulator, rangkaian reset, dan clock. 





untuk file eagle nya dapat di download pada link berikut,

(Google Drive) atau (Mediafire)


Baca selengkapnya

Thursday, 25 October 2012

Seven segment counter up/down dengan mikrokontroler avr


Seven segment adalah penampil yang terdiri atas 7 bagian segment yang digunakan untuk menampilkan angka atau beberapa huruf.  Secara umum device ini digunakan untuk menampilkan suatu angka atau huruf yang didapat dari proses pengaturan/pemberian masukan digital pada pin-pinnya. Kali ini saya akan sharing mengenai salah satu aplikasi dari seven segment display yaitu counter Up/Down yang memungkinkan untuk proses increment dan decrement dari suatu nilai.

Seven segment yang digunakan ialah berjenis CA (Common Anoda) dengan penggeraknya (driver) menggunakan IC decoder BCD to 7segment  yaitu IC 74ls47.  Dengan menggunakan IC ini maka kita hanya perlu memberikan masukan biner 4 digit yang kemudian akan dikonversi ke tampilan seven segment.




Source Code (Bascom AVR):


$regfile = "m16def.dat"
$crystal = 12000000

Config Portc = Output
Config Porta = Output
Config Pind.6 = Input
Config Pind.7 = Input

Dim C As Integer
Dim A As Integer

Tambah Alias Pind.6
Kurang Alias Pind.7
Set Tambah
Set Kurang

Portc = 1
Porta = 1

C = 0
A = 0

Do
Portc = C
Porta = A

If Tambah = 0 Then
Bitwait Tambah , Set

Incr C
   If C = 10 Then
   C = 0
   Incr A
      If A = 10 Then
      A = 0
      End If
   End If
End If

If Kurang = 0 Then
Bitwait Kurang , Set

   If C = 0 Then
   C = 10
    Decr C
    If A = 0 Then
    A = 10
    Decr A
    Else
    Decr A
    End If

   Else
   Decr C
   End If
End If

Waitms 200
Loop



Untuk simulasinya (Proteus) dapat di unduh pada link berikut:
Google Drive || Mediafire 



Baca selengkapnya

Thursday, 18 October 2012

Komunikasi serial Proteus - Visual Basic

Visual basic adalah aplikasi yang salah satu kegunaanya digunakan untuk membuat program interface. Program interface yang dibuat dapat berupa progra monitoring ataupun program controlling. agar dapat digunakan untuk mengolah data dari proteus, maka digunakan aplikasi tambahan yaitu VSPE (Virtual Serial Port Emulator).VSPE berfungsi sebagai port serial yang dimana port tersebut dibangun secara virtual.

1. Download VSPE (Virtual Serial Port Emulator).
2. Pengaturan VSPE:
     -  Buat perangkat baru. Klik  icon create new device atau pilih device => create

   

      - Pilih Device Type = connector kemudian klik next.


     - Pilih port yang akan di virtualisasi kemudian klik finish.


     - VSPE sudah bisa digunakan.....


2. Buat simulasi di proteus. untuk mengirim/menerima  data serial maka digunakanlah componen COMPIM.  Port RX mikrokontroler dihubungkan ke pin RX COMPIM. Port TX mikrokontroler dihubungkan ke pin TX COMPIM.



3. Atur COMPIM nya sesuai dengan port serial yang telah dibuat dengan VSPE.


4. Selesai sudah.... sekarang rangkaian simulasi proteus anda telah dapat berkomunikasi dengan aplikasi  serial (hyperterminal / VB)

Sebagai contoh percobaan, saya menyediakan file-file berikut... semoga bermanfaat..


Baca selengkapnya

Monday, 15 October 2012

Sistem minimum AVR 28 pin

Sistem minimum adalah sistem paling sederhana untuk mendukung kinerja dari mikrokontroler. Sistem ini terdiri dari regulator, rangkaian reset, dan clock. Komponen utama rangkaian regulator adalah IC regulator 7805 yang digunakan untuk mengkonversi tegangan ke 5V. Untuk rangkaian reset digunakan beberapa komponen yaitu resistor 4k7, kapasitor 100nF, dan push button. rangkaian ini digunakan untuk me reset sistem kerja dari mikrokontroler. sementara untuk rangkaian clock digunakanlah kristall dan kapasitor 22pF. 
berikut salah satu contoh sistem minimum untuk mikrokontroler AVR 28 pin





sistem minimum ini dapat digunakan untuk beberapa mikrokontroler AVR 28 pin seperti ATmega 8, ATmega 48, ATmega 88, ATmega 168, ATmega 328.

Baca selengkapnya