แล็บ Capstone: มินิโปรเจกต์
Course 1 · Module 8
Type: Capstone (integrate M02–M07 on real hardware)
Suggested time: 2–4 hours (+ optional extra time)
Read first: Lesson · Capstone brief · Course package · ← Table of Contents · ← M07
หมายเหตุ: snippet ในแล็บนี้ใช้ API ของเฟิร์มแวร์ TESAIoT Bitstream ซึ่งยังไม่เปิดซอร์ส ดูรายละเอียดและตัวอย่างเทียบใน SDK สาธารณะได้ที่หมายเหตุต้นบทเรียน วางแผน Capstone และใช้แผนที่เอกสาร
โฮสต์
ble-fletยังไม่เผยแพร่ — README ของ TESAIoT_Hackathon (commitf5f09a6) ระบุว่าpython-app/,ble-react/และble-flet/เป็นของผู้ดูแลและไม่อยู่ใน repo สาธารณะ ให้ใช้เส้นทางสำรองที่บทเรียนเสนอไว้แล้ว คือ GATT explorer ทั่วไป เช่น nRF Connect, LightBlue หรือ AIROC™ Bluetooth® Connect
Useful references during the lab
หัวข้อที่มีชื่อว่า “Useful references during the lab”| เอกสาร | ใช้เมื่อ |
|---|---|
| M05 lab | sensor / window |
| M06 lab | Wi‑Fi / MQTT |
| M07 lab | BLE peripheral / host |
| M04 lab | tasks / queue |
| Hackathon web-app / ble-flet | live dashboard evidence |
| Bitstream Studio | host / broker tools |
Lab Goals
หัวข้อที่มีชื่อว่า “Lab Goals”ส่งมอบมินิโปรเจกต์ที่รันบนบอร์ดจริง ครอบคลุม:
- Sensor path + indication
- ≥ 2 FreeRTOS tasks
- Connectivity: MQTT และ/หรือ BLE (อย่างน้อยหนึ่งเส้น พร้อมรับคำสั่งหรือยืนยันลิงก์)
- README ที่ผู้อื่นทำซ้ำได้
- หลักฐานสาธิต (รูป / คลิป / dashboard)
Prerequisites
หัวข้อที่มีชื่อว่า “Prerequisites”- Lab หลัก M02–M07 ผ่านเกณฑ์ขั้นต่ำ (อย่างน้อย path ที่จะใช้ใน Capstone)
- โปรเจกต์รวมโค้ดได้บนเครื่องคุณ
- Broker + Wi‑Fi หรือ โฮสต์ BLE ที่เลือกใช้
- เปิด capstone-brief.md สำหรับกรอก
Recommended build order
หัวข้อที่มีชื่อว่า “Recommended build order”- Architecture (30–45 นาที) — กรอกตาราง Task / Topic / BLE ใน capstone brief
- Sensor + indication — อ่านคาบคงที่ + LED/UART
- RTOS wiring — แยก task, ใส่คิวถ้ามี producer/consumer
- Connectivity — เลือก MQTT และ/หรือ BLE แล้วทำให้ลิงก์และคำสั่งทำงาน
- Hardening — ไม่ hardcode secret; ทดสอบกระตุ้นเซ็นเซอร์ / ส่งคำสั่ง / ถอดสายสั้น ๆ
- Evidence — README + สกรีนช็อต/คลิป + (แนะนำ) Hackathon
web-app/ble-fletหรือ Bitstream Studio
Minimum pass criteria
หัวข้อที่มีชื่อว่า “Minimum pass criteria”| เกณฑ์ | ต้องมี |
|---|---|
| Build + flash ได้จาก README ของคุณ | ใช่ |
| ≥ 2 Task ทำงานจริง | ใช่ |
| Sensor path + สถานะบน LED/UART | ใช่ |
| MQTT หรือ BLE ใช้งานได้ + รับคำสั่ง/ยืนยันลิงก์ | ใช่ |
| ไม่ฝังรหัสผ่านในไฟล์ส่งสาธารณะ | ใช่ |
Stretch goals (optional)
หัวข้อที่มีชื่อว่า “Stretch goals (optional)”- ใช้ทั้ง MQTT และ BLE
- Threshold →
alertpublish / notify - Mutex ถูกต้องบนบัสร่วม
to_twinqueue หรือ topic แยก- สาธิตบน Bitstream Studio หรือ Hackathon
Demo scenarios (test all three)
หัวข้อที่มีชื่อว่า “Demo scenarios (test all three)”- Normal — ค่าเซ็นเซอร์ไหล, LED/UART ปกติ, telemetry เข้าโฮสต์ (MQTT subscriber และ/หรือ BLE dashboard)
- Stimulus — เปลี่ยนอุณหภูมิ/ขยับบอร์ด/หมุน POT → เห็นค่าหรือ event เปลี่ยน
- Command — จาก PC/phone ส่งคำสั่ง (MQTT topic หรือ BLE write) → อุปกรณ์ตอบสนอง
Deliverables checklist
หัวข้อที่มีชื่อว่า “Deliverables checklist”- โฟลเดอร์/ลิงก์โปรเจกต์
- README: วิธี build, flash, Wi‑Fi/broker หรือ BLE host แบบไม่เปิดเผยรหัส, topic/UUID ที่ใช้
- capstone-brief.md กรอกครบ
- แผนภาพหรือตาราง Task
- หลักฐานสาธิต 3 สถานการณ์
- ยืนยันไม่มี secret ในไฟล์สาธารณะ
Troubleshooting
หัวข้อที่มีชื่อว่า “Troubleshooting”| อาการ | แนวทาง |
|---|---|
| รวมโค้ดแล้ว build พัง | รวมทีละชั้นจากโปรเจกต์ M02 ที่นิ่ง |
| MQTT ไม่ขึ้น | ตรวจ Wi‑Fi ก่อน (M06 Lab A) |
| BLE ไม่เห็นในสแกน | profile BLE เปิดหรือยัง · reboot · ADV timeout (M07) |
| Task ชนบัส | ใส่ cm55_i2c_manager_i2c_lock / mutex |
| สาธิตโฮสต์ไม่มีค่า | HEX/VSIX เวอร์ชัน, topic MAC, Studio Link, หรือ ble-flet connect |
Lesson · Capstone brief · Table of Contents
อ้างอิงบทเรียนนี้
ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน
"แล็บ Capstone: มินิโปรเจกต์" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0
ข้อความอ้างอิงภาษาอังกฤษ: "Lab: Capstone Mini Project" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0
ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/firmware-sdk-edge-ai/m08-capstone/l02-lab/
บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C1/M08/lab.md · Original content by Asst. Prof. Dr. Santi Nuratch (ผศ.ดร.สันติ นุราช), KMUTT. Course 1 (C1/) of drsanti/TESAIoT-Courses. TESA funded the work and holds the rights; published here under CC BY-NC 4.0. The upstream repository carries no licence file. Text kept faithful; structure, front matter, quizzes and notes added by TESA Open Knowledge.
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0
เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA