Virtual Device, behavior, event script และโมเดล 3D สำหรับ Twin
วิดีโอประกอบ
ดูบน YouTube (เปิดในแท็บใหม่)
-
ตอนที่ 1 - การสร้าง 3D Model ด้วยโปรแกรม onshape สมาคมสมองกลฝังตัวไทย (TESA) -
BS-07: Flow/Node Editor (The Basics) ผศ.ดร.สันติ นุราช (KMUTT) -
BS-08: Node Library ผศ.ดร.สันติ นุราช (KMUTT) -
BS-09: Inspector/Property Panel ผศ.ดร.สันติ นุราช (KMUTT) -
BS-11: 3D Object Transform Drivers ผศ.ดร.สันติ นุราช (KMUTT) -
BS-13: Graphics Settings ผศ.ดร.สันติ นุราช (KMUTT) -
BS-14: Animation Player ผศ.ดร.สันติ นุราช (KMUTT) -
BS-15: Animation Clips & Mixers ผศ.ดร.สันติ นุราช (KMUTT)
วิดีโอโดย สมาคมสมองกลฝังตัวไทย (TESA) · ผศ.ดร.สันติ นุราช ภาควิชาวิศวกรรมระบบควบคุมและเครื่องมือวัด คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี (KMUTT) · ดูทั้งชุดใน playlist AIoT Foundation
Course 2 · Module 3
Suggested time: ประมาณ 4–5 ชั่วโมง (Virtual Device + behavior/script + แนะนำ Blender สำหรับ Twin 3D)
Format: บทเรียนเชิงปฏิบัติ — ออกแบบ Virtual Device + พื้นฐาน Blender (Modeling / Texturing / Animation) เพื่อ visualization บน Twin
Lab · Device checklist · Blender cheatsheet · ← Table of Contents · ← M02 · M04 →
หมายเหตุ: ตารางในบทนี้อ้างปุ่ม scene ใน
ble-fletของ TESAIoT_Hackathon แต่ README ของ repo นั้น (commitf5f09a6) ระบุว่าble-flet/ไม่ได้เผยแพร่ ให้ใช้แผงใน Bitstream Studio แทน (ตรวจสอบเมื่อ 26 ก.ย. 2026)
เป้าหมาย (Learning Outcomes)
หัวข้อที่มีชื่อว่า “เป้าหมาย (Learning Outcomes)”เมื่อเรียนจบ คุณควรทำได้ดังนี้:
- สร้างและกำหนดค่า Virtual Device Model ให้สะท้อนบอร์ดเป้าหมายของหลักสูตร
- จำลองเซ็นเซอร์สำคัญ เช่น IMU, Temperature, Pressure, Switches
- กำหนด Behavior Simulation ให้เส้นทางอินพุต→สถานะตรวจสอบได้
- เขียน Event Simulation Script ที่รันซ้ำได้สำหรับ regression / การสาธิต
- อธิบายบทบาท Blender ในการสร้างโมเดล 3D สำหรับ Twin: Modeling, Texturing, Animation และเส้นทาง export glTF/GLB
- ใช้เอกสารออนไลน์ (Blender Manual / Fundamentals / Tutorial ภาษาไทย) และ ternion-3d-assets-free เพื่อศึกษาต่อด้วยตนเอง
โมดูลนี้ต่อจาก M02 ที่โฮสต์พร้อมแล้ว — ตอนนี้คุณจะออกแบบสิ่งที่ Twin จำลอง (ข้อมูล + รูปทรง 3D) ก่อนพาเฟิร์มแวร์มา co-sim ลึกใน M04
แนวทาง “โมเดลบนกระดาษ + รันบนเครื่องมือจริง + เตรียม 3D”
Virtual Device Configuration อธิบาย พฤติกรรม/เซ็นเซอร์
Blender เตรียม เปลือกภาพ ที่ Twin / Sensor Studio แสดง — หลักสูตรที่ 3 จะลงลึกงานออกแบบอุตสาหกรรม; ที่นี่เน้นทักษะพอสำหรับ Course 2
Read alongside this chapter
หัวข้อที่มีชื่อว่า “Read alongside this chapter”| เอกสาร | ใช้เมื่อ |
|---|---|
| M01 — Twin Architecture | Virtual Device อยู่ชั้นไหนของแพลตฟอร์ม |
| M02 — VS Code Twin | เปิด Simulator / Bitstream Studio ก่อนแล็บนี้ |
| Course 1 M05 — Sensor prep | ชนิดเซ็นเซอร์และความหมายของค่า |
| Bitstream Studio | โฮสต์ดูผลหลังตั้งโมเดล/ซีน |
| TESAIoT_Hackathon | ble-flet scene presets · web-app/ |
| ternion-3d-assets-free | โมเดล GLB / texture / รูป สำหรับ Twin |
| Blender Manual 4.5 LTS | คู่มือทางการ Modeling / Materials / Animation |
| Blender Fundamentals 4.5 LTS | คอร์สวิดีโอทางการจาก Blender Studio (อังกฤษ) |
| INC111-2021 Blender playlist (Thai) | Tutorial ภาษาไทยบน YouTube — แนะนำสำหรับผู้เรียนที่ต้องการคำอธิบายภาษาไทย |
| TESAIoT Developer Hub | ตัวอย่างเซ็นเซอร์ฝั่งเฟิร์มแวร์ |
| ตัวอย่างโมเดลแนวคิด | โครง JSON สำหรับแผ่นผลงาน |
| Blender cheatsheet | ลิงก์ด่วน Modeling / Texturing / Animation / glTF |
1. What Is a Virtual Device Model
หัวข้อที่มีชื่อว่า “1. What Is a Virtual Device Model”Virtual Device Model คือคำอธิบายซอฟต์แวร์ของอุปกรณ์หนึ่งเครื่องในโลก Twin โดยอย่างน้อยควรระบุ:
| ส่วน | คำถามที่ต้องตอบได้ |
|---|---|
| Identity | ชื่อ / รหัสอุปกรณ์คงที่สำหรับอ้างในรายงาน |
| Sensors | มีตัวอะไร · หน่วย · ค่าเริ่มต้น · ช่วงที่ยอมรับ |
| Actuators / outputs | LED, flag, log — สิ่งที่สังเกตผลได้ |
| Noise / dynamics (ถ้ามี) | ค่ากระโดดหรือมีสัญญาณรบกวนจำลองหรือไม่ |
| Behaviors | เมื่ออินพุต/คำสั่งเกิด แล้วสถานะเปลี่ยนอย่างไร |
| Events / scripts | สถานการณ์ตามเวลาที่รันซ้ำได้ |
โมเดลไม่ต้องจำลองทุกบล็อกในซิลิคอน — ต้องเพียงพอต่อการทดสอบ logic เฟิร์มแวร์ตามโจทย์ของแล็บ
| หยาบเกินไป | ละเอียดเกินจำเป็น |
|---|---|
| เทสไม่สะท้อนพฤติกรรมจริง | เสียเวลาตั้งค่าโดยไม่ได้เพิ่มการเรียนรู้ |
Key phrase
Virtual Device คือ ข้อตกลง ระหว่างสคริปต์เทสของคุณกับ Twin — ไม่ใช่ datasheet ทั้งเล่ม
1.1 Conceptual model document
หัวข้อที่มีชื่อว่า “1.1 Conceptual model document”เก็บโมเดลเป็นเอกสารที่ทีมอ่านซ้ำได้ — ตัวอย่างโครงใน sample-virtual-device.template.json:
{ "deviceId": "tesa-edge-demo-01", "displayName": "TESA Edge Demo Device", "sensors": [ { "id": "temp", "type": "temperature", "unit": "C", "default": 25.0, "min": -10.0, "max": 85.0 }, { "id": "btn_user", "type": "switch", "default": 0 }, { "id": "imu", "type": "imu", "axes": ["ax", "ay", "az"], "default": [0, 0, 1] } ], "actuators": [ { "id": "led_status", "type": "led", "default": 0 } ], "behaviors": [ { "when": "command.led == on", "then": "actuators.led_status = 1" }, { "when": "sensors.temp > 40", "then": "emit event threshold_exceeded" } ]}ไฟล์นี้เป็น template แนวคิดสำหรับเรียน — ฟิลด์จริงของเครื่องมืออาจชื่อต่างกัน ให้ map เข้า Simulator / scene / SENSOR_CFG ตามชุดที่ใช้
1.2 How the lab stack realizes the model
หัวข้อที่มีชื่อว่า “1.2 How the lab stack realizes the model”| ส่วนในโมเดล | สิ่งที่มักใช้รันจริงในคอร์สนี้ |
|---|---|
| Sensor list + rates | SENSOR_CFG / scene presets (Motion, Lab Quiet, Environment, …) |
| Continuous IMU / env values | Bitstream Simulator stream หรือบอร์ดจริง |
| Identity | ชื่ออุปกรณ์ / MAC topic / deviceId ในรายงาน |
| Behavior (command → output) | คำสั่งโฮสต์ / MQTT actuator / LED บนบอร์ดหรือ UI |
| Timed event script | ไทม์ไลน์ใน checklist + สลับซีน / กระตุ้นด้วยมือ / สคริปต์ตามเครื่องมือที่มี |
2. Modeling Sensors
หัวข้อที่มีชื่อว่า “2. Modeling Sensors”2.1 Sensor families in this course
หัวข้อที่มีชื่อว่า “2.1 Sensor families in this course”| ชนิด | ค่าที่มักจำลอง | เหมาะทดสอบ |
|---|---|---|
| IMU (เช่น BMI270) | accel / gyro (และ fusion ตามโหมด) | gesture, activity, orientation |
| Temperature / Humidity (เช่น SHT40) | สเกลาร์ต่อเนื่อง | threshold, calibration path |
| Pressure (เช่น DPS368) | สเกลาร์ต่อเนื่อง | environmental monitor |
| Magnetometer (เช่น BMM350) | แกนสนาม | heading / fusion lab |
| Switches / buttons | 0/1 หรือ edge | UI logic, debounce |
แนะนำลำดับเรียน:
- สวิตช์ + อุณหภูมิ (สังเกตผลชัด)
- เพิ่ม IMU เมื่อท่อข้อมูลพร้อม
- รวม env sensors เป็นชุด monitor
ทบทวนความหมายค่า: Course 1 M05
2.2 Rates and scenes (practical knobs)
หัวข้อที่มีชื่อว่า “2.2 Rates and scenes (practical knobs)”แทนการเปิดเผยทุกฟิลด์ wire ทันที โฮสต์แล็บมักมี scene presets ระดับ use-case:
| Scene (ตัวอย่างในแพ็กแล็บ) | ความหมายโดยประมาณ |
|---|---|
| Motion | IMU หนาแน่นขึ้น · env ช้า — เหมาะ posture / motion |
| Realtime | อัตราสูงขึ้นสำหรับดูรายละเอียดสั้น ๆ |
| Lab Quiet | ~1 Hz ทั้งชุด — ดีต่อการสาธิต / ประหยัด |
| Environment | เน้น SHT/DPS · ปิดหรือลด IMU |
ใน Bitstream / BLE labs การ apply scene มักหมายถึงชุด SENSOR_CFG (+ โหมด BMI270 / fusion ตามเครื่องมือ) — ผู้เรียนโฟกัสว่า โมเดลต้องการโปรไฟล์ไหน ไม่ต้องท่องทุกมิลลิวินาทีในวันแรก
2.3 Defaults, ranges, and honesty
หัวข้อที่มีชื่อว่า “2.3 Defaults, ranges, and honesty”เมื่อกรอกโมเดล ให้ระบุ:
| ฟิลด์ | ทำไมสำคัญ |
|---|---|
default |
ค่าตอนเริ่มสคริปต์ / ก่อนกระตุ้น |
min / max |
กันเทสที่อยู่นอกโลกจริงโดยไม่ตั้งใจ |
| unit | กันสับสน °C / Pa / g |
| “sim vs real” | ค่าจาก Simulator เป็น sine/สังเคราะห์ — ไม่ใช่ noise บอร์ดจริง |
3. Behavior Simulation
หัวข้อที่มีชื่อว่า “3. Behavior Simulation”Behavior คือกฎที่บอกว่าเมื่อเกิดอินพุตหรือคำสั่งแล้ว อุปกรณ์จำลอง (หรือเฟิร์มแวร์+โฮสต์) จะตอบสนองอย่างไร
3.1 Patterns worth practicing
หัวข้อที่มีชื่อว่า “3.1 Patterns worth practicing”| แบบ | ตัวอย่าง | สังเกตผลที่ |
|---|---|---|
| Command → actuator | led=on → LED สถานะเปิด |
UI / บอร์ด / log |
| Sensor → event | temp > 40 → threshold_exceeded |
event panel / MQTT / UART |
| Switch → mode | กดปุ่ม → เปลี่ยนโหมด publish | toolbar / stream rate |
| Host write → device | คำสั่งจาก Studio/MQTT | เฟิร์มแวร์ตอบสนอง |
เขียน behavior ให้ ทดสอบได้ทั้งขาเข้าและขาออก — ถ้ามีแต่ “ค่าขยับ” โดยไม่มีข้อตกลงว่าควรเกิดอะไร จะวัดไม่ได้ว่า logic ถูก
3.2 Keep behaviors small
หัวข้อที่มีชื่อว่า “3.2 Keep behaviors small”ใน M03 ขออย่างน้อย 1 เส้นทาง ที่เขียนเป็นประโยคชัด เช่น:
WHEN user_button rising edgeTHEN led_status = ON for 1 s AND log "btn"หรือ:
WHEN temperature > 40 °C for 2 sTHEN emit event "temp_high"ขยายจำนวน behavior ใน M04/M06 เมื่อ co-sim และ E2E พร้อม
4. Event Simulation Scripts
หัวข้อที่มีชื่อว่า “4. Event Simulation Scripts”Event Simulation Script ใช้สร้างสถานการณ์ตามเวลา ให้ regression และการสาธิตทำซ้ำได้
4.1 Timeline example
หัวข้อที่มีชื่อว่า “4.1 Timeline example”t = 0–2 s : idle (defaults)t = 2–5 s : temperature ramp +0.5 °C / stept = 5.0 s : press virtual switch ~200 mst = 6.0 s : short IMU shake pulset = 7–10 s : observe outputs / eventst = 10 s : stop or loop4.2 How to “run” a script in the lab
หัวข้อที่มีชื่อว่า “4.2 How to “run” a script in the lab”เลือกอย่างน้อยหนึ่งวิธีตามเครื่องมือที่มี:
| วิธี | เมื่อใช้ |
|---|---|
| Manual timeline | ทำตามนาฬิกา + โน้ต — ผ่านเกณฑ์ M03 ได้ |
| Scene switch | เริ่ม Lab Quiet → สลับ Motion ตอน t=6 เพื่อกระตุ้น IMU path |
| Host / app controls | ปุ่ม scene ใน ble-flet หรือแผง Studio |
| Formal script file | ถ้า Twin tooling ของรอบนั้นรองรับไฟล์สคริปต์ — แนบ path สัมพัทธ์ใน checklist |
สำคัญคือ ลำดับเหตุการณ์ + ผลที่คาด + หลักฐาน ไม่ใช่ภาษาสคริปต์เฉพาะ
4.3 Regression mindset
หัวข้อที่มีชื่อว่า “4.3 Regression mindset”เก็บสคริปต์/ไทม์ไลน์ไว้ในโฟลเดอร์แล็บของคุณ:
lab-notes/ device-model.json # จาก template event-script-v1.md # ไทม์ไลน์ evidence/ # สกรีนช็อตก่อน/หลังเมื่อแก้เฟิร์มแวร์ใน M04+ ให้รันสคริปต์ชุดเดิม — ถ้าผลเปลี่ยนโดยไม่ตั้งใจ คือสัญญาณ regression
5. Blender for Twin Visualization
หัวข้อที่มีชื่อว่า “5. Blender for Twin Visualization”Virtual Device ในส่วนก่อนหน้าอธิบาย ข้อมูลและพฤติกรรม — ส่วนนี้เตรียม ตัวแทนภาพ 3 มิติ ของผลิตภัณฑ์/บอร์ด เพื่อแสดงใน Digital Twin / Sensor Studio
Blender เป็นซอฟต์แวร์ 3D โอเพนซอร์สฟรี ที่หลักสูตรใช้เป็นเส้นทางหลักสู่ไฟล์ glTF / GLB ซึ่งโฮสต์เว็บและ Bitstream Studio รองรับ
| ชั้นงานใน M03 | สิ่งที่คุณฝึก | ปลายทาง Twin |
|---|---|---|
| Modeling | สร้างรูปทรง mesh ของเคส/บอร์ด | รูปทรงในฉาก 3D |
| Texturing | UV + material / texture | พื้นผิวที่ดูสมจริงบนโฮสต์ |
| Animation | keyframe / action สั้น ๆ | แสดงกลไกเปิด-ปิด หรือ motion demo |
| Export | .glb |
โหลดใน Studio / เทียบกับ ternion-3d-assets-free |
Course 2 vs Course 3
ที่นี่ให้ พื้นฐานที่ใช้งานกับ Twin ได้
หลักสูตร Product Industrial Design (Blender & Twin) จะลงลึก casing, industrial workflow, validation และ prototype — อย่ารอ Course 3 ถ้าต้องการแค่โมเดลประกอบ telemetry ใน Course 2
แผ่นลิงก์ด่วน: blender-twin-cheatsheet.md
5.1 Getting Blender and the UI
หัวข้อที่มีชื่อว่า “5.1 Getting Blender and the UI”- ดาวน์โหลดจาก blender.org/download
- อ่านภาพรวมอินเทอร์เฟซ: User Interface (Manual 4.5)
- คู่มือฉบับเต็ม: Blender 4.5 LTS Manual หรือ latest
- เส้นทางวิดีโอทางการ (อังกฤษ): Blender Fundamentals 4.5 LTS
- เส้นทางวิดีโอ ภาษาไทย: INC111-2021 YouTube playlist
โหมดที่พบบ่อยตอนสร้างโมเดลอุปกรณ์:
| Mode | ใช้เมื่อ | อ่านเพิ่ม |
|---|---|---|
| Object Mode | ย้าย/หมุน/สเกลทั้งชิ้น, รวมอ็อบเจกต์ | Scenes & Objects |
| Edit Mode | แก้จุด ขอบ หน้า (mesh) | Mesh introduction |
| Shading workspace | จัด material / texture nodes | Materials |
| Animation editors | Timeline, Dope Sheet, Graph Editor | Animation intro |
5.2 Modeling (สร้างรูปทรง)
หัวข้อที่มีชื่อว่า “5.2 Modeling (สร้างรูปทรง)”Modeling ใน Blender มักเริ่มจาก mesh primitive (cube, cylinder, plane…) แล้วเข้า Edit Mode เพื่อขึ้นรูป — ตาม Mesh Modeling introduction
ทักษะหลักที่ควรรู้ใน Course 2
หัวข้อที่มีชื่อว่า “ทักษะหลักที่ควรรู้ใน Course 2”| ทักษะ | ทำไมสำคัญต่อ Twin | เอกสาร |
|---|---|---|
| เลือก / Extrude | สร้างผนังเคส, ขอบหนา | Extrude |
| Loop Cut / Bevel | ขอบมน, แบ่งหน้าสำหรับ UV | Loop Cut · Bevel |
| Modifiers (Mirror, Solidify, Subdivision) | สร้างสมมาตร/ความหนาโดยไม่ทำซ้ำมือ | Modifiers |
| Apply Scale / origin | กันโมเดลบิดเมื่อใส่ Twin หรือ animation | Transforms |
เวิร์กช็อปวิดีโอ: Fundamentals — Modeling chapter
แนวทางสำหรับโมเดลอุปกรณ์ Edge / DevKit
หัวข้อที่มีชื่อว่า “แนวทางสำหรับโมเดลอุปกรณ์ Edge / DevKit”- ตั้งหน่วยเป็น เมตร (หรืออย่างน้อยสเกลสม่ำเสมอทั้งฉาก)
- วาง origin ที่จุดที่มีความหมาย (มุมบอร์ด, แกนหมุนฝา, จุดวางบนโต๊ะ)
- แยกชิ้นส่วนที่อาจขยับ (ฝา, ปุ่ม, LED) เป็น object คนละชิ้นถ้าจะ animate
- คุมจำนวน polygon — webview Twin ไม่ต้องการ denseness ระดับฟิล์ม
- เปรียบเทียบสไตล์กับโมเดลใน ternion-3d-assets-free
/assets/models
Key phrase
Modeling ที่ดีสำหรับ Twin = อ่านรูปได้ + สเกลจริง + origin ชัด + พร้อม UV — ไม่ใช่รายละเอียดที่ render ภาพโฆษณาเท่านั้น
ศึกษาต่อ (Modeling):
- Modeling section index (4.5)
- Edit Mode mesh tools
- Geometry Nodes (ขั้นสูง — ไม่บังคับ M03)
5.3 Texturing (วัสดุและพื้นผิว)
หัวข้อที่มีชื่อว่า “5.3 Texturing (วัสดุและพื้นผิว)”Texturing ในบริบท Twin = ทำให้ผิวโมเดลมีสี / ความเงา / ลาย ที่ export ออกไป glTF ได้
แนวคิดหลัก
หัวข้อที่มีชื่อว่า “แนวคิดหลัก”| แนวคิด | ความหมายสั้น | เอกสาร |
|---|---|---|
| Material | คำอธิบายผิวบน object | Materials introduction |
| Principled BSDF | โหนด PBR มาตรฐานที่ glTF เข้าใจดี | Principled BSDF |
| UV map | พิกัดคลี่ผิว 2D ลงบน texture | UV editing · Unwrapping |
| Image texture | ไฟล์รูป (albedo / roughness / …) | Image Texture node |
| Texture Paint | วาดลายบนโมเดลโดยตรง | Texture Paint |
Workflow ที่แนะนำสำหรับ Course 2
หัวข้อที่มีชื่อว่า “Workflow ที่แนะนำสำหรับ Course 2”Mesh ready → Unwrap UV (Smart UV Project หรือมือ) → Principled BSDF → Base Color (± Roughness / Metallic maps) → Check in Material Preview / EEVEE → Export GLB (materials + UVs on)ตาม glTF 2.0 exporter:
- วัสดุหลักที่ export ได้ดีคือ Metal/Rough PBR จาก Principled BSDF
- ควบคุม UV ด้วยการต่อ UV Map (+ Mapping) เข้า Image Texture
- Unlit/shadeless มี path แยกในคู่มือ exporter ถ้าต้องการผิวแบน
แหล่ง texture / cubemap พร้อมใช้ในระบบ Ternion:
- Browse: assets/textures
- Sync ใน Studio: Download Free Assets from GitHub (ดู M02 §2.6)
ศึกษาต่อ (Texturing / shading):
- Shader Nodes
- EEVEE / Cycles (render ใน Blender — Twin ใช้ไฟล์ export เป็นหลัก)
- glTF materials section
5.4 Animation (การเคลื่อนไหว)
หัวข้อที่มีชื่อว่า “5.4 Animation (การเคลื่อนไหว)”Animation ช่วยสาธิต พฤติกรรมผลิตภัณฑ์ บน Twin เช่น เปิดฝา, กดปุ่ม, หมุนแขน — สอดคล้องกับ behavior/event script ฝั่งข้อมูล
แนวคิดหลัก
หัวข้อที่มีชื่อว่า “แนวคิดหลัก”| แนวคิด | ความหมายสั้น | เอกสาร |
|---|---|---|
| Keyframe | จุดเวลาที่บันทึกค่า transform/property | Keyframes |
| Action | ชุด keyframe ของอ็อบเจกต์ | Actions |
| Armature / bones | โครงกระดูกสำหรับชิ้นส่วนซับซ้อน | Armatures |
| Shape keys | Morph รูปทรง (ฝาอ่อน, ยาง) | Shape Keys |
| Constraints | จำกัดการเคลื่อนตามกฎ | Constraints |
ภาพรวม: Animation & Rigging introduction
สิ่งที่มักพาไป Twin ได้ (ผ่าน glTF)
หัวข้อที่มีชื่อว่า “สิ่งที่มักพาไป Twin ได้ (ผ่าน glTF)”ตามคู่มือ glTF 2.0:
| รองรับโดยทั่วไป | มักไม่ไป / ถูกมองข้าม |
|---|---|
| Keyframe ของ location / rotation / scale | Animation ของไฟ / material บางชนิด |
| Skinning (armature) | Driver ซับซ้อนที่ไม่ได้ bake |
| Shape key animation | Logic เฉพาะใน Blender ที่ไม่ได้ export |
เคล็ดลับ export animation:
- ทำให้ action เป็น active หรือจัด NLA ตามที่ exporter กำหนด
- ทดสอบเล่นใน Blender ก่อน export
- เปิดตัวเลือก Animation ในหน้าต่าง glTF export
- ตรวจใน Bitstream Studio / viewer ว่าคลิปเล่นได้
เชื่อมกับ Virtual Device
Timeline ใน §4 (event script) = เหตุการณ์ข้อมูล
Timeline ใน Blender = เหตุการณ์ภาพ
ใน Capstone (M06) พยายามให้สองเส้นนี้เล่าเรื่องเดียวกัน
ศึกษาต่อ (Animation):
5.5 Export to Twin — glTF / GLB
หัวข้อที่มีชื่อว่า “5.5 Export to Twin — glTF / GLB”รูปแบบที่แนะนำสำหรับ Bitstream Studio / Twin เว็บ: glTF Binary (.glb) ไฟล์เดียวรวม mesh + materials + (ถ้ามี) animation
| ขั้น | การกระทำ | อ้างอิง |
|---|---|---|
| 1 | Apply transforms ที่จำเป็น, ตรวจ origin | Manual transforms |
| 2 | UV + Principled พร้อม | §5.3 |
| 3 | Animation พร้อม (ถ้ามี) | §5.4 |
| 4 | File → Export → glTF 2.0 | glTF 2.0 add-on (4.5) |
| 5 | เลือก glTF Binary (.glb) · เปิด Meshes / Materials / (Animations) | หน้าต่าง export |
| 6 | โหลดใน Bitstream Studio หรือเทียบกับแพ็ก ternion-3d-assets-free | M02 Free Loader |
มาตรฐานอุตสาหกรรม: Khronos glTF
รูปแบบอื่น (FBX/OBJ/STL) มีที่ใช้ตอน prototype/พิมพ์ 3D — Course 3 จะพูดลึกกว่า; ใน Course 2 ให้โฟกัส GLB สำหรับ Twin
5.6 Suggested self-study path (Blender)
หัวข้อที่มีชื่อว่า “5.6 Suggested self-study path (Blender)”ถ้าต้องการฝึกเพิ่มเอง (~2–4 ชม. เพิ่ม):
ตัวเลือกภาษาไทย (แนะนำถ้าต้องการคำบรรยายไทย): ดู INC111-2021 playlist คู่กับแบบฝึกใน Lab E — ใช้ Manual ภาษาอังกฤษเมื่อต้องการรายละเอียดเครื่องมือล่าสุด
ตัวเลือกทางการ (อังกฤษ):
- Fundamentals 4.5 — start
- ทำบท Modeling จนได้ชิ้นส่วนง่าย ๆ
- อ่าน Principled BSDF + unwrap หนึ่งชิ้น
- ใส่ keyframe หมุน/เปิดฝา 2–3 วินาที
- Export
.glbแล้วลองใน Studio - เทียบคุณภาพกับโมเดลใน assets/models
UI ของ Blender เปลี่ยนตามเวอร์ชัน — ถ้าคลิปไทยใช้เวอร์ชันเก่า ให้ยึดปุ่ม/เมนูจาก Manual 4.5+ เป็นหลัก และใช้คลิปเป็นแนวคิด workflow
6. Design Checklist Before You Build
หัวข้อที่มีชื่อว่า “6. Design Checklist Before You Build”ก่อนลงมือ Lab ตอบให้ได้:
- อุปกรณ์นี้ทดสอบ logic ข้อไหน ของเฟิร์มแวร์/ผลิตภัณฑ์
- เซ็นเซอร์ขั้นต่ำที่ต้องมีมีอะไรบ้าง (อย่างน้อย 2 ชนิด)
- Behavior หนึ่งเส้นสังเกตที่จอไหน
- สคริปต์เหตุการณ์ใช้เวลากี่วินาที และใครรันซ้ำได้บ้างในทีม
- (แนะนำ) จะใช้โมเดล 3D จาก Blender หรือจาก ternion-3d-assets-free
แผ่นกรอก: device-model-checklist.md · blender-twin-cheatsheet.md
Next Steps
หัวข้อที่มีชื่อว่า “Next Steps”- ทำแล็บ Virtual Device: แล็บ
- กรอก checklist + แนบโมเดล/ไทม์ไลน์
- (แนะนำ) Lab Blender — export GLB หนึ่งชิ้น
- เมื่อพร้อม ไปต่อ M04 — Firmware–Twin Co-simulation
References and Further Reading
หัวข้อที่มีชื่อว่า “References and Further Reading”Course / host
หัวข้อที่มีชื่อว่า “Course / host”- M01 Twin Architecture · M02 VS Code Twin
- Course 1 M05 Sensors
- Bitstream Studio
- TESAIoT_Hackathon
- TESAIoT Developer Hub
- ternion-3d-assets-free —
assets/ - sample-virtual-device.template.json
- blender-twin-cheatsheet.md
Blender — official manuals & training
หัวข้อที่มีชื่อว่า “Blender — official manuals & training”- Blender download
- Blender Manual 4.5 LTS · Manual (latest)
- Modeling — meshes introduction
- Modeling section
- Materials introduction
- Principled BSDF
- UV editing · UV unwrapping
- Texture Paint
- Animation introduction
- Keyframes · Actions
- Armatures · Shape Keys
- glTF 2.0 importer/exporter (4.5)
- Blender Fundamentals 4.5 LTS
- Fundamentals — Modeling chapter
- INC111-2021 Blender tutorial playlist (Thai)
- Khronos glTF
เช็กความเข้าใจ
หัวข้อที่มีชื่อว่า “เช็กความเข้าใจ”คำถามสั้นสามข้อใน quiz.yaml ผูกกับเป้าหมายของบทเรียนนี้ข้อละหนึ่งคำถาม ลองตอบเองก่อน แล้วค่อยเทียบกับเฉลยและคำอธิบายในไฟล์
ลงมือต่อที่ แล็บ: สร้าง Virtual Device และ event script
Lab · Device checklist · Blender cheatsheet · ← Table of Contents · ← M02 · M04 →
คำถามทบทวน
ลองตอบเองก่อน แล้วค่อยเปิดดูเฉลย
-
ทำไมต้องใส่ `min` / `max` ให้เซ็นเซอร์ในโมเดล (เป้าหมายข้อ 1)
- เพื่อให้ Simulator ทำงานเร็วขึ้น
- เพราะรูปแบบ glTF บังคับ
- เพื่อใช้เป็นชื่ออุปกรณ์ในรายงาน
- เพื่อกันเทสที่อยู่นอกโลกจริงโดยไม่ตั้งใจ
ดูเฉลย
คำตอบ: D. เพื่อกันเทสที่อยู่นอกโลกจริงโดยไม่ตั้งใจ
ตารางในหัวข้อ 2.3 Defaults, ranges, and honesty
-
ข้อใดเป็น behavior ที่ “ทดสอบได้” ตามแนวทางของบทเรียน (เป้าหมายข้อ 2)
- เปิด Simulator ค้างไว้ทั้งวัน
- WHEN temperature > 40 °C for 2 s THEN emit event "temp_high"
- ค่าอุณหภูมิขยับบนกราฟ
- โมเดล 3D ดูสมจริงขึ้น
ดูเฉลย
คำตอบ: B. WHEN temperature > 40 °C for 2 s THEN emit event "temp_high"
หัวข้อ 3.1–3.2: behavior ต้องมีข้อตกลงว่าเมื่ออินพุตเกิดแล้วควรเกิดอะไร ถ้ามีแต่ค่าขยับจะวัดไม่ได้ว่า logic ถูก
-
รูปแบบไฟล์ที่บทเรียนแนะนำสำหรับส่งโมเดลเข้า Bitstream Studio / Twin เว็บ (เป้าหมายข้อ 3)
- STL
- OBJ
- .blend
- glTF Binary (.glb)
ดูเฉลย
คำตอบ: D. glTF Binary (.glb)
หัวข้อ 5.5: .glb เป็นไฟล์เดียวที่รวม mesh, materials และ animation ส่วน STL/OBJ/FBX ใช้ในงานต้นแบบ
อ้างอิงบทเรียนนี้
ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน
"Virtual Device, behavior, event script และโมเดล 3D สำหรับ Twin" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0
ข้อความอ้างอิงภาษาอังกฤษ: "Virtual Devices, Behaviours, Event Scripts and 3D Models for the 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/m03-virtual-device/l01-virtual-device-modeling/
บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C2/M03/README.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