การเขียนโปรแกรมไมโครคอนโทรลเลอร์ ESP32 (Embedded Programming for ESP32 Microcontrollers)#
▷ แนวทางการเรียนรู้ + กิจกรรมการฝึกปฏิบัติด้วย ESP32#
ESP32 เป็นชิปไมโครคอนโทรลเลอร์ประเภท SoC (System-on-a-Chip) ที่มีซีพียูขนาด 32 บิตอยู่ภายใน พัฒนาและผลิตโดยบริษัท Espressif Systems (ประเทศจีน) เนื่องจากสามารถหาอุปกรณ์หรือบอร์ดไมโครคอนโทรลเลอร์ ESP32 ในราคาไม่แพง มาลองใช้งานได้ และชิป ESP32 ก็รองรับการสื่อสารแบบไร้สายด้วย Wi-Fi / Bluetooth BLE เหมาะสำหรับงานด้าน IoT (Internet of Things) ดังนั้นจึงเป็นตัวเลือกหนึ่งที่เหมาะสำหรับการนำมาใช้เพื่อเรียนการเขียนโปรแกรมระบบสมองกลฝังตัว (Embedded System Programming)
แนวทางการเรียนรู้ + กิจกรรมการฝึกปฏิบัติ โดยเน้นการเขียนโปรแกรมและต่อวงจรทดลอง (ทั้งแบบเสมือนจริงและต่อวงจรจริง) สามารถจำแนกได้ตามตัวเลือกต่อไป
Guidelines for Learning ESP32-based Microcontroller Programming
- C/C++ for Microcontroller Programming
- Arduino-ESP32 Core (https://github.com/espressif/arduino-esp32)
- Espressif ESP-IDF (https://github.com/espressif/esp-idf)
- Python for Microcontroller Programming
- MicroPython (https://micropython.org/)
- CircuitPython (https://circuitpython.org/)
- ESP32 Target Platforms
- ESP32 (dual-core Xtensa LX6)
- ESP32-S2 (single-core Xtensa LX7)
- EPS32-C3 (single-core RISC-V based)
- RTOS-based Embedded C/C++ Programming
- FreeRTOS (https://www.freertos.org/)
- Zephyr RTOS (https://www.zephyrproject.org/)
- Apache NuttX for ESP32-C3 port (https://nuttx.apache.org/)
- Code Execution
- Web-based Wokwi Simulator / Virtual Prototyping (https://wokwi.com/dashboard/projects)
- Real Hardware
- Additional Hardware Modules / Peripherals
- ESP32-internal or onboard peripherals (e.g. Serial, DAC/ADC, ...)
- Extra modules (e.g. Light sensors, Temperature & Humidity Sensors, ...)
การออกแบบกิจกรรมสำหรับหน่วยการเรียนรู้ ให้พิจารณาตามหัวข้อดังนี้
- ภาษาคอมพิวเตอร์ที่ใช้ (Programming Languages of Choice) เช่น ภาษา C/C++ และ Python ในหัวข้อนี้ ผู้เรียนจะต้องทำศึกษาและทำความเข้าใจ ภาษาคอมพิวเตอร์ที่จะนำมาใช้งานก่อน รวมถึงความแตกต่างในการเขียนโปรแกรมสำหรับคอมพิวเตอร์ทั่วไปเปรียบเทียบกับการเขียนโปรแกรมสำหรับระบบสมองกลฝังตัว หรือ ไมโครคอนโทรลเลอร์
- รูปแบบการเขียนโค้ด การเลือกใช้ไลบรารี (Libraries) หรือชุดคำสั่ง (API) สำหรับการเขียนโปรแกรม เช่น การเขียนโปรแกรมด้วย Arduino Sketch (C/C++) และการเขียนโปรแกรมด้วย Espressif ESP-IDF (C/C++) เป็นต้น รวมถึงซอฟต์แวร์ IDE (Integrared Development Environment) ที่จะนำมาใช้งานด้วย
- การเลือกไมโครคอนโทรลเลอร์ชิปโดยจำแนกตามตระกูลของชิป เช่น ESP32 / ESP32-S2 / ESP32-C3 ที่จะนำมาใช้งาน แม้ว่า ชิปแต่ละรุ่นมีตัวประมวลผลภายในแตกต่างกัน แต่การเขียนโปรแกรมโดยรวม อาจไม่แตกต่างกันมากนัก
- วิธีการทดสอบการทำงานของโค้ด ซึ่งมีมากกว่าหนึ่งวิธี เช่น การเริ่มต้นด้วยวิธีการใช้ซอฟต์แวร์จำลองการทำงานและการต่อวงจรเสมือนจริง ตัวเลือกที่น่าสนใจและใช้ได้ฟรีคือ Wokwi Simulator วิธีการนี้มีข้อดีคือ ยังไม่จำเป็นต้องใช้อุปกรณ์จริง ดังนั้นผู้เรียนสามารถทดลองจนเกิดความเข้าใจและความชำนาญในระดับหนึ่งก่อน จากนั้นจึงเปลี่ยนมาใช้อุปกรณ์ฮาร์ดแวร์จริง
- การเขียนโปรแกรมแบบมัลติทาสก์ (Multi-tasking) โดยใช้ระบบปฏิบัติการเวลาจริง หรือ RTOS (Real-Time Operating System) เช่น FreeRTOS หรือตัวเลือกอื่น ดังนั้นผู้เรียนจะต้องทำความเข้าใจเกี่ยวกับหลักการทำงานระบบปฏิบัติการเวลาจริงเพื่อนำมาใช้ให้ถูกต้องและได้ประสิทธิภาพสำหรับ ESP32
ตารางต่อไปนี้แสดงตัวอย่างหน่วยกิจกรรมการเรียนรู้ (Learning Units) ซึ่งจะเห็นได้ว่า มีความแตกต่างกัน และมีระดับความยากง่ายไม่เท่ากัน เช่น หากใช้ภาษา C/C++ การเขียนโค้ดด้วย Arduino-ESP32 Core จะง่ายกว่าการใช้ Espressif ESP-IDF เป็นต้น
จากตัวอย่างหน่วยกิจกรรมการเรียนรู้ในลักษณะนี้ สามารถนำไปสร้างกิจกรรมย่อยได้อีก เช่น ถ้าเลือกใช้ Wokwi Simulator ก็มีรายการอุปกรณ์เสมือนจริงอยู่หลายประเภทสำหรับการทดลองใช้งานร่วมกับบอร์ด ESP32 และสามารถหาซื้ออุปกรณ์ฮาร์ดแวร์มาใช้งานได้จริงในราคาไม่แพง
Learning Unit | Programming Framework | Multitasking / RTOS | ESP32 Target | Code Execution / Debugging |
---|---|---|---|---|
Unit A | Wokwi + Arduino-ESP32 | No | ESP32 | Wokwi Simulator |
Unit B | Wokwi + Espressif ESP-IDF | FreeRTOS | ESP32 | Wokwi Simulator |
Unit C | VS Code IDE + PlatformIO | No | ESP32-C3 | ESP32-C3 Board |
Unit D | Espressif IDE + ESP-IDF | FreeRTOS | ESP32-C3 | ESP32-C3 Board + JTAG Debugger |
Unit F | Wokwi + MicroPython | No | ESP32-S2 | Wokwi Simulator |
Unit G | Thonny IDE + MicroPython | No | ESP32-C3 | ESP32-C3 Board |
▷ กล่าวสรุป#
บทความนี้ได้นำเสนอแนวทางการออกแบบกิจกรรมการเรียนรู้เกี่ยวกับการเขียนโปรแกรมไมโครคอนโทรลเลอร์ด้วย ESP32 จำแนกตามภาษาคอมพิวเตอร์ที่ใช้ ซอฟต์แวร์ที่ใช้ และอุปกรณ์ฮาร์ดแวร์ที่นำมาใช้ เป็นต้น
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Created: 2022-08-28 | Last Updated: 2022-08-29