top of page
สนธยา นงนุช

รู้จักและใช้งาน PlatformIO เบื้องต้น


Arduino IDE เป็นโปรแกรมพัฒนาเฟิร์มแวร์สำหรับไมโครคอนโทรลเลอร์สำหรับบอร์ด Arduino ปัจจุบันผู้พัฒนา Arduino IDE เปิดโอกาศให้ติดตั้งบอร์ดเพิ่มเพื่อรองรับบอร์ดไมโครคอนโทรลเลอร์ยี่ห้ออื่น ๆ ด้วย แม้ Arduino IDE จะถูกพัฒนานานมาหลายปี หลายเวอร์ชั่น แต่ก็ยังมีข้อเสียสำคัญคือไม่มีระบบ IntelliSense หรือตัวช่วยแนะนำโค้ดโปรแกรม ต่างจาก PlatformIO ที่เป็นส่วนเสริมบน VS Code มีระบบเลือกธีมในหน้าต่างแก้โค้ดโปรแกรม มีระบบ IntelliSense ช่วยแนะนำและเติมโค้ดโปรแกรม รองรับการเขียมโปรแกรมสั่งงานไมโครคอนโทรลเลอร์ในหลายแพลตฟอร์ม ทั้ง ESP32, ESP8266, STM32, AVR และอื่น ๆ ทั้งรูปแบบ Arduino และ SDK ของผู้ผลิตไมโครคอนโทลเลอร์เอง สะดวกกว่าการใช้เครื่องมือจากผู้ผลิตไมโครคอนโทรลเลอร์ โดยเรียนรู้ PlatformIO เพียงครั้งเดียว ก็สามารถเขียนโปรแกรมสั่งงานไมโครคอนโทรลเลอร์ได้หลากหลายตะกูล

ในบทความนี้จะแนะนำการใช้ PlatformIO ร่วมกับ VS Code เขียนโปรแกรมสั่งงาน ESP32 เบื้องต้น การสร้างโปรเจค การใช้งาน Serial Monitor และการตั้งค่าโปรเจคเบื้องต้น

การติดตั้ง VS Code

VS Code หรือ Visual Studio Code เป็น Text Editor ที่รองรับการติดตั้งส่วนเสริม (Extension) โดยรองรับ PlatformIO ที่เป็นตัวช่วยทำให้ VS Code คอมไพล์โค้ดโปรแกรมและอัพโหลดโค้ดโปรแกรมได้

ขั้นตอนการติดตั้ง VS Code มีดังนี้

1) ดาวน์โหลด VS Code จาก https://code.visualstudio.com/Download

2) รอจนกว่าจะดาวน์โหลดเสร็จ เมื่อดาวน์โหลดเสร็จให้กดเปิดไฟล์ติดตั้งขึ้นมา

3) ในหน้าต่างติดตั้งโปรแกรมหน้าแรก กด I accept เพื่อยืนยันยอมรับเงื่อนไขการใช้งาน จากนั้นกดปุ่ม Next

4) เลือก Option ที่ต้องการเพิ่มเติม (ไม่บังคับ) แล้วกดปุ่ม Next

5) ตัวติดตั้งจะสรุปแผนการดำเนินการติดตั้งทั้งหมดมาให้ กดปุ่ม Install เพื่อติดตั้งโปรแกรมทันที

6) รอจนกว่าจะติดตั้งเสร็จเรียบร้อย

7) กดเลือก Launch เพื่อให้เปิดโปรแกรมทันที แล้วกด Finish

8) หน้าตาของโปรแกรม VS Code แสดงดังรูป

การติดตั้ง PlatformIO

VS Code เป็น Text Editor ไม่สามารถคอมไพล์โค้ดโปรแกรม หรืออัพโหลดโปรแกรมได้ ต้องติดตั้งส่วนเสริม PlatformIO เพื่อแปลง VS Code เป็น IDE ให้สามารถคอมไพล์และอัพโหลดโปรแกรมรวมถึงดีบัคโค้ดได้

ขั้นตอนการติดตั้ง PlatformIO มีดังนี้

1) เมนู Extension ค้นหา PlatformIO แล้วกด Install

2) รอดาวน์โหลดและติดตั้ง

3) ติดตั้งเสร็จจะแสดงข้อความ Uninstall (ดังรูป)

4) ปิดโปรแกรม VS Code แล้วเปิดใหม่ สังเกตแถบด้านล่างจะบอกสถานะการโหลดข้อมูล PlatformIO

5) เมื่อโหลดข้อมูลเสร็จ จะมี Logo ของ PlatformIO แสดงขึ้นมาบนแถบด้านซ้าย (ดังรูป)

ตัวอย่างการเขียนโปรแกรมไฟกระพริบบนบอร์ด ESP32

