เขียนโปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic

ตัวอย่างง่ายๆซึ่งจะใช้ช่องทางติดต่อการสื่อสารผ่านพอร์ทอนุกรม (Series Port) จากคอมพิวเตอร์ไปที่ Arduino UNO R3 เพื่อทำการควบคุมการทำงาน เปิด/ปิด หลอดไฟ LED ที่เชื่อมต่อกับขา 13 ซึ่งมาพร้อมกับบอร์ดอยู่แล้ว โดยใช้ Visual Studio 2015 เขียนโปรแกรมด้วยภาษา Visual Basic ทำ GUI (graphical user interface) ซึ่งเป็นการติดต่อกับผู้ใช้โดยใช้ภาพสัญลักษณ์ (Window Application) และสามารถนำไปติดตั้งในคอมพิวเตอร์ ระบบปฏิบัติการ Windows เครื่องอื่นๆได้

เขียนโปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic

หลักการทำงานของการติดต่อนี้ จะเป็นการติดต่อด้วย สตริง (String) หรือ Character sequence เป็นประเภทข้อมูลแบบข้อความที่ประกอบไปด้วยหลายตัวอักษร เป็นการส่งข้อมูลเป็นแบบข้อความ โดยสื่อสารผ่านพอร์ทอนุกรม (Series Port) ระหว่าง Window Application กับ Arduino UNO R3

อุปกรณ์ที่ใช้


ขั้นตอนการทํางาน

1 : โปรแกรมแรก กับ Arduino UNO R3


โดยศึกษา ขั้นตอนการทำงาน จากลิงค์บทความ ด้านล่าง


2 : อัพโหลดโค้ดให้บอร์ด Arduino


การทำงานของโค้ดนี้คือ รอรับคำสั่งจาก Window Application ภาษา Visual Basic โดย ถ้ารับค่า เป็น on ให้ LED ติด และ ถ้ารับค่ามาเป็น off ให้ LED ดับ

เปิดโปรแกรม Arduino IDE เขียนโปรแกรม หรือ Sketch และอัพโหลดโค้ด ด้วยโค้ดด้านล่างนี้

 
 void setup() {
   Serial.begin(9600);
   pinMode(13, OUTPUT);
  
 }
  
 void loop() {
   String readString;
   String Q;
  
   while (Serial.available()) {
     delay(1);
     if (Serial.available() > 0) {
       char c = Serial.read();
       if (isControl(c)) {
         break;
       }
       readString += c;
     }
  
     Q = readString;
  
     if (Q == "on") {
       digitalWrite(13, HIGH);
     }
  
     if (Q == "off") {
       digitalWrite(13, LOW);
     }
  
   }
 } 

เขียนโปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic

เปิดหน้าต่าง Serial Monitor  โดยไปที่ Tools -> Serial Monitor



ที่มุมขวาล่าง ของ Serial Monitor เลือกเป็น 9600 baud  คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล  คือ 9600 ตามที่เราเขียนโค้ดไว้ และ ด้านซ้ายหน้า 9600 baud  ให้เลือกเป็น No line ending


พิมพ์ on แล้วคลิก Send ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ติด”



และพิมพ์ off แล้วคลิก Send ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ดับ” แสดงว่า โปรแกรมเปิดปิดไฟ LED ของ Arduino สําเร็จแล้ว

เขียนโปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic


3 : โปรแกรมแรก VB.NET กับ Visual Studio 2015


โดยศึกษา ขั้นตอนการทำงาน จากลิงค์บทความ ด้านล่าง


4 : สร้าง Window Application เพื่อ ควบคุม Arduino


เปิดโปรแกรม Visual Studio 2015


สร้างโปรเจคสำหรับเขียนโค้ดภาษา Visual Basic ในตัวอย่างชื่อ LED_VB ไปที่ Common Controls ลาก ComboBox จาก Toolbox ไปยัง Form1


และ ลาก Button จาก Toolbox ไปยัง Form1


เปลี่ยนข้อความที่แสดง button1 โดยไปที่ Text เปลี่ยนเป็น ON


ลาก Button จาก Toolbox ไปยัง Form1 และ เปลี่ยนข้อความที่แสดง button2 โดยไปที่ Text เปลี่ยนเป็น OFF


เปลี่ยนขนาดของ Form1 โดยคลิกที่ Form1 แล้วไปที่ Size แก้เป็น 300,200


ไปที่ Components ลาก SerialPort จาก Toolbox ไปวางบริเวณ Form1 แล้ว serialPort1 จะเพิ่มเข้ามาที่ด้านล่างของ Form1 โดยอัตโนมัติ


เลือกไปที่ Pointer และ ดับเบิ้ล คลิกที่ บริเวณ Form1


จะมีแท็ป Form1.cs เพิ่มเข้ามา ซึ่งส่วนนี้มีไว้สำหรับเขียนโค้ด เช่น เหตุการณ์ Form1_Load


ที่ส่วนบนสุดของโค้ด ประกาศตัวแปร MyPorts ด้วยโค้ดด้านล่าง

Dim MyPorts As Array



 ที่ เหตุการณ์ Form1_Load เขียนโค้ดดังนี้

 
     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
         Try
             MyPorts = IO.Ports.SerialPort.GetPortNames
             ComboBox1.Items.AddRange(MyPorts)
             ComboBox1.SelectedItem = ComboBox1.Items(0)
  
             SerialPort1.BaudRate = (9600)
             SerialPort1.ReadTimeout = (2000)
             SerialPort1.WriteTimeout = (2000)
         Catch ex As Exception
  
         End Try
  
     End Sub 


คลิก Save All


ทดสอบการทำงานโดย ไปที่ Debug -> Start Debugging


เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปยังบอร์ด Arduino UNO R3 (ที่โหลดโค้ดตามขั้นตอนที่ 2 เรียบร้อยแล้ว)

ตรวจสอบที่ Ports (COM & LPT) จะพบ Arduino Uno ในตัวอย่างเป็น (COM3) โดย (แต่ละเครื่องอาจจะไม่เหมือนกัน)

ไปที่ Ports (COM & LPT) จะพบ Arduino Uno

ที่ comboBox1 จะแสดงข้อความ COM3 แสดงว่า Window Application ที่เราเขียนอยู่ ติดต่อสื่อสารกับ บอร์ด Arduino UNO R3 ได้แล้ว


หยุดทดสอบการทำงาน โดย คลิก Stop Debugging


กลับไปที่ Form1.cs [Design] ดับเบิ้ล คลิก ที่ button1 (แสดงข้อความเป็น ON)


เขียนโค้ดที่ button1_Click ดังนี้


     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
         SerialPort1.Open()
         SerialPort1.WriteLine("on")
         SerialPort1.Close()
     End Sub 



กลับไปที่ Form1.cs [Design] ดับเบิ้ล คลิก ที่ button2 (แสดงข้อความเป็น OFF) เขียนโค้ดที่ button2_Click ดังนี้

 
     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
         SerialPort1.Open()
         SerialPort1.WriteLine("off")
         SerialPort1.Close()
     End Sub 



กลับไปที่ Form1.cs [Design] ดับเบิ้ล คลิก ที่ ComboBox1


เขียนโค้ดที่ ComboBox1_SelectedIndexChanged ดังนี้

 
 Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles    ComboBox1.SelectedIndexChanged
         Try
             SerialPort1.PortName = ComboBox1.Text
         Catch ex As Exception
  
         End Try
     End Sub 


คลิก Save All


ทดสอบการทำงานโดย ไปที่ Debug -> Start Debugging


คลิกที่ button1 (ON) ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ติด”


คลิกที่ button2 (OFF) ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ดับ” แสดงว่า โปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic สําเร็จแล้ว