ข้ามไปยังเนื้อหา

Edge AI Developer: จากเซนเซอร์สู่โมเดลบนอุปกรณ์

ดัดแปลงจาก Edge AI Developer, © 2026 รศ.วิรุฬห์ ศรีบริรักษ์ วิศวกรรมระบบสมองกลฝังตัว ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยบูรพา (BUU) · BENTO & TESAIoT (CC BY 4.0 / MIT)

กำลังพัฒนา หลักสูตรนี้อิงเฟิร์มแวร์ BENTO สำหรับ Edge AI ที่ยังพัฒนาอยู่ ชื่อฟังก์ชัน โมเดล และขั้นตอนบนบอร์ดอาจเปลี่ยนก่อนออกรุ่นจริง เรียนและทดลองใน BENTO Emulator ได้ ถ้าเจอจุดที่ไม่ตรงกับที่เห็น แจ้งได้ที่ GitHub Issues

เรียน Edge AI แบบครบวงจรจากของจริงบนบอร์ด PSoC Edge (TESAIoT Dev Kit: Cortex-M33 + Cortex-M55 + Ethos-U55 NPU) ด้วย MicroPython เริ่มจากรันโมเดลที่มากับบอร์ดให้เห็นปลายทางก่อน แล้วเดินตามวงจรชีวิตของข้อมูลห้าเสา:

เก็บข้อมูล (DAQ) → ประมวลผล → วิเคราะห์สัญญาณ → ฝึกโมเดล → แอป Edge AI

ระหว่างทางคุณจะฝึกโมเดลของตัวเองบน PC แล้วพาไฟล์เดียวกันไปรันบน MCU เบราว์เซอร์ และ Cortex-A แกะสแตกใต้ฝากระโปรงจาก MicroPython ถึง NPU และปิดท้ายด้วย capstone ที่ส่งมอบได้จริง ทุกบทเรียนเดินตามแนว PRIMM คือเห็นของที่ทำงานได้ก่อน แล้วค่อยแกะ ดัดแปลง และสร้างเอง

  • นักพัฒนาและผู้เรียนที่เขียน MicroPython และ Python ได้แล้ว (เช่นผ่านหลักสูตร AIoT in Action) และอยากทำ Edge AI บนอุปกรณ์จริง
  • วิศวกรที่ต้องการเข้าใจทั้งเส้นทางตั้งแต่ข้อมูลดิบจนถึงโมเดลบน NPU ไม่ใช่แค่เรียก API
  • ผู้สอนที่ต้องการชุดบทเรียนพร้อมสไลด์ โค้ด ไฟล์ฝึก และเฉลย

ไม่ต้องมีพื้นฐาน machine learning มาก่อน คณิตศาสตร์ที่ใช้ (ตรีโกณมิติ สถิติพื้นฐาน FFT softmax) อธิบายไว้ในสไลด์ทีละขั้น

  1. อธิบายวงจรชีวิตของข้อมูลห้าขั้นใน Edge AI และใช้โมดูล edge_ai เลือกโมเดลจากทะเบียน อ่าน verdict และต่อเข้ากับ action บนบอร์ดได้
  2. เก็บข้อมูลเซนเซอร์ที่ติดป้ายลง CSV ที่อัตราสุ่มคงที่ และเตรียม dataset ที่สมดุล แบ่ง train/val/test แบบ stratified โดยไม่มีข้อมูลรั่ว
  3. แปลงสัญญาณดิบเป็นปริมาณทางฟิสิกส์และ feature ด้วยฟิลเตอร์ FFT และหน้าต่างเลื่อน และวัดผลของแต่ละขั้นด้วยตัวเลข
  4. ฝึกโมเดล Conv1D ใน Docker บีบเป็น int8 แล้ววัด accuracy และ latency บน PC เว็บ และ MCU ผ่าน Vela พร้อมพิสูจน์ parity ภายในเกณฑ์ TOL
  5. สร้างแอป Edge AI ที่กัน false positive ด้วย CONF_FLOOR, debounce และ cooldown รวม verdict กับเซนเซอร์ดิบ และส่งเหตุการณ์ขึ้น MQTT
  6. อธิบายสแตกจาก MicroPython ถึง NPU เพิ่มโมเดลเข้าเฟิร์มแวร์ และส่งมอบ capstone ที่ข้ามอย่างน้อยสามเสาพร้อมเหตุผลการออกแบบที่ยืนบนการวัด
  • บอร์ด TESAIoT Dev Kit (PSoC Edge E84) ที่ลงเฟิร์มแวร์ MicroPython ของ BENTO แล้ว — หรือเริ่มได้โดยไม่มีบอร์ด ด้วย BENTO Emulator (Emulator จำลองเซนเซอร์และผลโมเดล บางบทเรียนต้องใช้บอร์ดจริง ดูบรรทัด “อุปกรณ์” ในแต่ละบทเรียน)
  • BENTO IDE — https://ide.tesaiot.dev/ เขียนโค้ดแล้วกด Program to Device จากเบราว์เซอร์ และมี BENTO Emulator ในตัว
  • PC ที่มี Python 3 กับ numpy (โมดูล 5) และ Docker สำหรับฝึกโมเดล หรือใช้ Google Colab แทน Docker ได้
  • WiFi สำหรับบทเรียน 6.6 (ส่ง MQTT ไป broker สาธารณะ)
  • ModusToolbox กับ TESAIoT PSE84 DevKit SDK ถ้าจะทำส่วนเพิ่มโมเดลเข้าเฟิร์มแวร์ในโมดูล 7
  • สมุดหรือไฟล์สำหรับ บันทึกการเรียน ของตัวเอง สไลด์และแล็บบอกเป็นระยะว่าควรจดอะไร