เริ่มต้นด้วยการสร้างโปรเจคใหม่ ตามขั้นตอนดังนี้

1) กดที่ไอค่อน PlatformIO จากนั้นกด Open รอโหลดซักครู่ แล้วกดปุ่ม New Project

2) หน้าต่าง Project Wizard จะแสดงขึ้นมา ให้ตั้งชื่อโปรเจคเป็นอะไรก็ได้ (ควรเป็นภาษาอังกฤษ และไม่มีอักษรพิเศษ ไม่มีเว้นวรรค) เลือกบอร์ดเป็นบอร์ดที่ใช้งาน ตัวอย่างใช้บอร์ด ESP32 แต่ไม่มีในรายการ จึงเลือกเป็น ESP32 Dev Module ช่อง Framework มีให้เลือกรูปแบบการเขียนโค้ด สำหรับ ESP32 มีให้เลือกทั้ง ESP-IDF และ Arduino ให้เลือก Arduino จากนั้นกด Finish

3) รอจนกว่าจะสร้างโปรเจคเสร็จ โดยขั้นตอนนี้อาจใช้เวลาหลายนาที เพราะโปรแกรมจะดาวน์โหลด SDK, คอมไพล์เลอร์ มาติดตั้งให้ใหม่ หากยังไม่เคยติดตั้งมาก่อน

4) หากโปรแกรมแสดงหน้าแรก และมีไฟล์ platformio.ini แสดงขึ้นมา เป็นอันจบการสร้างโปรเจค

โครงสร้างของโปรเจคใน PlatformIO แบ่งดังนี้

  • .pio - โฟลเดอร์เก็บไฟล์โค้ดที่คอมไพล์แล้ว

  • .vscode - โฟลเดอร์เก็บไฟล์ตั้งค่าของ VS Code

  • include - โฟลเดอร์เก็บไฟล์ .h โดยอาจจะเป็นไฟล์ใช้คอนฟิก

  • lib - โฟลเดอร์เก็บไฟล์ไลบารี่ ที่ติดตั้งเพิ่ม หรือฝังลงในโปรเจค

  • src - โฟลเดอร์เก็บโค้ดโปรแกรมหลัก

  • test - โฟลเดอร์เก็บไฟล์ทำ Auto Test เพื่อทำ Continuous Integration (CI)

  • platformio.ini - ไฟล์เก็บการตั้งค่าโปรเจค

5) กดที่โฟลเดอร์ src แล้วดับเบิลคลิกเปิดไฟล์ main.cpp ขึ้นมา

6) ใส่โค้ดไฟกระพริบ ดังนี้

#include <Arduino.h>

#define LED_PIN 5

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

ตัวอย่างโค้ด ใช้กับบอร์ด IOXESP32+ ต่อหลอด LED ขา 5 หากใช้บอร์ดอื่น ให้แก้ไขโค้ดโปรแกรม #define LED_PIN ให้เป็นขาที่ต่อกับ LED ของบอร์ดนั้น ๆ

7) กดปุ่มรูปเครื่องหมายถูก ที่มุมด้านล่างซ้าย เพื่อทดสอบคอมไพล์โค้ด (เหมือนปุ่ม Verify ใน Arduino IDE)

8) การคอมไพล์โค้ดโปรแกรมจะเริ่มต้นขึ้น หากมี Error ในโค้ดโปรแกรม ในหน้าต่างด้านล่างจะแสดงข้อความบอก

9) หากคอมไพล์โค้ดโปรแกรมสำเร็จ ไม่มี Error จะมีข้อความ SUCCESS แสดงขึ้นมา (ดังรูป)

10) กดปุ่มลูกศรชี้ขวา เพื่ออัพโหลดโปรแกรม

11) รอจนกว่าจะอัพโหลดโปรแกรมเสร็จสิ้น โดยโปรแกรมจะสแกนหา COM Port อัตโนมัติ หากมีหลาย COM Port แนะนำให้ fix COM port โดยอ่านในหัวข้อ การตั้งค่าโปรเจค

12) หากอัพโหลดโค้ดโปรแกรมสำเร็จ ไม่มี Error จะมีข้อความ SUCCESS แสดงขึ้นมา (ดังรูป)

หลอดแอลอีดีบนบอร์ดก็จะกระพริบแล้ว

การใช้งาน Serial Monitor

เทียบได้กับ Serial Monitor ในโปรแกรม Arduino ใช้ดูข้อความ ตัวเลขที่ส่งขึ้นมาจากบอร์ดไมโครคอนโทรลเลอร์ การใช้งาน Serial Monitor จำเป็นต้องเขียนโปรแกรมใช้คำสั่ง Serial Print ก่อน โดยมีขั้นตอนดังนี้

