สอน Visual C# บทที่ 1 ESP32 สั่ง เปิด-ปิด LED

Narin Damnuy (KruRin)
4 min readNov 2, 2022

--

✍️ 🎚💡เริ่มต้นจะต้องทำการดาวน์โหลดโปรแกรม Visual Studio ที่ลิ้งค์ด้านล่าง หรือกด ที่นี่

http://download.microsoft.com/download/8/4/3/843ec655-1b67-46c3-a7a4-10a1159cfa84/vs2015.3.ent_enu.iso

หรือติดตั้งแบบออนไลน์ ที่ลิ้งค์ด้านล่าง หรือกด ที่นี่

https://aka.ms/vs/14/release/2015_Update3
  1. ทำการติดตั้งโปรแกรม Visual Studio

2..กด New Projects เพื่อสร้างโปรเจคใหม่

2.เลือก Visual C# > Windows Forms Application เสร็จแล้ว ตั้งชื่อโปรเจค จากนั้นกด OK

3.การพัฒนาจะใช้ 3 ส่วนหลักๆ คือ ส่วนที่ 1 Toolbox คือส่วนของเครื่องมือต่างๆ ส่วนที่ 2 Form คือส่วนที่นำเครื่องมือต่างๆมาประกอบกันเพื่อสร้างเป็นโปรแกรม และส่วนที่ 3 Properties คือส่วนที่ใช้กำหนดคุณสมบัติต่างๆของ Form และเครื่องมือต่างๆ

4.เริ่มต้นด้วยการสร้างการเชื่อมต่อ Serial Port ก่อน ใช้เครื่องมือดังภาพด้านล่าง

5.ให้ตั้งชื่อ Control โดยคลิกเลือก Control ที่จะตั้งค่า แล้วไปที่ Properties> (Name) ป้อนชื่อตามข้อความสีแดงด้านบน

6.ตั้งค่าเริ่มต้นให้ปุ่ม Close, ON และ OFF เป็น disable โดยตั้งค่าที่ Properties> Enabled ตั้งค่าเป็น False ดังภาพ

7.ตั้งค่า cbbPort ให้สามารถเลือกรายการได้อย่างเดียว โดยไปที่ control cbbPort แล้วไปที่ Properties DropDownStyle แล้วเลือก DropDownList

8. ต่อไปเพิ่ม Control SerialPort เพื่อใช้ในการสื่อสารกับบอร์ด Arduino

9. เพิ่มคำสั่งนำเข้าไลบรารี่ Serial Port โดยใช้คำสั่งดังนี้

using System.IO.Ports;

10. ตั้งค่าตรวจสอบ Port ที่เชื่อมต่อเมื่อเริ่มต้นเปิดโปรแกรม ไปที่ฟังก์ชั่น Form load โดยการดับเบิ้ลคลิก พื้นที่ว่างบนฟอร์ม

11.เพิ่มคำสั่งตรวจสอบ Port ที่เชื่อมต่อ แล้วแสดงผลที่ ComboBox(cbbPort) และตั้งค่าเลือกตัวเลือกแรกที่ตรวจพบ

try {
cbbPort.Items.AddRange(SerialPort.GetPortNames());
cbbPort.SelectedIndex = 0;
}
catch {}
}

12.ต่อไปตั้งค่า control cbbPort เวลากดเลือก Port ให้ทำการตรวจสอบ Port ทั้งหมดที่เชื่อมต่ออยู่อีกครั้ง โดยไปที่ control cbbPort แล้วกดปุ่ม สายฟ้า เลือก Action แล้วดับเบิ้ลคลิก MouseClick

13.เพิ่มคำสั่งอ่านค่า Port ในฟังก์ชั่น cbbPort_MouseClick

cbbPort.Items.Clear();
try {
cbbPort.Items.AddRange(SerialPort.GetPortNames());
cbbPort.SelectedIndex = 0;
}
catch {}

14. ต่อไปเพิ่มคำสั่ง ปุ่ม Open โดยทำการ ดับเบิ้ลคลิกที่ปุ่ม Open

15. เพิ่มคำสั่ง เชื่อมต่อ Serial Port และ เปิดการทำงานปุ่ม Close, ON, OFF โดย คำสั่ง serialPort1.PortName จะรับค่า Port ที่ตัวเลือกจาก ComboBox และ คำสั่ง serialPort1.BaudRate จะกำหนดความเร็วในการสื่อสาร โดยกำหนดไว้ที่ 9600 bps

try
{
serialPort1.PortName = cbbPort.Text;
serialPort1.BaudRate = 9600;
serialPort1.Open();
btnOpen.Enabled = false;
btnClose.Enabled = true;
btnOn.Enabled = true;
btnOff.Enabled = true;
}
catch { }

ทดสอบรันโปรแกรม

16. เพิ่มคำสั่ง ปิด Port ให้กับปุ่ม Close และ เปิดการทำงานปุ่ม Open

try
{
serialPort1.Close();
btnOpen.Enabled = true;
btnClose.Enabled = false;
btnOn.Enabled = false;
btnOff.Enabled = false;
}
catch { }

ทดสอบรันโปรแกรม

16. ต่อไปทำการส่งคำสั่ง ให้ LED ติด บนบอร์ด ESP32 โดยดับเบิ้ลคลิกปุ่ม ON

17. เพิ่มคำสั่ง serialPort1.Write(“H”); ซึ่งเป็นคำสั่งส่งค่า H ไปยัง ESP32

try
{
serialPort1.Write("H");
}
catch { }

18. และปุ่ม OFF ให้ส่งค่า L ไปครับ

try
{
serialPort1.Write("L");
}
catch { }

19. เสร็จขั้นตอนการส่งคำสั่งไปยัง ESP32 ต่อไปให้เพิ่มคำสั่ง ปิดการเชื่อมต่อ Serial เมื่อผู้ใช้ปิดฟอร์ม โดยคลิกตรงที่ว่างในฟอร์ม กดปุ่มสายฟ้า แล้วดับเบิ้ลคลิกที่ FormClosing

20.เพิ่มคำสั่งปิดฟอร์ม และปิดโปรแกรม

serialPort1.Close();
Application.Exit();

21.เสร็จขั้นตอนการพัฒนาโปรแกรมบน Visual C#

ต่อไปเป็นการเขียนโค้ดบน ESP32 เพื่อรับคำสั่งจาก Visual C# ดังนี้

โดยจะควบคุม LED สีเขียว ซึ่งต่ออยู่ที่ขา 12

#define LED 12
char income;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
income = Serial.read();
if(income == 'H')
digitalWrite(LED,HIGH);
if(income == 'L')
digitalWrite(LED,LOW);
}

22.ทำการ Upload โค้ดลงบอร์ด ESP32

23.ทดสอบโปรแกรม

บทความนี้ดัดแปลงจากบทความของ ครูประภาส สุวรรณเพชร
https://www.praphas.com/forum/index.php?topic=375.0

ขอบคุณที่รับชมครับผม

สนันสนุน KruRin ในการเขียนบทความ เลี้ยงกาแฟซักแก้วครับ กดที่นี่

สนใจบอร์ด IoT Education Kit V1.1

สั่งซื้อใน Shopee ที่ลิ้งค์ด้านล่างได้เลยครับผม

https://shopee.co.th/narindamnuy

หรือ กด ที่นี่

บทต่อไป กดลิ้งค์ด้านล่างเลยครับ

สอน IoT ด้วยบอร์ด ESP32

42 stories

--

--

Narin Damnuy (KruRin)

Teacher in Computer Technology Department at Phatthalung Technical College