Digital Output Remote I/O dengan Arduino dan VB.net
Pendahuluan
Arduino uno dapat digunakan sebagai modul remote I/O sederhana. untuk menghubungkan arduino dengan komputer secara ethernet harus digunakan arduino ethernet shield. Dalam proggress ini akan dibuat digital output pada arduino dan dihubungkan dengan VB.net. Dari VB.net kita dapat mengaktifkan digital output yang ada pada arduino, layaknya modul remote I/O yang ada. Tampilan diVB.net
Gambar di bawah ini merupakan form yang telah dibuat untuk mengaktifkan digital output pada arduino. Pin output yang dipakai yaitu pin 8, pin 7, dan pin 6. Untuk mengaktifkan pin output tersebut kita dapat menekan tombol on dan warna penanda akan berubah menjadi hijau.
Source Code VB.net Imports System.Net.Sockets System.Net.Sockets Imports System.Text Imports System.Text Public Class Form1 Dim tcpClient Dim tcpClient As New System.Net.Sockets.TcpCl System.Net.Sockets.TcpClient() ient() Dim networkStream networkStream As As NetworkStream NetworkStream Dim KeyPressed Dim KeyPressed As Integer
Private Function Arduino_Connect(ByVal IP As String, ByVal Port As Integer) As Boolean tcpClient.Connect(IP, Port) networkStream = tcpClient.GetStream() If Not networkStream.CanWrite Or Not networkStream.CanRead Then tcpClient.Close() networkStream = Nothing Return False End If Return True End Function Private Sub Arduino_Write(ByVal Output As String) If Not IsNothing(networkStream) Then Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(Output) Dim endByte As [Byte]() = {&HFE} networkStream.Write(sendBytes, 0, sendBytes.Length) networkStream.Write(endByte, 0, 1) Else MsgBox("ERROR") End If End Sub
Private Sub Arduino_Disconnect() If Not IsNothing(networkStream) Then tcpClient.Close() networkStream = Nothing End If End Sub Private Sub btnOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOn.Click picOff.Visible = False picOn.Visible = True Arduino_Write("O") End Sub Private Sub btnOff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff.CLick picOff.Visible = True picOn.Visible = False Arduino_Write("F") End Sub Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Arduino_Connect("192.168.1.8", 12) picOff.Visible = True picOn.Visible = False picOff1.Visible = True picOn1.Visible = False picOff2.Visible = True picOn2.Visible = False End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click picOff1.Visible = False picOn1.Visible = True Arduino_Write("A")
End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click picOff1.Visible = True picOn1.Visible = False Arduino_Write("B") End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click picOff2.Visible = False picOn2.Visible = True Arduino_Write("C") End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click picOff2.Visible = True picOn2.Visible = False Arduino_Write("D") End Sub End Class
Source Code Arduino
Berikut adalah source code di arduino. #include #include byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xD1, 0x4B }; unsigned char local_ip[] = {192,168,1,8}; // IP address WiShield unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask untuk local network
EthernetServer server(12); //char buffer[20]; String buffer = ""; void setup() { //inisialisasi pin mana yang akan dipakai pinMode(8,OUTPUT);
pinMode(7,OUTPUT); pinMode(6,OUTPUT);
Ethernet.begin(mac, local_ip); Serial.begin(9600); } void loop() { EthernetClient client = server.available(); //Mengecek apakah client dan server terhubung if (client) { boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.print(c); buffer+=c; int val; if (c == 'O') //inisialisasi pembacaan client ‘O’ yang nantinya akan dipakai di vb.net { digitalWrite(8,HIGH);} else if (c == 'F') {digitalWrite(8,LOW);} if (c == 'A') {digitalWrite(7,HIGH);} else if (c == 'B') {digitalWrite(7,LOW);} if (c == 'C') {digitalWrite(6,HIGH);}
else if (c == 'D') {digitalWrite(6,LOW);} } } } }