1) แก้ไขโค้ดโปรแกรมเป็นดังนี้ แล้วอัพโหลดโค้ดโปรแกรมใหม่ลงบอร์ด

#include <Arduino.h>

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

void loop() {
  Serial.println("Hello !!!");
  delay(500);
}

2) กดปุ่มรูปปลั๊กที่ด้านล่างซ้าย

3) Serial Monitor จะเปิดขึ้นมา พร้อมแสดงข้อความที่บอร์ดไมโครคอนโทรลเลอร์ส่งมา (โค้ดโปรแกรมตัวอย่างให้ส่ง Hello !!!)

หน้าต่าง Serial Monitor จะ fix baud rate ไว้ที่ 9600 หากต้องการเปลี่ยน baud rate สามารถอ่านได้ในหัวข้อ การตั้งค่าโปรเจค

การตั้งค่าโปรเจค

ทำได้โดยแก้ไขไฟล์ platformio.ini โดยมีตัวเลือกให้แก้ไขได้ดังนี้

  • upload_speed=<ความเร็ว> - ใช้ตั้งค่าความเร็วในการอัพโหลด โดยแนะนำให้ใช้ 115200 (ต่ำสุด) หรือ 1152000 (สูงสุด)

  • upload_port=<COM Port> - ใช้ fix COM Port ที่ใช้อัพโหลดโปรแกรม

  • monitor_speed=<Baud rate> - ใช้เปลี่ยน Baud rate ของหน้าต่าง Serial Monitor

การตั้งค่าอื่น ๆ ดูได้จากลิ้ง https://docs.platformio.org/en/latest/platforms/espressif32.html

ตัวอย่างตั้งค่าเปลี่ยนความเร็วอัพโหลด เป็นความเร็วสูงสุด และ fix COM port เป็น COM15 ตั้งค่า Serial Monitor ใช้ความเร็วเป็น 115200 แสดงดังนี้

เมื่อกด Save หรือกด Ctrl + S บนคีย์บอร์ด โปรแกรมจะแสดงข้อความอัพเดทค่าคอนฟิกทันที

เมื่อกดอัพโหลดโปรแกรม ความเร็วอัพโหลดจะเปลี่ยนเป็น 1152000 แล้ว เมื่อใช้ Serial Monitor จะไปใช้ baud rate 115200 แล้ว

ความแตกต่างระหว่างการเขียนโค้ดใน Arduino IDE และ PlatformIO

ใน Arduino IDE หลังจกเขียนโค้ดโปรแกรมลงไปแล้ว ในเบื้องหลังโปรแกรมจะเติมคำสั่ง #include <Arduino.h> ให้อัตโนมัติ แต่ใน PlatformIO ไม่ได้เติมให้ ทำให้โค้ดโปรแกรมที่ใช้กับ Arduino IDE อยู่เดิม เมื่อย้ายมาใช้ PlatformIO ต้องเติม #include <Arduino.h> ไว้บรรทัดแรกสุดเสมอ

Arduino IDE แม้จะใช้ภาษา C++ ในการเขียนโปรแกรมสั่งงาน แต่นามสกุลของไฟล์กลับเป็น .ino ซึ่งเป็นนามสกุลที่ผู้พัฒนา Arduino IDE ทำขึ้นมาเอง ไม่ตรงกับมาตรฐาน ส่วนใน PlatformIO ยึดนามสกุลไฟล์ตามมาตรฐาน คือ .cpp กรณีเป็นภาษา C++ และ .c กรณีเป็นภาษา c ดังนั้นสร้างไฟล์โค้ดโปรแกรมเพิ่ม จะต้องสร้างนามสกุล .cpp หรือ .c เสมอ อย่างไรก็ตาม หากนำไฟล์ .ino เข้าไปใช้ ตัว PlatformIO จะทำสำเนาแล้วเปลี่ยนเป็น .cpp ให้อัตโนมัติ โดยผู้เขียนแนะนำให้ใช้เฉพาะไฟล์นามสกุล .cpp / .c ใน PlatformIO เท่านั้น เพื่อให้ PlatformIO ไม่ต้องแปลงไฟล์ ทำให้ช่วยลดเวลาคอมไพล์โค้โปรแกรมลงได้

ลิ้งแนะนำเพิ่มเติม

คุณทีม จาก iamteam.me ได้เขียนบทความการใช้งานเชิงลึกไว้ดังนี้

ฝากท่านผู้อ่านติดตามบทความอื่น ๆ รวมทั้งการจัดกิจกรรมด้าน Maker และจัดการอบรมเร็ว ๆ นี้ด้วยนะครับ _/|\_

ดู 3,207 ครั้ง0 ความคิดเห็น

Comments


bottom of page