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..
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 :