แปดโมดูล 42 บทเรียน ราว 60 ชั่วโมงตามหลักสูตรต้นฉบับ (20 ชุด ชุดละราวสามชั่วโมง) ผลรวมเวลาโดยประมาณของทุกบทเรียนในคลังนี้คือราว 50 ชั่วโมง ส่วนที่เหลือคือเวลาเก็บข้อมูล ฝึกโมเดล และทำ capstone ซึ่งยืดหยุ่นตามผู้เรียน บทเรียนมาเป็นชุด บทเรียนแนวคิดตามด้วยบทเรียน ลงมือทำ

โมดูล บทเรียน ชั่วโมง (ประมาณ) เรื่อง
โมดูล 1 — เริ่มต้น: รันของจริงแล้วแกะดูข้างใน 7 7.8 รันโมเดล Edge AI ของจริงก่อน แล้วแกะแอปเซนเซอร์กับแอป Edge AI จนเห็นโครงร่วมสี่จังหวะ ทะเบียนโมเดล และเส้นทางจาก verdict สู่ action
โมดูล 2 — เก็บข้อมูลจากเซนเซอร์ (DAQ) 4 4.5 เก็บข้อมูลจากเซนเซอร์ให้ตรงกับที่โมเดลต้องการ อัตราสุ่ม Nyquist หน้าต่าง schema ของ CSV และการเก็บ IMU กับเสียงบนเส้นเวลาเดียว
โมดูล 3 — ประมวลผลด้วยคณิตศาสตร์และฟิสิกส์ 4 4.6 แปลงตัวเลขดิบเป็นปริมาณทางฟิสิกส์ (มุมเอียง พลังงาน ความสูง dBFS) ค่าอนุพัทธ์อย่าง dew point กับ heat index และจำแนกด้วยกฎก่อนใช้ ML
โมดูล 4 — วิเคราะห์สัญญาณ 6 7.0 ทำสัญญาณให้สะอาดด้วยฟิลเตอร์ DSP มองในโดเมนความถี่ด้วย FFT แล้วบีบหน้าต่างเลื่อนเป็น feature vector ที่โมเดลเห็นจริง
โมดูล 5 — ฝึกโมเดลและนำไปใช้หลายเป้าหมาย 9 10.7 เตรียม dataset ที่สมดุล ฝึกโมเดลของเราเองใน Docker บีบเป็น int8 แล้วพาไฟล์เดียวไปรันบนเว็บ Cortex-A และ MCU ผ่าน Vela พร้อมวัด parity
โมดูล 6 — แอป Edge AI 6 7.2 สร้างแอปที่โฟกัสโมเดลเดียว ต่อ verdict เข้ากับ action ผ่านท่อที่กัน false positive รวมกับเซนเซอร์ดิบ และส่งเหตุการณ์ขึ้น MQTT
โมดูล 7 — ใต้ฝากระโปรงและการต่อเติม 4 4.8 แกะสแตกจาก MicroPython ข้าม IPC ไปถึง ai_engine และ NPU แล้วใช้แผนที่นั้นเพิ่มโมเดลของเราเองให้โผล่ใน edge_ai.models()
โมดูล 8 — Capstone: แอป Edge AI ของเราเอง 2 3.8 ออกแบบ สร้าง และส่งมอบ Guardian แอป Edge AI ที่ร้อยสามเสาไว้ในลูปเดียว พร้อมเหตุผลการออกแบบที่ยืนบนการวัด
รายชื่อบทเรียนทั้งหมด

โมดูล 1 — เริ่มต้น: รันของจริงแล้วแกะดูข้างใน

โมดูล 2 — เก็บข้อมูลจากเซนเซอร์ (DAQ)

โมดูล 3 — ประมวลผลด้วยคณิตศาสตร์และฟิสิกส์

