TESA Firmware SDK สำหรับ Edge AI
หลักสูตรเชิงปฏิบัติการเฟิร์มแวร์ภาษา C บน PSOC™ Edge E84 ตั้งแต่สถาปัตยกรรมชิปและชั้น SDK เครื่องมือ ModusToolbox™ + VS Code อุปกรณ์ต่อพ่วง FreeRTOS การเตรียมข้อมูลเซ็นเซอร์สำหรับ Edge AI ไปจนถึง MQTT, BLE และ Capstone
เนื้อหาต้นฉบับโดย ผศ.ดร.สันติ นุราช ภาควิชาวิศวกรรมระบบควบคุมและเครื่องมือวัด คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี (KMUTT) (https://github.com/drsanti) ภายใต้การสนับสนุนของสมาคมสมองกลฝังตัวไทย (TESA) · นำเข้าจาก drsanti/TESAIoT-Courses — C1 (commit
287c218) ภายใต้สัญญาอนุญาต CC BY 4.0
| ระดับ | L3 · ทำได้เอง |
| สถานะ | alpha (เนื้อหานำเข้าแล้ว กำลังทบทวน) |
| เวลาโดยประมาณ | ~26 ชั่วโมง (รวมเวลาของโมดูลตามต้นฉบับ) |
| ฮาร์ดแวร์ | TESAIoT PSoC Edge DevKit หรือ KIT_PSE84_EVAL (โมดูล 1 ไม่ต้องใช้บอร์ด) |
| เหมาะกับ | นักพัฒนา · นักศึกษา · ผู้สอน |
| ภาษา | ไทย คำศัพท์เทคนิคเป็นภาษาอังกฤษ หัวข้อในบทเรียนเป็นภาษาอังกฤษตามต้นฉบับ · ฉบับภาษาอังกฤษของบทเรียนยังรอแปล |
หลักสูตรนี้สำหรับใคร
หัวข้อที่มีชื่อว่า “หลักสูตรนี้สำหรับใคร”นักพัฒนาและนักศึกษาที่อ่านเขียนภาษา C ได้แล้ว และอยากพัฒนาอุปกรณ์ Edge AI บน PSOC™ Edge E84 ให้ครบตั้งแต่ชิปถึงคลาวด์ รวมถึงผู้สอนที่ต้องการชุดแล็บพร้อมใช้
ก่อนเรียน
หัวข้อที่มีชื่อว่า “ก่อนเรียน”- เขียนภาษา C ระดับพื้นฐานได้ (ฟังก์ชัน pointer struct และ callback ปรากฏในโค้ดตัวอย่างทุกบท)
- ใช้คอมพิวเตอร์ติดตั้งโปรแกรมและใช้เทอร์มินัลเบื้องต้นได้
สิ่งที่ต้องมี
หัวข้อที่มีชื่อว่า “สิ่งที่ต้องมี”- บอร์ด: TESAIoT PSoC Edge DevKit หรือ Infineon KIT_PSE84_EVAL พร้อมสาย USB (โมดูล 1 ยังไม่ต้องใช้บอร์ด)
- ModusToolbox™ 3.6 ขึ้นไป ตามบทเรียนโมดูล 2 พร้อม Arm GNU Toolchain ที่มากับชุดติดตั้ง ถ้าจะ build จากซอร์สเปิดของ tesaiot-pse84-devkit-sdk ให้ใช้ 3.6 เท่านั้นตามที่ README ของ SDK ระบุ
- Visual Studio Code กับส่วนขยายของ ModusToolbox™
- เฟิร์มแวร์ HEX
tesaiot-bitstream-<version>.hexและ TESAIoT Flasher จาก TESAIoT_Hackathon (ณ commitf5f09a6รายการlatestใน firmware manifest คือ 0.2.1) - Bitstream Studio (VS Marketplace เวอร์ชัน 0.2.2 เมื่อ 26 ก.ย. 2026) หรือ VSIX ที่คู่กับ HEX
- เครื่องมือโฮสต์: serial terminal, MQTTX หรือ
mosquitto_sub, และ GATT explorer (nRF Connect / LightBlue / AIROC™ Bluetooth® Connect) - เครือข่าย Wi-Fi และ broker MQTT ของคุณเอง (broker ใน Bitstream Studio หรือ broker สาธารณะสำหรับทดสอบ) — อย่า commit รหัสผ่านลง Git
รุ่นและเวอร์ชันทั้งหมดบันทึกไว้ในช่อง toolchain ของ course.yaml
หมายเหตุสำคัญเรื่องเฟิร์มแวร์และโค้ดตัวอย่าง
หัวข้อที่มีชื่อว่า “หมายเหตุสำคัญเรื่องเฟิร์มแวร์และโค้ดตัวอย่าง”โค้ด C ในโมดูล 3–8 เขียนสำหรับเฟิร์มแวร์ TESAIoT Bitstream (ต้นฉบับเรียกว่า “TESA Firmware SDK”) ซึ่งเผยแพร่เป็นไฟล์ HEX สำเร็จรูปคู่กับ Bitstream Studio ใน TESAIoT_Hackathon ซอร์สโค้ดและ header ของเฟิร์มแวร์ชุดนี้ยังไม่เปิดเผยต่อสาธารณะ จากการตรวจสอบเมื่อ 26 ก.ย. 2026 ไม่พบชื่อฟังก์ชันอย่าง cm55_trigger_mqtt_connect, cm55_get_mqtt_status หรือ cm55_ble_periph_* ทั้งใน SDK สาธารณะ ใน repo TESAIoT_Hackathon (มีแต่ไฟล์ HEX, VSIX, ตัวติดตั้ง และ web-app) และในการค้นของ TESAIoT Developer Hub จึงให้อ่าน snippet เป็นแนวคิดและลำดับการเรียกใช้ แล้วลงมือจริงด้วยไฟล์ HEX ตามแล็บ
SDK โอเพนซอร์สที่ใช้ได้วันนี้คือ tesaiot-pse84-devkit-sdk (Apache-2.0) ซึ่งเป็นคนละโค้ดเบสและตั้งชื่อ API ต่างกัน ตารางนี้จับคู่เฉพาะส่วนที่ตรวจแล้วว่าทำงานเรื่องเดียวกัน:
| กลุ่ม API ในบทเรียน | ซอร์ส | ตัวเทียบที่ตรวจแล้วใน SDK เปิด (commit ef72c1b) |
|---|---|---|
led_controller_*, cm55_button_* (โมดูล 3–4) |
ยังไม่เปิด | io/04_gpio_led_button.c ใช้ PDL Cy_GPIO_* |
cm55_adc_* (โมดูล 3) |
ยังไม่เปิด | io/03_read_potentiometers.c · cm55 io/02_pots_and_capsense.c |
sensor_sht40_*, sensor_bmi270_*, sensor_dps368_*, sensor_bmm350_*, cm55_i2c_manager_i2c_lock (โมดูล 3–5) |
ยังไม่เปิด | sensors/ 01–05 (sht40_*, bmi270_*, bmm350_*, dps368_*, sensor_i2c_lock) |
cm55_initialize, cm55_start_scheduler (โมดูล 4) |
ยังไม่เปิด | proj_cm55/main.c เรียก vTaskStartScheduler() เองจาก main |
bitstream_led_pwm_*, cm55_uart_send (โมดูล 3) |
ยังไม่เปิด | ยังไม่พบ |
cm55_imu_fusion_bridge_*, bitstream_bs_cfg_* (โมดูล 5) |
ยังไม่เปิด | ยังไม่พบ |
cm55_trigger_connect, cm55_get_wifi_status, example_wifi_* (โมดูล 6) |
ยังไม่เปิด | connectivity/10_wifi_join.c (app_wifi_*, cy_wcm_*) · cm55 connectivity/01_wifi_join_and_remember.c (wifi_manager_*) |
cm55_trigger_mqtt_*, cm55_get_mqtt_status, cm33_mqtt_*, bs_mqtt_telem_encode_json_* (โมดูล 6) |
ยังไม่เปิด | modules/tesaiot_mqtt/ (tesaiot_mqtt_connect, _publish, _is_connected, _disconnect) |
cm55_ble_periph_*, cm55_trigger_ble_periph_* (โมดูล 7) |
ยังไม่เปิด | ble/01_nus_bring_up_and_talk.c (ble_nus_*) ซึ่ง SDK ระบุเองว่ายัง link บน template ที่ส่งมอบไม่ได้ |
cm55_ble_request_scan_* (โมดูล 7) |
ยังไม่เปิด | ยังไม่พบ (ble_nus เป็นบทบาท peripheral อย่างเดียว) |
FreeRTOS (xTaskCreate, xQueue*, xSemaphore*, event groups) และ Infineon PDL (Cy_GPIO_*, Cy_SCB_SPI_*) |
สาธารณะ | ใช้ได้ตามเอกสารของ FreeRTOS และ Infineon |
โฮสต์ ble-flet (โมดูล 7–8) |
ไม่เผยแพร่ | README ของ TESAIoT_Hackathon ระบุว่าเป็นของผู้ดูแล ใช้ GATT explorer ทั่วไปแทน |
ผลลัพธ์การเรียนรู้
หัวข้อที่มีชื่อว่า “ผลลัพธ์การเรียนรู้”เมื่อจบหลักสูตร คุณจะ:
- จับคู่งาน Edge AI กับโดเมนฮาร์ดแวร์ของ PSOC™ Edge E84 และกับชั้นซอฟต์แวร์ HAL/BSP · Driver API · Utility · Application ได้
- สร้าง build flash และ debug โปรเจกต์เฟิร์มแวร์ด้วย ModusToolbox™ และ VS Code บนบอร์ดจริง
- ควบคุม GPIO, UART, I²C, PWM และ ADC ผ่าน Driver API และแบ่งงานเป็นหลาย task ด้วย FreeRTOS (queue, mutex, event group)
- อ่านเซ็นเซอร์ด้วยคาบเวลาคงที่ กรอง normalize และจัดหน้าต่างข้อมูลเพื่อเตรียมเข้า Edge AI
- เชื่อมอุปกรณ์กับ broker ด้วย MQTT/MQTTs และกับโฮสต์ใกล้ตัวด้วย BLE พร้อมเก็บหลักฐานการทำงาน
- ส่งมอบมินิโปรเจกต์ที่รวม sensor, RTOS และ connectivity พร้อม README ที่ผู้อื่นทำซ้ำได้
วิธีเรียน
หัวข้อที่มีชื่อว่า “วิธีเรียน”- อ่านบทเรียนที่ 1 ของแต่ละโมดูล แล้วทำแล็บ (บทเรียนที่ 2) ของโมดูลนั้น
- ใช้ชีตในโฟลเดอร์
resources/เป็นแผ่นสรุปตอนลงมือบนบอร์ด - เปิดตาราง Read alongside this chapter ในแต่ละบทเพื่อไปยังเอกสารออนไลน์ที่เกี่ยวข้อง
- ตอบ
quiz.yamlท้ายบทเรียนเพื่อเช็กความเข้าใจก่อนเข้าแล็บ
ต้นฉบับเขียนขึ้นเพื่อการอบรมแบบมีผู้สอน ถ้อยคำในบทเรียนปรับให้เรียนด้วยตัวเองได้แล้ว แต่ค่าที่ขึ้นกับเครื่องของคุณ (Wi-Fi, broker, พอร์ต COM, เวอร์ชัน HEX) ยังต้องตั้งเอง ให้เริ่มจากค่าที่บทเรียนให้ไว้ (เช่น baud 921600 หรือ broker ใน Bitstream Studio) แล้วดูเอกสารของเครื่องมือประกอบ ในเนื้อหาจะเห็นคำว่า Course 1 / Course 2 / Course 3 และรหัส M01–M08 ตามต้นฉบับ: Course 1 คือหลักสูตร TESA Firmware SDK สำหรับ Edge AI, Course 2 คือหลักสูตร Digital Twin และ Course 3 คือหลักสูตรการออกแบบผลิตภัณฑ์ ส่วน M0N คือโมดูลที่ N
ลำดับที่แนะนำระหว่างสามหลักสูตร
หัวข้อที่มีชื่อว่า “ลำดับที่แนะนำระหว่างสามหลักสูตร”ต้นฉบับแนะนำให้เรียนตามลำดับนี้:
หลักสูตร 1 TESA Firmware SDK สำหรับ Edge AI เฟิร์มแวร์บนบอร์ด │ ▼หลักสูตร 2 พัฒนาเฟิร์มแวร์ร่วมกับ Digital Twin เฟิร์มแวร์ ↔ Digital Twin ↔ คลาวด์ │ ▼หลักสูตร 3 การออกแบบผลิตภัณฑ์เชิงอุตสาหกรรม ออกแบบผลิตภัณฑ์ → Twin → ต้นแบบจริงถ้าต้องการแค่งานออกแบบใน Blender เริ่มโมดูล 1–3 ของหลักสูตร 3 ก่อนได้ ส่วนแล็บที่ใช้ Twin จะง่ายขึ้นมากหลังเรียนหลักสูตร 2
- หลักสูตร 1: TESA Firmware SDK สำหรับ Edge AI
- หลักสูตร 2: พัฒนาเฟิร์มแวร์ร่วมกับ TESA Digital Twin บน VS Code
- หลักสูตร 3: การออกแบบผลิตภัณฑ์เชิงอุตสาหกรรม (Blender และ Digital Twin)
ที่มาและสัญญาอนุญาต
หัวข้อที่มีชื่อว่า “ที่มาและสัญญาอนุญาต”เนื้อหาหลักสูตรนี้นำเข้าจาก drsanti/TESAIoT-Courses โฟลเดอร์ C1/ ที่ commit 287c218 งานต้นฉบับได้รับทุนจากสมาคมสมองกลฝังตัวไทย (TESA) ซึ่งเป็นผู้ถือสิทธิ์ และเผยแพร่ที่นี่ภายใต้ CC BY-NC 4.0 TESA Open Knowledge คงข้อความสอนของผู้เขียนไว้ตามเดิม สิ่งที่เพิ่มคือโครงสร้างโมดูล/บทเรียน front matter คำถามเช็กความเข้าใจ หมายเหตุเรื่องเฟิร์มแวร์และเครื่องมือ การแก้ลิงก์ให้ตรงโครงสร้างใหม่ และการปรับถ้อยคำที่ผูกกับการอบรมในห้องเรียน (เช่น รอบอบรม คะแนน) ให้เหมาะกับการเรียนแบบเปิด เครื่องมือและเอกสารของบุคคลที่สาม (Infineon, Blender, ระบบนิเวศ MQTT ฯลฯ) อยู่ภายใต้สัญญาอนุญาตของเจ้าของแต่ละราย
อ้างอิง TESA
หัวข้อที่มีชื่อว่า “อ้างอิง TESA”ถ้าคุณนำเนื้อหาหลักสูตรนี้ไปใช้ต่อ ไม่ว่าจะเป็นสไลด์ เอกสารประกอบการสอน มคอ.3 เอกสารแจก หรือ repo โค้ด โปรดอ้างอิงด้วยข้อความนี้:
“TESA Firmware SDK สำหรับ Edge AI” จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0
ถ้าคุณดัดแปลงเนื้อหา ให้เติม «(ดัดแปลง)» ต่อท้ายข้อความข้างบน และคงเครดิตผู้เขียนต้นฉบับไว้ด้วย:
เนื้อหาต้นฉบับโดย ผศ.ดร.สันติ นุราช ภาควิชาวิศวกรรมระบบควบคุมและเครื่องมือวัด คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี (KMUTT) (https://github.com/drsanti) ภายใต้การสนับสนุนของสมาคมสมองกลฝังตัวไทย (TESA)
เครื่องมือ Bitstream Studio (VS Code) และ Ternion ที่หลักสูตรนี้ใช้ เป็นผลงานของ ผศ.ดร.สันติ นุราช (KMUTT)
การอ้างอิงไม่ได้หมายความว่า TESA หรือ Infineon รับรองหลักสูตรหรืองานของคุณ ดูรูปแบบและตัวอย่างการอ้างอิงเพิ่มเติม (สไลด์ มคอ.3 เอกสารแจก repo โค้ด) ได้ที่ ATTRIBUTION.md
วิดีโอประกอบหลักสูตร
ดูบน YouTube (เปิดในแท็บใหม่)
-
Download (from TESA Developer Hub), Build and Program via ModusToolbox to TESAIoT Dev Kit สมาคมสมองกลฝังตัวไทย (TESA) -
Remote Flashing for PSoC Edge AI Kit via TESA Developer Hub สมาคมสมองกลฝังตัวไทย (TESA) -
Software Development Process - EP01 : Overall Software Development Process สมาคมสมองกลฝังตัวไทย (TESA) -
Software Development Process - EP03 : System Requirements สมาคมสมองกลฝังตัวไทย (TESA) -
Software Development Process - EP04 : Software Requirements (ต่อ) สมาคมสมองกลฝังตัวไทย (TESA)
วิดีโอโดย สมาคมสมองกลฝังตัวไทย (TESA) · ดูทั้งชุดใน playlist AIoT Foundation
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0
เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA