แล็บ Capstone: มินิโปรเจกต์ E2E บน Digital Twin
Course 2 · Module 6
Type: Capstone / End-to-End
Suggested time: ~2 ชั่วโมง (+ เวลาเพิ่มสำหรับ README และหลักฐาน)
Read first: Lesson · Case brief · Course package · ← TOC · ← M05
Useful references during the lab
หัวข้อที่มีชื่อว่า “Useful references during the lab”| เอกสาร | ใช้เมื่อ |
|---|---|
| M03 · M04 · M05 | device · co-sim · MQTT |
Hackathon web-app/ |
ex06 · ex15 (หรือ ex09) |
| Developer Hub | ตัวอย่างเฟิร์มแวร์ |
| Course 1 M08 | รูปแบบ Capstone ฝั่งบอร์ด |
Lab Goals
หัวข้อที่มีชื่อว่า “Lab Goals”ส่งมอบเดโมสั้นบน Twin ที่ครบ:
stimulus → firmware → Studio visualization → external dashboard/MQTT
พร้อมตารางเทส ≥ 3 เคส และ README รันซ้ำได้
Prerequisites
หัวข้อที่มีชื่อว่า “Prerequisites”- M02 Link เสถียร
- M03 มี virtual device + event script (หรือเทียบเท่า)
- M04 co-sim ผ่านอย่างน้อย Path เดียว
- M05 เคย Start broker + subscriber ได้
- โฟลเดอร์ผลงาน +
lab-notes/
Recommended brief — pick a domain story
หัวข้อที่มีชื่อว่า “Recommended brief — pick a domain story”เริ่มจาก Smart Environmental Monitor (IoT / สภาพแวดล้อม) หรือแมปเป็นโดเมนอื่นตาม README §4:
| Domain | เน้นเล่า | เซ็นเซอร์หลัก | Evidence เสริม |
|---|---|---|---|
| IoT | โหนด ↔ คลาวด์ | SHT40 + state | ex06 + ex15 |
| Home | ห้องสบาย / ปลอดภัย | SHT40 + switch | ex06 + MQTT cmd |
| Industrial | alarm บนไลน์ | temp/IMU | ex06 + ex08 + ex15 |
| Health-sim | ลิงก์เฝ้าระวัง (จำลอง) | BMI270 + SHT40 | ex05 + ex08 + ex09 |
| ส่วน | เลือกตัวอย่าง (ปรับตามโดเมน) |
|---|---|
| Sensors | SHT40 temp/humidity (± sensor อื่น) |
| Behavior | เกินเกณฑ์ → state/event + สัญญาณบนโฮสต์ |
| Script | Quiet → Warm/Alert |
| MQTT | publish telemetry; optional subscribe command |
| Evidence | Studio + ex06 + (ex15 หรือ ex09) |
กรอกรายละเอียดใน e2e-case-brief.md
Lab A — Lock architecture (required)
หัวข้อที่มีชื่อว่า “Lab A — Lock architecture (required)”- เลือก โดเมน จาก README §4 (IoT / Home / Industrial / Health-sim)
- วาด/เขียนแผนภาพ 4 ขั้นจากบทเรียน §2 แล้วใส่ชื่อเหตุการณ์ตามโดเมน
- ระบุ Path: Simulator / Board / Both
- ระบุ topic MQTT และ consumer หน้าเว็บที่จะใช้เป็นหลักฐาน
- คัดลอกโครง README จากบทเรียน §6.2 ลงโปรเจกต์ (ใส่บรรทัด Domain)
Pass when: เพื่อนในทีมอ่านแล้วรู้โดเมน + เครื่องมือที่จะเปิดก่อน โดยไม่ถามเพิ่ม
Lab B — Assemble the running demo (required)
หัวข้อที่มีชื่อว่า “Lab B — Assemble the running demo (required)”- Bring-up Studio (backend เดียว) + co-sim
- รัน event script / scene ของคุณ
- ยืนยันค่าบน Studio
- Serve
web-app/→ เปิด ex06 ให้เห็นเซ็นเซอร์ที่เกี่ยวข้อง - Start broker → publish (และ/หรือ subscribe) → ยืนยันบน ex15 หรือ ex09
Pass when: เดโม Normal รันได้ต่อเนื่อง ≥ 1 นาทีโดยไม่หลุด Link เอง
Lab C — Three E2E test cases (required)
หัวข้อที่มีชื่อว่า “Lab C — Three E2E test cases (required)”รันและกรอกตารางใน case brief:
| เคส | อย่างน้อยต้องพิสูจน์ |
|---|---|
| Normal | telemetry อัปเดตบน Studio + consumer |
| Stimulus | threshold / switch / script เปลี่ยน state หรือ event ชัด |
| Command / fault | คำสั่ง MQTT หรือ ตัด broker/สตรีมสั้น ๆ แล้วกู้คืน |
Pass when: อย่างน้อย 3 แถวมีผลจริง + ผ่าน? = ใช่ (หรือ Fail พร้อมเหตุผลและworkaround ที่ยอมรับได้)
Lab D — Log triage drill (recommended)
หัวข้อที่มีชื่อว่า “Lab D — Log triage drill (recommended)”จงใจทำให้พังหนึ่งอย่าง (ปิด broker / หยุด script / เปิดผิด panel) แล้ว:
- ไล่ชั้น §3 ในบทเรียน
- จดชั้นที่พบปัญหา
- แก้กลับมาเดโมเขียว
Pass when: มีบรรทัดใน case brief ส่วนปัญหา/การแก้
Lab E — Package for handoff (required)
หัวข้อที่มีชื่อว่า “Lab E — Package for handoff (required)”- README รันซ้ำได้
- case brief กรอกครบ
- หลักฐานสกรีนช็อต/คลิป (Studio + ex06 และ MQTT consumer)
- ไม่มี password ในไฟล์ส่ง
- รายการตรวจจาก course-package.md
Deliverables checklist
หัวข้อที่มีชื่อว่า “Deliverables checklist”- Lab A–C, E ผ่าน
- (แนะนำ) Lab D
- ลิงก์/โฟลเดอร์โปรเจกต์ที่พร้อมส่งต่อ
Troubleshooting
หัวข้อที่มีชื่อว่า “Troubleshooting”| อาการ | แนวทาง |
|---|---|
| เดโมยาวแล้วหลุด | กลับ M02/M04 bring-up · อย่าผสม backend |
| ex06 ว่างแต่ Studio มีค่า | Serve โฟลเดอร์ · connection badge · mask/fields |
| MQTT ว่าง | Start broker · topic ตรง · คนละท่อกับ Live Data |
| Stimulus ไม่เห็นบน consumer | ตรวจ script รันจริง · stale · อัตรา publish |
| ผลงานมี secret | ลบแล้วใส่ placeholder ใน README |
Lesson · Case brief · Course package · TOC
อ้างอิงบทเรียนนี้
ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน
"แล็บ Capstone: มินิโปรเจกต์ E2E บน Digital Twin" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0
ข้อความอ้างอิงภาษาอังกฤษ: "Lab: E2E Mini-Project on Digital Twin" 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/digital-twin/m06-integration/l02-lab/
บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C2/M06/lab.md · Original content by Asst. Prof. Dr. Santi Nuratch (ผศ.ดร.สันติ นุราช), KMUTT. Course 2 (C2/) 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