โมดูล 4 — วิเคราะห์สัญญาณ

โมดูล 5 — ฝึกโมเดลและนำไปใช้หลายเป้าหมาย

โมดูล 6 — แอป Edge AI

โมดูล 7 — ใต้ฝากระโปรงและการต่อเติม

โมดูล 8 — Capstone: แอป Edge AI ของเราเอง

ไฟล์ คืออะไร
README.md เป้าหมาย สิ่งที่ต้องเตรียม แนวคิดโดยย่อ รายชื่อไฟล์โค้ด แล็บ และเช็กความเข้าใจ
slides.md สไลด์ของบทเรียน (Marp)
examples/ ตัวอย่างและฉบับเต็มที่รันได้ทันที
practice/ ไฟล์ฝึก มีช่องว่าง # เติม ให้เติมเอง (บทเรียนลงมือทำ)
solution/ เฉลย ชื่อไฟล์ตรงกับไฟล์ฝึก
quiz.yaml คำถามเช็กความเข้าใจ ผูกกับเป้าหมายแต่ละข้อ

วิธีรันโค้ด MicroPython: เปิดไฟล์ใน BENTO IDE แล้วกด Program to Device (บอร์ด) หรือ Run (BENTO Emulator) · ไฟล์โค้ดขึ้นต้นด้วยเลขชุดเดิม เช่น s11_dataset.py ตามลำดับสไลด์ของต้นฉบับ

เครื่องมือฝั่ง PC ของโมดูล 5 อยู่ใน shared/training/ (dataset_tools.py, train.py, eval_pc.py, convert_web.py, quantize_vela.sh, Dockerfile และ notebook สำหรับ Colab) · หน้าเล่นคณิตแบบโต้ตอบ shared/interactive/math_lab.html ต้องดาวน์โหลดมาเปิดในเบราว์เซอร์ (ต้องต่อเน็ตเพื่อโหลด GeoGebra)

  • BENTO Emulator จำลองเซนเซอร์และผลของโมเดล (ยกเว้นโมเดล Motion ที่เปิดสวิตช์ REAL แล้วรันผ่าน ONNX Runtime Web) ไม่มีโมเดล Push แผง HW ขยับเฉพาะ accel และโมเดลเสียงไม่ชนะคลาส unlabelled ตัวเลข latency และเสียงจริงต้องดูบนบอร์ด
  • โมเดล Cough, Alarm และ Siren เป็น DEEPCRAFT Ready-Model ของ Imagimob AB บริษัทในเครือ Infineon ใช้ได้เพื่อประเมินผลเท่านั้น และจำกัดจำนวนครั้งอนุมาน โมเดล Motion, Baby Cry และ Push เป็น export จาก DEEPCRAFT Studio ของ Imagimob เช่นกัน ไม่มีไฟล์โมเดลเหล่านี้อยู่ในคลังนี้
  • บน TESAIoT Dev Kit การเปิดไมโครโฟน PDM จาก MicroPython ยังชนกับ clock ของระบบเสียง ตัวอย่างที่อ่านเสียงดิบเอง (บทเรียน 2.3–2.4 และตัวอย่าง 10) ผู้เขียนทดสอบบน PSoC Edge AI Kit ส่วนโมเดลเสียงผ่าน edge_ai ใช้ได้
  • ซอร์สเฟิร์มแวร์ BENTO และเอกสารสถาปัตยกรรมภายในที่โมดูล 7 อ้างถึงยังไม่เปิดเผย ส่วนที่ตรวจได้คือ header และเอกสารใน SDK สาธารณะ ซึ่งมีทางเพิ่มโมเดลด้วย ai_engine_register() แทนการแก้ ai_engine.c

หลักสูตรนี้ดัดแปลงจากสไลด์ 20 ชุดของ Edge AI Developer ข้อเท็จจริงที่ไม่ตรงกับ SDK สาธารณะ กับ BENTO Emulator หรือกับผลการรันเครื่องมือซ้ำ ได้แก้ในบทเรียนแล้ว ข้อหลัก ๆ คือ

  • motion() คืนค่าเป็น m/s² สูตรพลังงานจึงหารด้วย 9.81 และ pitch ใช้ atan2(−ax, …)
  • dataset_tools.py ให้ 143 หน้าต่าง แบ่งเป็น 101/21/21 (ต้นฉบับเขียน 142 และ 100/22/22) และสูตรแบ่งชุดข้อมูลตรงกับ split()
  • ถ้าลืม representative_dataset ตอนแปลงเป็น int8 จะเกิด ValueError ไม่ได้แค่ความแม่นยำลดลงเงียบ ๆ
  • Emulator มีโมเดล 5 ตัว (ไม่มี Push) ผลของโมเดลเป็นการจำลอง ยกเว้นโมเดล Motion ที่รันจริงผ่าน ONNX Runtime Web และโหลดโมเดลของผู้เรียนไม่ได้ แล็บเทียบผลบนเว็บจึงรันในหน้าเว็บของผู้เรียนเอง
  • เฟิร์มแวร์ wifi ไม่มี rssi() ตัวอย่างจึงอ่าน status()["rssi"] และอาร์กิวเมนต์ของ ui.tone คือ (note, wave, velocity, ms)
  • การอ้างถึงเอกสารภายในที่ยังไม่เปิดเผย เปลี่ยนเป็น header และเอกสารใน SDK สาธารณะ
  • train.py เพิ่มตัวเลือก --save-keras ที่ convert_web.py ต้องใช้

ตัวเลขความแม่นยำและ latency ในบทเรียนเป็นของผู้เขียน ยังไม่ได้วัดซ้ำบนบอร์ด

เฉลยเปิดให้ดูได้โดยตั้งใจ แต่มีไว้ให้ เทียบหลังจากพยายามเองแล้ว ไม่ได้มีไว้คัดลอกวาง

  1. ลองเองก่อนอย่างน้อย 15 นาที อ่านคำใบ้ # เติม ในไฟล์ฝึก เติมแล้วรันดูผลจริง ถ้า error ให้อ่านข้อความ error ให้จบก่อน
  2. เปิดเฉลยอ่าน แล้วปิด อ่านให้เข้าใจว่าทำไมเขียนแบบนั้น แล้วปิดไฟล์เฉลยก่อนกลับไปแก้ไฟล์ของตัวเอง
  3. พิมพ์เอง ไม่วาง นิ้วที่พิมพ์เองกับตาที่คัดลอกจำคนละแบบกัน
  4. เปลี่ยนตัวเลขแล้วดูผล เช่นเกณฑ์ความมั่นใจ ขนาดหน้าต่าง หรือจำนวน epoch การรู้ว่า “ถ้าแก้ตรงนี้จะเกิดอะไร” คือความเข้าใจจริง
  • เนื้อหา (สไลด์ README ภาพที่วาดเองและภาพหน้าจอ) — CC BY-NC 4.0
  • โค้ด (examples/, practice/, solution/, shared/) และไฟล์โมเดลอ้างอิง shared/training/model_int8.tflite — MIT, Copyright (c) 2026 Wiroon Sriborrirux (ข้อความสัญญาอนุญาตเต็มอยู่ที่ LICENSES/MIT.txt ของรีโพ)
  • ภาพจากบุคคลที่สาม — ใช้ตามสัญญาอนุญาตของแต่ละภาพ รายชื่อผู้สร้าง แหล่งที่มา และสัญญาอนุญาตอยู่ใน credits.yaml
  • โมเดล DEEPCRAFT ที่บอร์ดใช้เป็นของ Imagimob AB (บริษัทในเครือ Infineon Technologies) สัญญาอนุญาตของคลังนี้ไม่ครอบคลุมโมเดลเหล่านั้น

หลักสูตรนี้ดัดแปลงจากหลักสูตร Edge AI Developer ของ รศ.วิรุฬห์ ศรีบริรักษ์ วิศวกรรมระบบสมองกลฝังตัว ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยบูรพา (BUU) (ฉบับ 2026-09) โดยแบ่งสไลด์ 20 ชุดเป็น 42 บทเรียน จัดเป็นแปดโมดูล ตรวจข้อเท็จจริงกับเฟิร์มแวร์ BENTO, BENTO Emulator และ SDK สาธารณะ และปรับถ้อยคำให้เหมาะกับผู้เรียนทั่วไป · BENTO & TESAIoT

เมื่อนำหลักสูตรนี้หรือบางส่วนไปใช้ ดัดแปลง หรือเผยแพร่ต่อ กรุณาอ้างอิงตามนี้ (ถ้าดัดแปลง ให้เติม «(ดัดแปลง)» ต่อท้ายชื่อ และคงเครดิตผู้เขียนต้นฉบับไว้ด้วย):

“Edge AI Developer: จากเซนเซอร์สู่โมเดลบนอุปกรณ์” จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0 · ดัดแปลงจาก Edge AI Developer, © 2026 รศ.วิรุฬห์ ศรีบริรักษ์ วิศวกรรมระบบสมองกลฝังตัว ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยบูรพา (BUU) · BENTO & TESAIoT (CC BY 4.0 / MIT)

การอ้างอิงไม่ได้แปลว่า TESA หรือ Infineon รับรองหลักสูตรหรือผลงานที่นำไปใช้ต่อ ชื่อ TESA, TQP และ “Certified by TESA and Infineon” เป็นเครื่องหมายของโครงการ

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA