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

แล็บ: สร้าง Virtual Device และ event script

Course 2 · Module 3
Type: Hands-on (Virtual Device + optional Blender → GLB)
Suggested time: ~3–3.5 ชั่วโมง Virtual Device (+ ~1–1.5 ชม. Lab E)

Read first: Lesson · Device checklist · Blender cheatsheet · Template · ← Table of Contents · ← M02 · M04 →

เอกสาร ใช้เมื่อ
M02 lab เซสชัน Studio / Simulator พร้อม
Hackathon scene presets / web-app evidence
Course 1 M05 ความหมายเซ็นเซอร์
Blender Manual 4.5 Modeling / Texturing / Animation
INC111-2021 playlist (Thai) Tutorial วิดีโอภาษาไทย
ternion-3d-assets-free ตัวอย่าง GLB / texture

  • มี Virtual Device ที่กำหนดเซ็นเซอร์อย่างน้อย 2 ชนิด
  • มี behavior อย่างน้อย 1 เส้นทาง (อินพุต → สถานะที่สังเกตได้)
  • มีสคริปต์/ไทม์ไลน์เหตุการณ์รันซ้ำได้และเห็นผลใน visualization
  • กรอก device-model-checklist.md
  • (แนะนำ) ฝึก Blender สั้น ๆ: model หรือ texture หรือ animation → export GLB

Suggested time: ~3–3.5 ชม. (Virtual Device) + ~1–1.5 ชม. (Lab E Blender ถ้าทำ)


  • Lab M02 ผ่าน (เปิด Bitstream Studio ได้)
  • เลือกเส้นทาง: Simulator และ/หรือบอร์ดที่สตรีมได้
  • มีโฟลเดอร์ lab-notes/ สำหรับไฟล์โมเดล + หลักฐาน
  • (Lab E) ติดตั้ง Blender

  1. คัดลอก sample-virtual-device.template.json เป็นไฟล์ของคุณ เช่น lab-notes/device-model.json
  2. ตั้ง deviceId / displayName ให้ทีมจำได้
  3. เปิดใช้เซ็นเซอร์อย่างน้อย 2 ชนิดจากชุด: switch, temperature/pressure, IMU
  4. กำหนด default และช่วง min/max (หรือเทียบเท่า) ให้สมเหตุสมผล
  5. ระบุ actuator อย่างน้อย 1 ตัว (LED / flag / log sink)

บนโฮสต์: เปิด Simulator หรือบอร์ด แล้วเลือก scene ที่สอดคล้องโมเดล (เช่น Lab Quiet สำหรับสาธิตช้า, Motion เมื่อมี IMU)

Pass when: ไฟล์โมเดลอ่านรู้เรื่อง และโฮสต์แสดงค่าที่เกี่ยวข้องกับเซ็นเซอร์ที่เลือกอย่างน้อยหนึ่งช่อง


กำหนดและสาธิตอย่างน้อยหนึ่งกฎ เช่น:

  • คำสั่ง/ปุ่ม → LED หรือสถานะบน UI
  • อุณหภูมิเกินเกณฑ์ → event / ข้อความ log / การเปลี่ยนโหมด

เขียนเป็นประโยค WHEN … THEN … ใน checklist

Pass when: เพื่อนในทีมกระตุ้นอินพุตแล้วชี้ผลบนจอได้โดยไม่เดา


เขียนไทม์ไลน์อย่างน้อย 4 จังหวะ (ดูตัวอย่างในบทเรียน) แล้วรันจริง:

  1. เริ่มจากค่า default / Lab Quiet
  2. กระตุ้นสเกลาร์หรือสวิตช์ตามเวลา
  3. กระตุ้น IMU หรือสลับไป Motion (ถ้าโมเดลมี IMU)
  4. บันทึกผลที่เห็น (สกรีนช็อตก่อน/หลัง หรือคลิปสั้น)

อนุญาตให้รันแบบ นาฬิกาจับเวลา + มือ ถ้าเครื่องมือยังไม่มีไฟล์สคริปต์อัตโนมัติ — แต่ต้องทำซ้ำได้ในรอบที่ 2

Pass when: รันสคริปต์ซ้ำแล้วได้ลำดับผลเดียวกันโดยประมาณ


  • เพิ่ม behavior ที่สอง (threshold + command)
  • เปรียบเทียบ scene Lab Quiet vs Motion บนเซ็นเซอร์ชุดเดียวกัน
  • เปิด Hackathon web-app/ เป็นจอ Visualization ชั้นนอก

ใช้ blender-twin-cheatsheet.md เป็นแผนที่ลิงก์
Tutorial ภาษาไทย: INC111-2021 playlist

เลือกอย่างน้อย หนึ่ง track ให้จบ:

  1. ติดตั้ง Blender
  2. สร้างชิ้นส่วนง่าย (เคสกล่อง / บอร์ดแบน) จาก mesh primitive
  3. ใช้ Extrude / Bevel / Mirror ตาม Modeling intro
  4. ตั้ง origin + Apply Scale
  1. Unwrap UV (UV unwrapping)
  2. ใส่ Principled BSDF + Base Color
  3. (ทางเลือก) ใช้ texture จาก ternion-3d-assets-free textures
  1. Keyframe หมุนหรือเปิดฝา 2–3 วินาที (Keyframes)
  2. เล่นใน Timeline ให้เห็นชัด
  1. Export → glTF 2.0 → .glb ตาม glTF exporter
  2. โหลดใน Bitstream Studio (หรือเทียบกับโมเดลใน free assets)
  3. บันทึกสกรีนช็อต + ชื่อไฟล์ .glb ใน checklist

Pass when (Lab E): มีไฟล์ .glb และหลักฐานว่าเปิดในโฮสต์ได้ หรืออย่างน้อยเปิดใน Blender หลัง re-import ได้


  • device-model.json (หรือเทียบเท่า)
  • Lab A–C ผ่าน
  • device-model-checklist.md กรอกครบ
  • หลักฐานสคริปต์รัน (รูป/คลิป)
  • (แนะนำ) Lab D
  • (แนะนำ) Lab E + .glb

อาการ แนวทาง
โมเดลเขียนแล้วแต่จอไม่เปลี่ยน ยังไม่ Link / อยู่คนละโหมด Simulator–Bitstream
IMU ไม่ขยับ อยู่ซีน Environment หรือ Lab Quiet — สลับ Motion หรือกระตุ้นตามสคริปต์
Behavior ไม่เห็นผล ยังไม่ได้กำหนดจุดสังเกต (LED/UI/log) ให้ชัด
ค่าดู “ปลอม” เกินไป ปกติของ Simulator — จดในโมเดลว่าเป็น synthetic
ทำซ้ำไม่ได้ เขียนเวลาเป็นวินาที และเริ่มจาก default เดียวกันทุกครั้ง
GLB ไม่มี texture ลืม UV / ไม่ใช้ Principled / ปิด Materials ตอน export — ดู glTF materials
GLB ไม่มี animation Action ไม่ได้ active / ไม่ได้เปิด Animation ใน export
โมเดลใหญ่เกินไปใน Studio ลด subdivision · decimate · ตรวจสเกล

Lesson · Device checklist · Blender cheatsheet · Table of Contents · M04 →

อ้างอิงบทเรียนนี้

ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน

"แล็บ: สร้าง Virtual Device และ event script" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0

ข้อความอ้างอิงภาษาอังกฤษ: "Lab: Build a Virtual Device and Event Script" 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/m03-virtual-device/l02-lab/

บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C2/M03/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 ฉบับเต็ม

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

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