การเขียนโปรแกรมไมโครคอนโทรลเลอร์ 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

  1. C/C++ for Microcontroller Programming
  2. Python for Microcontroller Programming
  3. ESP32 Target Platforms
    • ESP32 (dual-core Xtensa LX6)
    • ESP32-S2 (single-core Xtensa LX7)
    • EPS32-C3 (single-core RISC-V based)
  4. RTOS-based Embedded C/C++ Programming
  5. Code Execution
  6. 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