DATE : 4 มิถุนายน 2567
เริ่มต้นการฝึกงานด้วยการประชุมผ่านแอพพลิเคชั่น Zoom กับพี่เลี้ยง โดยสรุปเนื้อหามีการพูดคุยเรื่องของงานที่จะได้ทำในช่วงเวลา 2 เดือนของการฝึกงาน และงานที่ได้รับมอบหมายงานเเรก เนื่องด้วยช่วงเวลาวันที่ 4 มิถุนายน 2567 – วันที่ 7 มิถุนายน 2567 ได้ทำการขออนุญาตลางาน
งานที่ได้รับมอบหมาย
- ศึกษา และค้นคว้าข้อมูลเกี่ยวกับ MQTT และการใช้งานร่วมกันกับ Unity
โดยเนื้อหาหลักของข้อมูล ศึกษาจากเว็บไซต์ดังต่อไปนี้ https://hcilab.net/learning/
_____________________________________________
DATE : 5 มิถุนายน 2567
งานที่ทำในวันนี้
- อัพเดทการค้นคว้าข้อมูลเกี่ยวกับ MQTT และUnity
_____
อัพเดทการค้นคว้าข้อมูลเกี่ยวกับ MQTT และUnity
MQTT (Message Queuing Telemetry Transport) คือ โปรโตคอลการส่งข้อความที่ออกแบบมาเพื่อการสื่อสารระหว่างอุปกรณ์ที่มีข้อจำกัดด้านพลังงาน และการเชื่อมต่อที่ไม่เสถียร ซึ่งมักใช้ในระบบ IoT (Internet of Things)
คุณสมบัติของ MQTT
- การส่งข้อความแบบ publish/subscribe: อุปกรณ์สามารถส่งข้อมูล (publish) ไปยังหัวข้อ (topic) และรับข้อมูล (subscribe) จากหัวข้อนั้นได้
- การเชื่อมต่อที่น่าเชื่อถือ: รองรับการส่งข้อความในระดับต่างๆ (Quality of Service – QoS)
- น้ำหนักเบา: โปรโตคอลนี้ออกแบบมาให้ใช้แบนด์วิธน้อย และการประมวลผลน้อย
- ประสิทธิภาพสูง: ใช้ในการส่งข้อมูลในระบบที่มีข้อจำกัดด้านทรัพยากร เช่น อุปกรณ์ IoT ที่ใช้พลังงานต่ำ
- การรองรับการเชื่อมต่อหลากหลาย: สามารถใช้งานได้ทั้งบนเครือข่ายอินเตอร์เน็ต และLocal Host
การทำงานของ MQTT
MQTT Client คือแอปพลิเคชันหรืออุปกรณ์ที่ใช้ไลบรารีของ MQTT ในการสื่อสาร ซึ่งสามารถทำหน้าที่เป็นผู้ส่งข้อความ (Publisher) หรือผู้รับข้อความ (Subscriber)
- เซ็นเซอร์ ที่ใช้ MQTT เพื่อรายงานข้อมูลเซ็นเซอร์ เช่น อุณหภูมิ, ความชื้น หรือสถานะของอุปกรณ์
- แอปพลิเคชันการส่งข้อความทันที ที่ใช้ MQTT เพื่อส่งและรับข้อความระหว่างผู้ใช้
- เครื่องมือทดสอบ MQTT ที่ใช้เพื่อทดสอบและตรวจสอบการทำงานของ MQTT เช่น MQTT X, HiveMQ
MQTT Broker คือเซิร์ฟเวอร์ที่ทำหน้าที่จัดการการเชื่อมต่อและตัดการเชื่อมต่อของ MQTT Clients รวมถึงการสมัครสมาชิก และยกเลิกการสมัครสมาชิก และการกระจายข้อความระหว่าง Clients โดยทำหน้าที่เป็นตัวกลางระหว่างผู้ส่งข้อความ (Publisher) และผู้รับข้อความ (Subscriber)
- จัดการการเชื่อมต่อ และตัดการเชื่อมต่อของ Clients: รองรับการเชื่อมต่อหลายการเชื่อมต่อพร้อมกัน
- จัดการคำขอสมัครสมาชิกและยกเลิกการสมัครสมาชิก: Clients สามารถสมัครรับข้อมูลจากหัวข้อ (Topic) ที่สนใจและยกเลิกการสมัครได้
- จัดการการกระจายข้อความ: รับข้อความจากผู้ส่งข้อความ (Publisher) และกระจายข้อความนั้นไปยังผู้รับข้อความ (Subscriber) ที่สมัครรับหัวข้อ (Topic) นั้น
Publish–Subscribe ของ MQTT
รูปแบบการทำงานแบบ Publish–Subscribe ของ MQTT แตกต่างจากรูปแบบ Client-Server ตรงที่แยกผู้ส่งข้อความ (Publisher) ออกจากผู้รับข้อความ (Subscriber)
การทำงานแบบ Publish–Subscribe ของ MQTT
- Publisher: เป็น Client ที่ส่งข้อความไปยังหัวข้อ (Topic) ที่กำหนด
- Subscriber: เป็น Client ที่สมัครรับข้อความจากหัวข้อ (Topic) ที่สนใจ
ทั้ง Publisher และSubscriber ไม่จำเป็นต้องสร้างการเชื่อมต่อโดยตรงระหว่างกัน MQTT Broker จะรับผิดชอบในการจัดการเส้นทาง และกระจายข้อความทั้งหมด
ตัวอย่างกระบวนการ Publish/Subscribe ของ MQTT
- การเชื่อมต่อของ Publisher: เซ็นเซอร์วัดอุณหภูมิ (Temperature Sensor) เชื่อมต่อกับเซิร์ฟเวอร์ MQTT ในฐานะ Client
- การส่งข้อความ: เซ็นเซอร์วัดอุณหภูมิส่งข้อมูลอุณหภูมิไปยังหัวข้อ (Topic) เช่น “Temperature”
- การรับข้อความของ Broker: เซิร์ฟเวอร์ MQTT (MQTT Broker) รับข้อความที่ถูกส่งเข้ามา
- การกระจายข้อความ: เซิร์ฟเวอร์ MQTT กระจายข้อความไปยัง Client ที่สมัครรับหัวข้อ “Temperature” ไว้
เมื่อศึกษาข้อมูลเกี่ยวกับ MQTT แล้วนั้น ได้ตัดสินใจจะเลือกใช้ MQTT X เป็น Client ในการเชื่อมต่อ Unity กับBroker ด้วยการใช้ไลบรารี่ M2Mqtt
________________________________________________
DATE : 10 มิถุนายน 2567
งานที่ทำในวันนี้
- ศึกษา และทดลองการทำงานของ Unity ร่วมกับ MQTT โดยใช้ไลบรารี่M2Mqtt และมีClient Tools กับ Broker เป็น HiveMQ
____
ศึกษา และทดลองการทำงานของ Unity ร่วมกับ MQTT โดยใช้ไลบรารี่M2Mqtt และมีClient Tools กับ Broker เป็น HiveMQ
การเชื่อมต่อกับ MQTT broker ประกอบด้วยตัวแปรต่าง ๆ ในการเชื่อมต่อ เช่น Host Address หรือ Broker Address ซึ่งเป็นโดเมนของโบรคเกอร์ และ Port ที่ใช้ในการเชื่อมต่อโบรคเกอร์ โดยมีโปรโตคอลที่หลากหลายถูกใช้ในการสื่อสารกับโบรคเกอร์ ดังนี้
- TCP (Transmission Control Protocol ;Port 1883): โปรโตคอลพื้นฐานสำหรับการเชื่อมต่อ MQTT แบบไม่มีการเข้ารหัสข้อมูล
- WebSocket (Port 8083): โปรโตคอลที่อนุญาตให้เกิดการเชื่อมต่อแบบ two-way ระหว่างไคลเอนต์และเซิร์ฟเวอร์ มักจะใช้ในแอปพลิเคชันที่ต้องการการสื่อสารแบบ real-time เช่น เว็บแอปพลิเคชัน
- SSL/TLS (Secure Sockets Layer/Transport Layer Security ;Port 8883): โปรโตคอลที่ใช้ในการเข้ารหัสข้อมูล เพื่อให้การสื่อสารมีความปลอดภัย
- Secure WebSocket (WebSocket over SSL/TLS;Port 8084): การเชื่อมต่อ WebSocket ที่มีการเข้ารหัสข้อมูลด้วย SSL/TLS ทำให้การสื่อสารมีความปลอดภัยมากยิ่งขึ้น
Online Broker HiveMQ : https://www.hivemq.com/demos/websocket-client/
สามารถศึกษา และทำตามขั้นตอนต่างๆใน Using MQTT in Unity with M2MqttUnity Library: A Step-by-Step Guide และหากต้องการเชื่อมต่อกับ HiveMQ ให้เปลี่ยน Broker Address และ หมายเลข Port เป็นดังนี้
- Broker Address: mqtt-dashboard.com
- Port: 1883
ขั้นตอนการทดลอง และผลลัพธ์การทดลองศึกษา
- การเชื่อมต่อระหว่าง HiveMQ และUnity : เชื่อมต่อไปยังที่อยู่ Broker ของ HiveMQ โดยใช้Broker Address : mqtt-dashboard.com และPort 1883 หลังจากนั้นจึงกด Connect
- ทดสอบการส่งข้อมูลจาก Unity ไปที่ HiveMQ : เชื่อมต่อไปยังที่อยู่ Broker ของ HiveMQ ด้วย Broker Address ของ HiveMQ และPort 1883 ,ใน HiveMQ Client กด Subscribe ที่ Topic เดียวกันกับใน Unity เพื่อตรวจสอบผลลัพธ์ของการส่ง Message จาก Unity ไปยัง HiveMQ
- ทดสอบการรับข้อมูลจาก HiveMQ ไปที่ Unity : ใน HiveMQ Client แก้ไข Topic เป็น M2MQTT_Unity/test พร้อมเขียนข้อความและ กด Publish เพื่อตรวจสอบผลลัพธ์ของการรับค่า Message จาก HiveMQ มายัง Unity
- ทดสอบการรับค่าจากเซ็นเซอร์มาแสดงผล : Subcribe Topic เดียวกันกับเซ็นเซอร์ และดึงค่าข้อมูลที่ส่งมาทาง Message
________________________________________________
DATE : 11 มิถุนายน 2567
งานที่ทำในวันนี้
- ทดลองเปลี่ยน Broker จาก HiveMQ เป็น EMQX และทดสอบการทำงานร่วมกับฝั่ง Hardware ผ่าน LAN และ Network โดยการใช้ Ngrok
___
ทดลองเปลี่ยน Broker จาก HiveMQ เป็น EMQX และทดสอบการทำงานร่วมกับฝั่ง Hardware ผ่าน LAN และ Network โดยการใช้ Ngrok
ขั้นตอนการทดลอง และผลลัพธ์การทดลองศึกษา
- การติดตั้ง EMQX ด้วย Docker Desktop : เมื่อโหลด Docker Desktop แล้ว เปิด Command Prompt และทำตามขั้นตอนในเว็บไซต์
- ขั้นตอนการติดตั้ง : https://docs.emqx.com/en/emqx/latest/deploy/install-docker.html
- การเชื่อมต่อระหว่าง Unity และEMQX: เมื่อรัน และล็อคอิน EMQX เป็นที่เรียบร้อย จะสังเกตุได้ว่า EMQX นั้นทำงานอยู่บน Local Host สำหรับการทดสอบการระหว่าง Unity และ EMQX ให้เชื่อมต่อไปยังที่อยู่ Broker ของ EMQXโดยใช้Broker Address เป็น IP Address ของเรา และPort 1883 หลังจากนั้นจึงกด Connect
- IP Address หาได้จากการใช้คำสั่ง ipconfig ใน Command Prompt
- สังเกตุการส่งข้อมูล และการรับข้อมูลผ่านโปรแกรม MQTT X : เมื่อเชื่อมต่อระหว่าง Unity และEMQX ได้แล้ว สามารถตรวจสอบMessage ที่ส่งผ่าน Broker EMQX ได้ด้วยโปรแกรม MQTTX โดยเริ่มการ Connect กับEMQX และทดสอบ Subscribe หัวข้อ Topic เดียวกันกันกับ Unity คือ M2MQTT_Unity/test
- ทดสอบการทำงานร่วมกันกับฝั่ง Hardware ผ่าน LAN : ทดสอบเชื่อมต่อ LAN เดียวกันทั้งฝั่ง Server และเซ็นเซอร์เพื่อสังเกตุว่ามีการส่งค่าข้อมูลของเซ็นเซอร์ โดยให้ฝั่งเซ็นเซอร์ใช้ Broker Address เป็น IP Address ของเครื่อง Serverและใช้Port 1883 ซึ่งสัญญาณWifi ทั้ง 2 เครื่องจะต้องเป็นสัญญาณ Wifi เดียวกัน
- ทดสอบการทำงานร่วมกันกับฝั่ง Hardware ผ่าน Network : ติดตั้ง และเปิดการทำงาน Ngrok ผ่าน Docker Desktop โดยสามารถทำได้ตามเว็บไซต์ดังนต่อไปนี้ https://dashboard.ngrok.com/get-started/setup/docker โดยเปลี่ยนจาก http 80 เป็น tcp 1883 เพื่อสร้าง tunnel สำหรับ port 1883 หลังจากนั้นจึงเปลี่ยน Broker Address และ IP Address ทั้งฝั่งการเชื่อมต่อของ Hardware และแก้ Script ที่ใช้เชื่อมต่อระหว่าง EMQX และ Unity โดยจากภาพตัวอย่างมี Broker Address เป็น 0.tcp.ap.ngrok.io และ port 12655 สำหรับเชื่อมต่อMQTT ผ่าน Network
____________________________________________________________
DATE : 12 มิถุนายน 2567
งานที่ทำในวันนี้
- ทดลองการใช้งาน Vuforia ร่วมกับ Unity และEMQX เพื่อสร้างโปรแกรมสำหรับตรวจจับโมเดล หรือวัตถุจริงเพื่อแสดงข้อมูลต่างๆบนหน้าจอแอปพลิเคชั่นด้วย Model Target
- ศึกษาการกำหนดการเข้าใช้งานBrokerของ Client
____
ทดลองการใช้งาน Vuforia ร่วมกับ Unity และEMQX เพื่อสร้างโปรแกรมสำหรับตรวจจับโมเดล หรือวัตถุจริงเพื่อแสดงข้อมูลต่างๆบนหน้าจอแอปพลิเคชั่นด้วย Model Target
Model Target คือ หนึ่งในฟีเจอร์ของ Vuforia ที่ช่วยให้สามารถรู้จำและติดตามวัตถุ 3D ที่ซับซ้อนได้ เช่น โมเดลของเครื่องจักร, อุปกรณ์อิเล็กทรอนิกส์, ยานพาหนะ หรือวัตถุอื่นๆ ที่มีรูปร่างเฉพาะตัว ฟีเจอร์นี้ช่วยให้สามารถสร้างประสบการณ์ AR ที่มีความแม่นยำสูง และสามารถอินเตอร์แอคทีฟกับวัตถุจริงได้อย่างสมจริง
ขั้นตอนการทดลอง และผลลัพธ์การทดลองศึกษา
- ติดตั้ง และตั้งค่า Vuforia ลงบน Unity : การติดตั้ง และตั้งค่า Vuforia ลงบน Unity
- สามารถศึกษาได้จากเว็บไซต์ : Getting Started with Vuforia Engine in Unity
- วิดีโอแสดงขั้นตอน และวิธีการติดตั้ง /ตั้งค่า : Vuforia Unity Tutorial – How to configure Vuforia with Unity
- เทรนโมเดลที่จะใช้เป็น Target สำหรับ AR ด้วยโปรแกรม Model Target Generator : เตรียมไฟล์โมเดล 3D ของวัตถุที่ต้องการ และนำเข้าไปในโปรแกรม Model Target Generator เพื่อเทรนโมเดลสำหรับการนำไปใช้ในโปรแกรม Unity ซึ่งจะใช้เวลาเทรนขึ้นอยู่กับความละเอียดในการเทรนที่ต้องการ จากโปรเจคนี้ใช้เวลาในการเทรน 4 ชั่วโมง
- วิดีโอแสดงขั้นตอนการเทรนโมเดลใน Model Target Generator : Vuforia Unity Tutorial – Model Targets
- ลิงก์โหลดโมเดลที่ใช้ในการเทรน และปริ้นสามมิติเพื่อนำมาใช้งาน : Wat Phan Tao – Teak Temple – Chiang Mai , Thailand
- ทดลองใช้โมเดลเทรนร่วมกับ Vuforia และUnity
- วิดีโอแสดงขั้นตอนการตั้งค่าเตรียมพร้อมสำหรับการรัน : Vuforia Engine: How to Create Model Targets
- ทดสอบการทำงานร่วมกันของ Unity&Vuforia, MQTT Xและ EMQX
ศึกษาการกำหนดการเข้าใช้งานBrokerของ Client
Broker EMQX สามารถกำหนด Permission ของ User ที่จะเข้ามาใช้งานได้ที่ Authentication โดยเบื่องต้นต้องทำการสร้าง Database เพื่อเก็บข้อมูลของ User ที่ได้รับอนุญาตในการเชื่อมต่อกับ Broker
EMQX เป็นโบรคเกอร์ที่มีความสามารถในการตรวจสอบการเข้าถึงของผู้ใช้ (Client) เพื่อยืนยันว่าผู้ใช้มีสิทธิ์ในการเชื่อมต่อกับโบรคเกอร์หรือไม่ นอกจากนี้ยังสามารถกำหนดสิทธิ์ในการใช้งานของผู้ใช้ได้ด้วย Access Control
Access Control
- Authentication (การยืนยันตัวตน): การตรวจสอบและยืนยันตัวตนของผู้ใช้งานหรืออุปกรณ์ที่ต้องการเชื่อมต่อกับโบรคเกอร์เพื่อให้แน่ใจว่าผู้ใช้งานหรืออุปกรณ์นั้นมีสิทธิ์ในการเข้าถึงและใช้งานระบบด้วยกากำหนดค่า username และ password ดังนั้นผู้ใช้งานหรืออุปกรณ์ต้องระบุ username และ password เพื่อทำการเชื่อมต่อกับโบรคเกอร์ทุกครั้ง
- Authorization (การอนุญาต): การกำหนดว่าผู้ใช้งานหรืออุปกรณ์ที่ผ่านการยืนยันตัวตนแล้วมีสิทธิ์ในการเข้าถึงและดำเนินการต่างๆ กับทรัพยากรหรือบริการในระบบอย่างไร เช่น การสมัครรับข้อมูล (subscribe) การส่งข้อมูล (publish) ไปยังหัวข้อ (topic) ต่างๆ ซึ่งสามารถระบุสิทธิ์ในการเข้าถึงหัวข้อต่างๆ สำหรับผู้ใช้งานหรืออุปกรณ์ที่เฉพาะเจาะจง
____________________________________________________________
DATE : 13 มิถุนายน 2567
งานที่ทำในวันนี้
- ศึกษาและทดลองการใช้งาน Unity เพื่อออกแบบ UI ของ แอปพลิเคชัน AR
____
ศึกษาและทดลองการใช้งาน Unity เพื่อออกแบบ UI ของ แอปพลิเคชัน AR
ส่วนประกอบของหน้าต่าง Unity 3D
- เมนูและ Tool bar
- Scene, Game, Asset store
- scene เป็นหน้าจอที่เราใช้วางวัตถุในเกม
- Game เป็นหน้าจอที่เราใช้ทดสอบเล่นเกม เมื่อกดปุ่ม play
- Asset store เป็นหน้าจอที่ Link ไปยังเว็บของ unity เพื่อ download content (เรียกว่า asset)
- Project: หน้าจอที่แสดงทรัพยากรที่เราใช้ในเกม ไม่ว่าจะเป็น model รูปภาพ เสียง effect และ script ต่างๆ โดยปกติจะเก็บไว้ใน asset folder
- Scene Hierarchy: หน้าต่างหนึ่งใน Unity Editor ที่แสดงโครงสร้างของ GameObjects ทั้งหมดที่อยู่ใน Scene ปัจจุบัน โดย Scene Hierarchy จะทำหน้าที่จัดการและจัดเรียงลำดับ GameObjects ต่าง ๆ ในฉาก ซึ่งรวมถึงการทำซ้อน (Parent-Child Relationship) และการจัดกลุ่ม GameObjects ต่าง ๆ
- Inspector: น้าต่างหลักของอินเทอร์เฟซผู้ใช้ที่ใช้สำหรับการดูและแก้ไขคุณสมบัติของ GameObject, Component หรือ Asset ที่เลือกใน Scene หรือ Project ของคุณ. Inspector จะแสดงข้อมูลและตัวเลือกที่แตกต่างกันไปตามประเภทของวัตถุที่คุณเลือก ฟังก์ชันหลักของ Inspector มีดังนี้
- การแก้ไขคุณสมบัติ: คุณสามารถปรับแต่งคุณสมบัติต่างๆ ของ GameObject หรือ Component เช่น ขนาด, ตำแหน่ง, การหมุน, และการปรับเปลี่ยนค่าสคริปต์ต่าง ๆ ได้จาก Inspector
- การเพิ่มและลบ Component: คุณสามารถเพิ่มหรือลบ Component ต่างๆ เช่น Rigidbody, Collider, หรือ Script บน GameObject ได้โดยตรงจาก Inspector
- การดูข้อมูลเกี่ยวกับ Asset: สำหรับ Asset เช่น Texture, Material, หรือ Animation Clip, คุณสามารถดูข้อมูลรายละเอียดและตั้งค่าต่าง ๆ ได้
- การทำงานร่วมกับ Prefab: Inspector ช่วยให้คุณสามารถดูและแก้ไขค่าเริ่มต้นของ Prefab และเห็นการเปลี่ยนแปลงเมื่อใช้ใน Scene
ศึกษาวิธีการสร้างปุ่มและการใช้งาน Text ใน Unity เพื่อทดสอบการแสดงผลข้อความเมื่อทำการกดปุ่ม: Unity Tutorial: Open Panel on Button Click
Sprite คือภาพสองมิติ (2D) ที่ใช้สำหรับแสดงผลในเกมหรือแอปพลิเคชัน โดยมักใช้สำหรับตัวละคร พื้นหลัง ไอเท็ม หรือวัตถุต่าง ๆ ในเกม 2D สามารถแก้ไขได้ใน Inspector
ศึกษาวิธีการเปลี่ยนแปลงหน้าตาของปุ่มโดยการใช้งาน Sprite ใน Unity: How to make a menu in Unity – UI Tutorial
____________________________________________________________
DATE : 14 มิถุนายน 2567
งานที่ทำในวันนี้
- ออกแบบและพัฒนาอินเทอร์เฟซผู้ใช้ (UI) สำหรับแอปพลิเคชันความจริงเสริม (AR) ใน Unity
- ศึกษาการใช้งานโปรแกรม ARZAPWORKS สำหรับการ Deploy โปรเจกต์ Unity ขึ้นเว็บไซต์
- ศึกษาเทคโนโลยี WebXR และ WebGL สำหรับการนำโปรเจกต์ Unity ขึ้นใช้งานบนเว็บไซต์
____
ออกแบบและพัฒนาอินเทอร์เฟซผู้ใช้ (UI) สำหรับแอปพลิเคชันความจริงเสริม (AR) ใน Unity
ศึกษาการใช้งานโปรแกรม ARZAPWORKS สำหรับการ Deploy โปรเจกต์ Unity ขึ้นเว็บไซต์
เนื่องจาก Vuforia ไม่รองรับการนำไปใช้งานบนเว็บไซต์ จึงได้ทำการศึกษา ARZAPWORKS เพิ่มเติมเพื่อทดลองนำไปใช้งานบนเว็บไซต์
ARZAPWORKS: เป็นแพลตฟอร์มที่ให้บริการสำหรับการสร้างและจัดการเนื้อหา Augmented Reality (AR) โดยไม่ต้องเขียนโค้ดหรือมีความรู้ด้านโปรแกรมมิ่งมาก่อน แพลตฟอร์มนี้ออกแบบมาเพื่อให้ผู้ใช้สามารถสร้างประสบการณ์ AR ได้อย่างง่ายดายและรวดเร็ว โดยมีฟีเจอร์และเครื่องมือที่ช่วยในการพัฒนาและเผยแพร่เนื้อหา AR ดังนี้:
ฟีเจอร์และความสามารถของ ARZAPWORKS
- เครื่องมือสร้างเนื้อหา AR แบบไม่ต้องเขียนโค้ด: ARZAPWORKS มีอินเทอร์เฟซที่ใช้งานง่าย ช่วยให้ผู้ใช้สามารถลากและวางองค์ประกอบต่างๆ เช่น โมเดล 3 มิติ, วิดีโอ, ภาพ, และเสียง เข้าไปในโปรเจกต์ AR ของตนได้
- การสนับสนุนหลายแพลตฟอร์ม: ผู้ใช้สามารถพัฒนาเนื้อหา AR ที่สามารถใช้งานได้บนอุปกรณ์มือถือทั้ง iOS และ Android รวมถึงการแสดงผลผ่านเว็บเบราว์เซอร์
- การผสานรวมกับ Unity: ARZAPWORKS สามารถใช้ร่วมกับ Unity ซึ่งเป็นเอนจิ้นการพัฒนาเกมยอดนิยม ช่วยให้ผู้ใช้สามารถสร้างประสบการณ์ AR ที่มีความซับซ้อนมากขึ้น
- การติดตามและวิเคราะห์: แพลตฟอร์มมีเครื่องมือสำหรับติดตามและวิเคราะห์การใช้งานของเนื้อหา AR ซึ่งช่วยให้ผู้ใช้สามารถวัดผลและปรับปรุงประสบการณ์การใช้งานได้
- การสนับสนุนภาพ AR Marker: ARZAPWORKS สามารถสร้างและจัดการ AR Marker (ภาพที่ใช้สำหรับเปิดใช้งานเนื้อหา AR) เพื่อใช้ในการนำเสนอเนื้อหาต่างๆ
- ระบบการจัดการเนื้อหา (CMS): มีระบบการจัดการเนื้อหาที่ช่วยให้ผู้ใช้สามารถอัปเดตและจัดการเนื้อหา AR ได้อย่างง่ายดาย
หลังจากการศึกษา พบว่า ARZAPWORK สามารถสร้างโมเดล 3 มิติจากการแทร็กภาพหรือ QR Code ได้ แต่ไม่สามารถแทร็กโมเดล 3 มิติได้(Model Target) จึงได้ทำการเปลี่ยนวิธีการ Deploy ไปยังเว็บไซต์โดยใช้เทคโนโลยี WebXR และ WebGL แทน
ศึกษาเทคโนโลยี WebXR และ WebGL สำหรับการนำโปรเจกต์ Unity ขึ้นใช้งานบนเว็บไซต์
ศึกษา และทดลองการ Deploy Unity บนเว็บไซต์ด้วย WebXR: WebAR Car Visualizer – Augmented Reality in Browser using Unity3D || WebXR(Brand New 2021)
การทดสอบพบว่าไม่สามารถใช้งาน Vuforia บนเว็บไซต์ได้ เนื่องจาก Vuforia ออกแบบมาสำหรับการใช้งานบนมือถือและแท็บเล็ตเท่านั้น และไม่รองรับการทำงานบนเว็บไซต์โดยตรง นอกจากนี้ ยังไม่สามารถเชื่อมต่อกับ Broker MQTT ผ่านเว็บไซต์ได้ เพราะตอนทดลองได้ใช้การเชื่อมต่อผ่าน TCP แต่การเชื่อมต่อ Broker MQTT จำเป็นต้องใช้การเชื่อมต่อผ่าน SSL/TLS เพื่อเชื่อมต่อ WebSocket
____________________________________________________________
DATE : 17 มิถุนายน 2567
งานที่ทำในวันนี้
- ศึกษาวิธีการใช้งานโปรแกรม Docklight เพื่อทดสอบการส่งและรับข้อมูลจากเซ็นเซอร์ที่ใช้การสื่อสารแบบ RS485
- ศึกษาการใช้งาน Arduino Opta® WiFiและเทคโนโลยี RS485
____
ศึกษาวิธีการใช้งานโปรแกรม Docklight เพื่อทดสอบการส่งและรับข้อมูลจากเซ็นเซอร์ที่ใช้การสื่อสารแบบ RS485
Docklight เป็นโปรแกรมที่ใช้ในการตรวจสอบและวิเคราะห์ข้อมูลที่ส่งผ่านพอร์ตอนุกรม (Serial Port) เช่น RS-232, RS-485 หรือ USB-to-Serial converters โปรแกรมนี้มีฟีเจอร์หลัก ๆ ดังนี้:
- การจับข้อมูล (Data Logging): Docklight สามารถจับข้อมูลที่ส่งและรับผ่านพอร์ตอนุกรมและบันทึกข้อมูลนั้นเพื่อการวิเคราะห์ต่อไป
- การจำลองการสื่อสาร (Simulation): คุณสามารถใช้ Docklight เพื่อส่งข้อความและคำสั่งไปยังอุปกรณ์ที่เชื่อมต่อกับพอร์ตอนุกรม เพื่อทดสอบและจำลองการสื่อสาร
- การวิเคราะห์ข้อมูล (Data Analysis): โปรแกรมนี้มีเครื่องมือสำหรับการวิเคราะห์ข้อมูลที่จับได้ รวมถึงการแสดงข้อมูลในรูปแบบที่เข้าใจง่ายและการกรองข้อมูล
- การตรวจสอบการสื่อสาร (Communication Monitoring): Docklight ช่วยในการตรวจสอบการสื่อสารระหว่างคอมพิวเตอร์และอุปกรณ์อื่น ๆ ผ่านพอร์ตอนุกรม
- การสร้างสคริปต์ (Scripting): โปรแกรมนี้สามารถใช้สำหรับการสร้างสคริปต์ที่ใช้ในการทดสอบและควบคุมการสื่อสาร
ในการเชื่อมต่อระหว่างเซ็นเซอร์ XY-MD02 ซึ่งใช้สำหรับการวัดความชื้นและอุณหภูมิ และมีการสื่อสารผ่าน RS485 จำเป็นต้องกำหนดเลขที่อยู่ (Address) ของเซ็นเซอร์เพื่อขอรับค่าที่เซ็นเซอร์วัดได้ การทดสอบจะทำการส่งข้อมูลไปยังที่อยู่ (Address) ของเซ็นเซอร์ตามรายละเอียดดังนี้
ทดสอบการขอค่าอุณหภูมิจากเซ็นเซอร์ XY-MD02 ได้ตามฟอร์แมท
จากเอกสาร พบว่าลักษณะการตอบกลับของเซ็นเซอร์เป็นเลขฐาน 16 สำหรับการคำนวณค่าอุณหภูมิ ให้พิจารณาจากค่าที่ตำแหน่ง Temp Hi และ Temp Li ซึ่งในเอกสารระบุเป็น 0x01 และ 0x31 ตามลำดับ ดังนั้นค่าของอุณหภูมิจะเท่ากับ 0x131 เมื่อนำมาแปลงเป็นเลขฐาน 10 จะได้ค่า 305 ซึ่งต้องนำไปหาร 10 เพื่อคำนวณค่าอุณหภูมิเป็นองศาเซลเซียส
ทดสอบการขอค่าความชื้นจากเซ็นเซอร์ XY-MD02 ได้ตามฟอร์แมท
จากเอกสารที่ได้ศึกษา พบว่าลักษณะการตอบกลับของเซ็นเซอร์เป็นเลขฐาน 16 สำหรับการคำนวณค่าความชื้นนั้น ให้พิจารณาค่าที่ตำแหน่ง Humidity Hi และ Humidity Li ซึ่งระบุเป็น 0x02 และ 0x22 ตามลำดับ ดังนั้น ค่าของความชื้นจะเท่ากับ 0x222 เมื่อนำมาแปลงเป็นเลขฐาน 10 จะได้ค่า 546 ซึ่งจะต้องนำค่าดังกล่าวไปหาร 10 เพื่อคำนวณเป็นเปอร์เซ็นต์ความชื้นสัมพัทธ์
ศึกษาการใช้งาน Arduino Opta® WiFi และเทคโนโลยี RS485
Arduino Opta® WiFi คือไมโคร PLC (Programmable Logic Controller) ที่ออกแบบมาเพื่อการใช้งานในอุตสาหกรรมและการอัตโนมัติของอาคาร โดยมีคุณสมบัติในการเชื่อมต่อกับ Industrial IoT (Internet of Things) เพื่อเพิ่มประสิทธิภาพในการควบคุมและการตรวจสอบระบบต่าง ๆ
คุณสมบัติ Arduino Opta® WiFi
- การเชื่อมต่อ Bluetooth®: Bluetooth® Low Energy (4.2 supported by firmware, 5.1 supported by hardware)
- แรงดันไฟฟ้าสำหรับใช้งาน: 12…24 VDC
- จำนวนอินพุต: 8x Analog/Digital inputs
- จำนวนเอาต์พุต: 4x Relays – Normally Open (NO) – Max: 10A each
- หน่วยประมวลผล: Dual-core ST STM32H747XI Processor
- หน่วยความจำโปรแกรม: 1 MB of RAM
- หน่วยความจำแฟลช: 2 MB
- การเชื่อมต่อ USB: USB-C®
- การเชื่อมต่ออีเธอร์เน็ต: 10/100BASE-T Port
- การเชื่อมต่อ RS-485: Half-duplex
- การเชื่อมต่อ Wi-Fi®: 802.11 b/g/n
RS485 เป็นมาตรฐานการสื่อสารแบบอนุกรม (serial communication) ที่ใช้กันอย่างแพร่หลายในอุตสาหกรรมและการควบคุมระบบต่าง ๆ เพื่อการสื่อสารระหว่างอุปกรณ์หลายตัวผ่านสายเคเบิลเดียว
คุณสมบัติ RS485
- การสื่อสารแบบครึ่งดูเพล็กซ์ (Half-Duplex): RS485 สามารถสื่อสารได้ทั้งส่งและรับข้อมูล แต่ต้องทำทีละอย่าง
- การสื่อสารระยะไกล: RS485 สามารถส่งข้อมูลได้ไกลถึง 1200 เมตร (4000 ฟุต) โดยมีการป้องกันสัญญาณรบกวนดี
- การเชื่อมต่อหลายอุปกรณ์: RS485 สามารถเชื่อมต่ออุปกรณ์ได้สูงสุดถึง 32 ตัวในเครือข่ายเดียวกัน
- ความเร็วในการส่งข้อมูล: RS485 รองรับความเร็วในการส่งข้อมูลได้สูงถึง 10 Mbps (สำหรับระยะทางสั้น ๆ)
หลักการทำงานของ RS485
มาตรฐาน RS485 เป็นมาตรฐานการรับ/ส่งข้อมูลที่ใช้โหมด Half duplex ซึ่งหมายความว่าสามารถรับหรือส่งข้อมูลได้ทีละอย่าง แต่ไม่สามารถทำทั้งสองอย่างพร้อมกันได้ ระบบ RS485 ใช้สายไฟสองเส้น (A และ B) สำหรับส่งข้อมูลดิจิตอล โดยข้อมูลจะถูกส่งตามความแตกต่างของแรงดันไฟฟ้า
- หากแรงดันไฟฟ้าระหว่าง A และ B ต่ำกว่า -200 mV จะถือว่าเป็นสัญญาณดิจิตอล 1
- หากแรงดันไฟฟ้าระหว่าง A และ B สูงกว่า +200 mV จะถือว่าเป็นสัญญาณดิจิตอล 0
สำหรับการเชื่อมต่อในเครือข่าย RS485 จะมีอุปกรณ์หลักที่เรียกว่า “Master” ทำหน้าที่จัดคิวการสื่อสาร ส่วนอุปกรณ์ที่เหลือจะเรียกว่า “Slave” ซึ่งแต่ละ Slave จะมีหมายเลข Address ของตัวเอง เมื่อต้องการสั่งการ, Master จะส่งคำสั่งพร้อมหมายเลข Address ไปยัง Slave ทุกตัว และเฉพาะ Slave ที่มีหมายเลข Address ตรงกับคำสั่งจึงจะทำตามคำสั่งนั้น
(อ้างอิง: หลักการทำงานการสื่อสาร RS232 และ RS485)
_____________________________________________
DATE : 18 มิถุนายน 2567
งานที่ทำในวันนี้
- ศึกษา RS485
_____
ศึกษา RS485
Modbus เป็นหนึ่งในมาตรฐานการสื่อสารแบบอนุกรม (Serial Communications protocol) ที่ใช้งานอย่างแพร่หลายในระบบอัตโนมัติอุตสาหกรรม (Industrial Automation Systems : IAS) เพื่อสร้างการเชื่อมโยงข้อมูลระหว่างอุปกรณ์ต่างๆ เช่น อุปกรณ์ควบคุมพีแอลซี (Programmable Logic Controllers : PLC) อุปกรณ์ตรวจวัด (Sensor) อุปกรณ์เครื่องกล อุปกรณ์ขับเร้า (Actuator) หน่วยตรวจวัดระยะไกล (Remote Terminal Unit : RTU) รวมถึงระบบคอมพิวเตอร์ที่ใช้ในการควบคุมและแสดงสถานะของอุปกรณ์ต่างๆ (Supervisory control and Data acquisition : SCADA)
ชนิดของโปรโตคอล Modbus สามารถแบ่งออกเป็นสองกลุ่มหลัก:
- กลุ่มที่สื่อสารผ่านสาย Serial: ประกอบด้วย Modbus RTU และ Modbus ASCII โดย Modbus RTU จะส่งข้อมูลในรูปแบบ Binary ในขณะที่ Modbus ASCII จะใช้ตัวอักษร ASCII การใช้งานแบบ Serial อาจใช้ RS-232 ที่ใช้ต่อ 1–1 ระหว่าง Master และ Slave หรือ RS-485 half duplex สำหรับการเชื่อมต่อแบบ multi-drop ซึ่งสามารถต่อเชื่อมกับ Slave หลายตัวบนบัสเดียวกัน
- กลุ่มที่สื่อสารผ่าน Ethernet: คือ Modbus TCP ซึ่งเป็นการส่งข้อมูล Modbus ผ่านเครือข่าย TCP/IP โดยปกติ Modbus TCP จะใช้งานผ่านพอร์ต 502 เพื่อรองรับการรับส่งข้อมูลที่มีความเร็วสูง และไม่จำกัดจำนวน Slave ที่สามารถเชื่อมต่อได้เหมือนใน Modbus RTU/ASCII
ฟังก์ชันการทำงานสำหรับ Modbus RTU (Function code)
ชุดฟังก์ชันการทำงานสามารถแบ่งหน้าที่ต่างๆ ได้ตามรหัส หรือ Function code โดยหลักๆ แล้วจะมีฟังก์ชันการทำงานอยู่ 2 แบบ คือ การอ่าน (Read) และเขียน (Write) โดยสามารถเลือกที่จะอ่านหรือเขียนข้อมูลไปยัง Coils หรือ Contacts สำหรับข้อมูลแบบดิจิตอล (Digital) หรือ “0” กับ “1” และ Registers สำหรับอ่านหรือเขียนข้อมูลแบบอนาล็อก โดยมีขนาด 16 บิต หรือ ตั้งแต่ 0000 ถึง FFFF
Modbus data frame
Frame ข้อมูลของโปรโตคอล Modbus จะประกอบไปด้วย 2 ส่วนใหญ่ๆคือ ADU (Application Data Unit) และ PDU (Protocol Data Unit)
ADU ประกอบด้วย ข้อมูลระบุตัวตน Slave + PDU + Error check โดยแต่ละชนิดของโปรโตคอล Modbus จะมีลักษณะของ ADU ที่แตกต่างกันไป
PDU ประกอบไปด้วย Function code + Data โดยทุกชนิดของโปรโตคอล Modbus จะมีโครงสร้างของ PDU เหมือนกัน
โดย ADU ของ Modbus TCP จะตัดส่วนของ Error check ออกไปเนื่องจาก Ethernet มีกระบวนการ error check อยู่แล้ว
(อ้างอิง:https://www.nectec.or.th/news/news-public-document/modbus-protocol.html , https://medium.com/@ndrs/modbus-คืออะไร-7ae8841ae286)
_____________________________________________
DATE : 19 มิถุนายน 2567
งานที่ทำในวันนี้
- ออกแบบและพัฒนา UI (User Interface) ใน Unity
- ทดสอบการแสดงผลข้อมูลจากเซ็นเซอร์ทั้งหมดภายในแอปพลิเคชัน AR
_____
ออกแบบและพัฒนา UI (User Interface) ใน Unity
- ภาพ UI ที่ออกแบบไว้ภายใน Unity
ทดสอบการแสดงผลข้อมูลจากเซ็นเซอร์ทั้งหมดภายในแอปพลิเคชัน AR
- ลักษณะของข้อมูลที่รับเข้ามาแสดงผล
- การแสดงค่าข้อมูลในแอปพลิเคชัน
_____________________________________________
DATE : 20 มิถุนายน 2567
งานที่ทำในวันนี้
- เก็บรายละเอียดทั้งหมดของฟังก์ชันการทำงานของโปรแกรม
_____
เก็บรายละเอียดทั้งหมดของฟังก์ชันการทำงานของโปรแกรม
- กำหนดเงื่อนไขในการทำงานของฟังก์ชันอุณหภูมิ
private void CheckTempWarnings(float temperature)
{
UnityMainThreadDispatcher.Enqueue(() =>
{
if (temperature > 30.0f)
{
if(!AirCon.activeSelf&&Temperature.activeSelf){
ShowWarningObject(TempHighWarningObject);
HideWarningObject(TempLowWarningObject);
Debug.Log("Temperature is high. Showing TempHighWarningObject.");
}
}
else if (temperature < 20.0f)
{
if(!Heater.activeSelf&&Temperature.activeSelf){
HideWarningObject(TempHighWarningObject);
ShowWarningObject(TempLowWarningObject);
Debug.Log("Temperature is low. Showing TempLowWarningObject.");
}
}
else
{
HideWarningObject(TempHighWarningObject);
HideWarningObject(TempLowWarningObject);
Debug.Log("Temperature is normal. Hiding all temperature warnings.");
}
});
}
- กำหนดเงื่อนไขในการทำงานของฟังก์ชันความชื้น
private void CheckHumidWarnings(float humidity)
{
UnityMainThreadDispatcher.Enqueue(() =>
{
if (humidity > 70.0f)
{
if(!Dehumidifier.activeSelf&&Humidity.activeSelf){
ShowWarningObject(HumidHighWarningObject);
HideWarningObject(HumidLowWarningObject);
Debug.Log("Humidity is high. Showing HumidHighWarningObject.");
}
}
else if (humidity < 45.0f && humidity > 40.0f)
{
if(Dehumidifier.activeSelf&&Humidity.activeSelf){
HideWarningObject(HumidHighWarningObject);
ShowWarningObject(HumidLowWarningObject);
Debug.Log("Humidity is low. Showing HumidLowWarningObject.");
}
}
else
{
HideWarningObject(HumidHighWarningObject);
HideWarningObject(HumidLowWarningObject);
Debug.Log("Humidity is normal. Hiding all humidity warnings.");
}
});
}
- กำหนดเงื่อนไขในการทำงานของฟังก์ชันความเข้มแสง
private void CheckLightWarnings(float light)
{
UnityMainThreadDispatcher.Enqueue(() =>
{
if (light < 130.0f)
{
if(Light.activeSelf&&!Window_Close.activeSelf){
ShowWarningObject(LightHighWarningObject);
HideWarningObject(LightLowWarningObject);
HideWarningObject(LightFineWarningObject);
Debug.Log("Light intensity is high. Showing LightHighWarningObject.");
}
}
else if (light > 320.0f)
{
if(!LED.activeSelf&&Light.activeSelf){
HideWarningObject(LightHighWarningObject);
ShowWarningObject(LightLowWarningObject);
HideWarningObject(LightFineWarningObject);
Debug.Log("Light intensity is low. Showing LightLowWarningObject.");
}
}
else if (light > 180.0f && light < 400.0f)
{
if(!Window.activeSelf&&Light.activeSelf){
HideWarningObject(LightHighWarningObject);
HideWarningObject(LightLowWarningObject);
ShowWarningObject(LightFineWarningObject);
Debug.Log("Light intensity is fine. Showing LightFineWarningObject.");
}
}
else
{
HideWarningObject(LightHighWarningObject);
HideWarningObject(LightLowWarningObject);
HideWarningObject(LightFineWarningObject);
Debug.Log("Light intensity is normal. Hiding all light warnings.");
}
// Check light state and send message
CheckLightStateAndSendMessage(LightLED);
});
}
- กำหนดการส่งข้อความเพื่อสั่งการทำงานของหลอดไฟ LED
private void CheckLightStateAndSendMessage(GameObject lightObject)
{
if (lightObject != null && lightObject.name.ToLower() == "lightled")
{
UnityMainThreadDispatcher.Enqueue(() =>
{
bool isActive = lightObject.activeSelf;
string value;
if (isActive){
value = "1";
}else{
value = "0";
}
string message = $"{{\"device_id\": \"SENSORS\",\"type\": \"LED\",\"value\": \"{value}\"}}";
client.Publish(ledTopic, System.Text.Encoding.UTF8.GetBytes(message), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
Debug.Log($"Published LED state: {value} to topic: {ledTopic}");
});
}
}
ภาพการทำงานของหลอดไฟ LED เมื่อมีการสั่งเปิดการทำงาน
_____________________________________________
DATE : 21 มิถุนายน 2567
งานที่ทำในวันนี้
- ทดสอบโปรแกรม และแก้บักที่เกิดขึ้นจากการทดลองโปรแกรม
- นำเสนอผลงาน
_____
ทดสอบโปรแกรม และแก้บักที่เกิดขึ้นจากการทดลองโปรแกรม
- แก้ไข Error ต่างๆ และจัดโค้ดให้อ่านง่ายยิ่งขึ้น
- ภาพการทดลองการทำงานของแอปพลิเคชันใน Unity
คำติชมจากการพรีเซ้นผลงาน
- โปรเจคนี้ควรทดลองการติดตั้งแอปพลิเคชันบนโทรศัพท์มือถือ
- หน้าตา UI ไม่ควรมีการนำข้อมูลมาบังวัด
_____________________________________________
DATE : 24 มิถุนายน 2567
งานที่ทำในวันนี้
- ปรับแก้ UI และทดสอบ Deploy บนโทรศัพท์มือถือ
_____
ปรับแก้ UI และทดสอบ Deploy บนโทรศัพท์มือถือ
- ปรับแก้ไข UI โดยใช้ชุดสีที่เหมาะสมตามกฎ 60-30-10
- ปรับตำแหน่งของข้อความแสดงข้อมูล และเพิ่มขนาดช่องแสดงค่าเซ็นเซอร์
_____________________________________________
DATE : 25 มิถุนายน 2567
งานที่ทำในวันนี้
- ปรับแก้ UI
- ช่วยงานเพื่อนร่วมทีมศึกษาเพิ่มเติมเกี่ยวกับ Modbus และการส่งข้อมูลด้วย RS485
____
ปรับแก้ UI
- ปรับแก้ฟังก์ชันแสดงค่าเซ็นเซอร์ให้มีขนาดใหญ่มากยิ่งขึ้น
- ปรับแก้เลื่อนตำแหน่งข้อความที่แสดงข้อมูลเกี่ยวกับวัด
_____________________________________________
DATE : 26 มิถุนายน 2567
งานที่ทำในวันนี้
- เข้าร่วม และนำเสนอผลงานแอปพลิเคชันวัด AR ในงาน Academic Support Fair 2024
_____
เข้าร่วม และนำเสนอผลงานแอปพลิเคชันวัด AR ในงาน Academic Support Fair 2024
- ได้นำเสนอผลงาน
_____________________________________________
DATE : 27 มิถุนายน 2567
งานที่ทำในวันนี้
- เข้าร่วม และนำเสนอผลงานแอปพลิเคชันวัด AR ในงาน Academic Support Fair 2024
_____
เข้าร่วม และนำเสนอผลงานแอปพลิเคชันวัด AR ในงาน Academic Support Fair 2024
- ได้นำเสนอผลงานให้กับผู้อำนวยการโรงเรียนดรุณสิกขาลัย
_____________________________________________
DATE : 28 มิถุนายน 2567
งานที่ทำในวันนี้
- จัดทำเอกสารสื่อการสอน
_____
จัดทำเอกสารสื่อการสอน
- จัดทำเอกสารสอนการทำ และติดตั้งโปรเจควัด AR
- สอนการติดตั้งโปรแกรมต่างที่ใช้งานสำหรับโปรเจคนี้
_____________________________________________
DATE : 1 กรกฎาคม 2567
งานที่ทำในวันนี้
- จัดทำเอกสารสื่อการสอน
- ทดลองควบคุมการทำงานแขนกล UR
_____
จัดทำเอกสารสื่อการสอน
- จัดทำเอกสารสอนการทำ และติดตั้งโปรเจควัด AR
- เขียน System Overview ของระบบฝั่ง Unity
ทดลองควบคุมการทำงานแขนกล UR
UR หรือ COBOT(Collaborative Robot): หุ่นยนต์หรือแขนกลร่วมปฏิบัติการที่สามารถทำงานร่วมกับคนได้อย่างปลอดภัย ไม่ได้ออกแบบมาให้ทำงานแทนคนแต่มาเป็นเหมือนเครื่องมือช่วยเหลือ ในการทำงานบางอย่างให้มีประสิทธิภาพและคุณภาพมากขึ้น
ความสามารถในการแก้ปัญหาในการปฏิบัติการงานอุตสาหกรรม
- ลักษณะการทำงานที่มีการทำซ้ำๆ ในปริมาณที่มากและเป็นเวลานาน
- คุณภาพของงานที่เกิดจากการปฏิบัติการของพนักงาน
- ปัญหาในการเปลี่ยนพนักงานในการทำงาน
- ปรับเปลี่ยน line การผลิตมากน้อยขนาดไหน
- ปัญหาเรื่องสภาพแวดล้อมในการทำงานที่ส่งผสเสียต่อผู้ปฏิบัติการ
- ลักษณะงานที่อันตรายต่อผู้ปฏิบัติการ
- การผลิตงานเป็นลักษณะขอขวด จึงทำให้การทำงานมีความล่าช้า
(อ้างอิง: เรามาทำความรู้จักกับหุ่นยนต์ร่วมปฏิบัติการ COBOT กันให้มากยิ่งขึ้น)
ในการทดลองได้ทำการทดลองโดยให้แขนกลจับกล่องพลาสสติกทรงกระบอก และย้ายตำแหน่ง
_____________________________________________
DATE : 2 กรกฎาคม 2567
งานที่ทำในวันนี้
- จัดทำเอกสารสื่อการสอน
_____
จัดทำเอกสารสื่อการสอน
- จัดทำเอกสารสอนการทำ และติดตั้งโปรเจควัด AR
- เพิ่มเติมข้อมูลเนื้อหาของเทคโนโลยีที่ใช้ในโปรเจค
_____________________________________________
DATE : 3 กรกฎาคม 2567
งานที่ทำในวันนี้
- จัดทำเอกสารสื่อการสอน
- ทดลองใช้งานแว่นตา Hololen2
_____
จัดทำเอกสารสื่อการสอน
- จัดทำเอกสารสอนการทำ และติดตั้งโปรเจควัด AR
- เขียนเอกสารสอนการตั้งค่าการกำหนดAccessในโบรคเกอร์ EMQX
- เขียนเอกสารสอนการตั้งค่าการส่งข้อมูลในโบรคเกอร์ EMQX
ทดลองใช้งานแว่นตา Hololens2
Microsoft HoloLens 2: คอมพิวเตอร์โฮโลกราฟิกที่ถูกออกแบบมาให้ผู้ใช้งานได้อย่างอิสระโดยไม่ต้องถือหรือใช้อุปกรณ์ช่วยใด ๆ ที่มือเลย เพื่อให้ผู้ใช้ได้มีประสบการณ์ที่สะดวกสบาย และมีความสมจริงมากยิ่งขึ้น โดยมีความสามารถในการปรับแต่งเส้นทางการประมวลผลแบบโฮโลกราฟิกได้ในตัวเอง
เทคโนโลยีที่อยู่เบื้องหลัง HoloLens 2
HoloLens 2 มาพร้อมกับอาเรย์ (array) ของเซ็นเซอร์ กล้อง และจอแสดงผลโฮโลแกรมที่ออกแบบเป็นพิเศษที่ทำงานร่วมกันเพื่อสร้างประสบการณ์ Mixed Reality ที่ไม่มีรอยต่อ ยังมีความสามารถในการติดตามการเคลื่อนไหวของมือและตาอย่างละเอียด ช่วยให้มีการโต้ตอบกับเนื้อหาฮอโลแกรมได้อย่างเป็นธรรมชาติ
การประยุกต์ใช้ของ HoloLens 2
Microsoft HoloLens 2 นำความสามารถของ Mixed Reality ไปใช้ในหลายอุตสาหกรรม ตัวอย่างเช่น การผลิต การแพทย์ การศึกษา และบันเทิง ในอุตสาหกรรมการผลิต เช่น อุตสาหกรรมยานยนต์ อุปกรณ์ HoloLens 2 มีการใช้งานเพื่อช่วยในการออกแบบ ซ่อมบำรุง และการประกอบรวม และในอุตสาหกรรมการแพทย์ มันถูกนำไปใช้ในการอบรม และช่วยในการผ่าตัดที่ซับซ้อน
HoloLens 2 ยังถูกนำไปใช้ในการศึกษาเพื่อสนับสนุนการเรียนการสอน และเสนอประสบการณ์การเรียนรู้ที่สมจริงใหม่ ๆ ในอุตสาหกรรมบันเทิง HoloLens 2 นำเสนอประสบการณ์แบบสมจริงใหม่ในการเล่นเกมและสื่อเสริมความเป็นจริง
ความสามารถของ HoloLens 2
- Human understanding ความเข้าใจทางกายภาพของมนุษย์
- Hand tracking: สามารถตรวจจับตำแหน่งและท่าทางของมือทั้งสองข้าง รวมถึงนิ้วมือทั่งหมด ได้อย่างถูกต้องแม่นยำ
- Eye tracking: สามารถตรวจจับความเคลื่อนไหวของดวงตาทั้งสองข้างแบบ Real-time
- Voice: ควบคุมและสั่งงานด้วยคำสั่งเสียง ด้วยเทคโนโลยี Cortana natural language
- Environment understanding ความเข้าใจในสภาพแวดล้อม
- Six Degrees of Freedom (6DoF) tracking: เทคโนโลยีในการติดตามและวัดการเคลื่อนไหวในพื้นที่สามมิติ
- Mixed reality capture: ผสมผสาน ภาพถ่ายและวิดีโอ ในแบบโฮโลแกรม เข้ากับสภาพแวดล้อมทางกายภาพจริง
- Spatial mapping: เทคนิคการสร้างเป็นแผนที่สภาพแวดล้อม 3D แบบ Real-time
(อ้างอิง: https://quickerpthailand.com/blog-what-is-hololens-2/)
ภาพในการทดลองใช้งานแว่นตา Hololens2
_____________________________________________
DATE : 4 กรกฎาคม 2567
งานที่ทำในวันนี้
- จัดทำเอกสารสื่อการสอน
_____
จัดทำเอกสารสื่อการสอน
- จัดทำเอกสารสอนการทำ และติดตั้งโปรเจควัด AR
- เขียนอธิบายขั้นตอนการเริ่มโปรเจค และการเพิ่ม Package
_____________________________________________
DATE : 5 กรกฎาคม 2567
งานที่ทำในวันนี้
- ทดลองใช้งานชุดเครื่องมือ(MRTK3)ของ Hololens ภายใน Unity
_____
ทดลองใช้งานชุดเครื่องมือ(MRTK3)ของ Hololens ภายใน Unity
MRTK3(Microsoft Mixed Reality Toolkit 3): ชุดเครื่องมือที่พัฒนาโดย Microsoft สำหรับการสร้างแอปพลิเคชันความเป็นจริงผสม (Mixed Reality) ใน Unity
ทดลองการตั้งค่าสำหรับใช้งาน MRTK3 ใน โปรแกรม Unity: How To Setup HoloLens for Unity development in 2022
เมื่อทดสอบจนถึงขั้นตอนการทดสอบ Remote Play บน Hololens ด้วยเปียโนตัวอย่าง ขั้นต่อมาจึงทดลองดาวน์โหลด MRTK3 และเปิดทดลองใน Unity
_____________________________________________
DATE : 8 กรกฎาคม 2567
งานที่ทำในวันนี้
- เชื่อมต่อ Hololens กับ โบรคเกอร์ EMQX ผ่าน TTL
_____
เชื่อมต่อ Hololens กับ โบรคเกอร์ EMQX ผ่าน TTL
ทดสอบการเชื่อมต่อ Hololens กับโบรคเกอร์ EMQX โดยมี 2 วิธีดังนี้
- ทดสอบกดปุ่มใน Hololens Remote Play และส่งข้อความ ” Hi from Hololens ” ไปที่ MQTT X ที่ Topic : hololens/testSentMessage
- ลากปุ่มตัวอย่างมาใส่ใน Scene และนำโค้ดเก่าจากโปรเจควัดAR มาปรับใช้ในการส่งข้อความ และทดสอบกดปุ่ม
- ทดสอบกดปุ่มใน Hololens Remote Play และส่งข้อความ ” HI ” ไปที่ MQTT X ที่ Topic : hololens/testSentMessage เพื่อเปลี่ยนข้อความภายใน Hololens จาก “Button” เป็น “HI”
- ลากปุ่มตัวอย่างมาใส่ใน Scene และนำโค้ดเก่าจากโปรเจควัดAR มาปรับใช้ในการส่งข้อความ และลากText ที่ต้องการเปลี่ยนมาใส่ใน Component
_____________________________________________
DATE : 9 กรกฎาคม 2567
งานที่ทำในวันนี้
- เชื่อมต่อ Hololens กับ โบรคเกอร์ EMQX ผ่าน WebSocket
____
เชื่อมต่อ Hololens กับ โบรคเกอร์ EMQX ผ่าน WebSocket
ในวันนี้พยายามแก้ไขโค้ดเดิมเพื่อใช้ในการเชื่อมต่อ โบรคเกอร์ผ่าน WebSocket แต่เนื่องด้วยLibrary ที่ใช้ก่อนหน้า “M2MQTT” ไม่รองรับการเชื่อมต่อกับ WebSocket จึงจำเป็นต้องเปลี่ยน Library เป็น MQTTnet
_____________________________________________
DATE : 10 กรกฎาคม 2567
งานที่ทำในวันนี้
- เชื่อมต่อ Hololens กับ โบรคเกอร์ EMQX ผ่าน WebSocket
_____
เชื่อมต่อ Hololens กับ โบรคเกอร์ EMQX ผ่าน WebSocket
- ดาวน์โหลด MQTTnet.dll สำหรับใช้ในการใส่เป็น Plugin ในโปรแกรม Unity
พยายามแก้ไขโค้ดเดิมเพื่อใช้ในการเชื่อมต่อ โบรคเกอร์ผ่าน WebSocket โดยเปลี่ยน Library เป็น MQTTnet ทำให้รูปแบบโค้ดในการเชื่อมต่อมีความแตกต่างกันดังภาพ
_____________________________________________
DATE : 11 กรกฎาคม 2567
งานที่ทำในวันนี้
- ออกแบบ UI สำหรับแอปพลิเคชันควบคุมรถผ่าน Hololens
- ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens
___
ออกแบบ UI สำหรับแอปพลิเคชันควบคุมรถผ่าน Hololens
- กำหนดฟังก์ชันการทำงานของรถ
- เดินหน้า
- ถอยหลัง
- เลี้ยวซ้าย
- เลี้ยวขวา
- ออกแบบ UI ตาม ฟังก์ชันการใช้งาน
ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens
ทดสอบตามคลิปดังต่อไปนี้ แต่ไม่ทราบสาเหตุของปัญหาที่ทำให้ไม่สามารถ Deploy ได้
- How To Setup HoloLens for Unity development in 2022
- How to Compile Your Unity Project for the Microsoft HoloLens | Tutorial
และได้ทำการค้นหาเอกสารในการ Deploy จากเว็บไซต์ของไมโครซอฟต์แต่ไม่มีการอธิบายรายละเอียด
_____________________________________________
DATE : 12 กรกฎาคม 2567
งานที่ทำในวันนี้
- ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens
___
ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens
ทดสอบตามคลิปดังต่อไปนี้อย่างละเอียด โดยเลือกใช้ทั้ง Tools ,Unity และVisual Studioเวอร์ชันเดียวกัน
- How To Setup HoloLens for Unity development in 2022
- How to Compile Your Unity Project for the Microsoft HoloLens | Tutorial
ผลลัพธ์คือไม่สามารถ Build แอปพลิเคชันได้เนื่องจากติดปัญหา ไม่สามารถ Insatll MSVC v143 ใน Visual Studio 2019 ได้
_____________________________________________
DATE : 15 กรกฎาคม 2567
งานที่ทำในวันนี้
- ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens
____
ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens
ทดสอบตามคลิปดังต่อไปนี้อย่างละเอียด โดยเลือกใช้ทั้ง Tools ,Unity และVisual Studioเวอร์ชันเดียวกัน รวมทั้งทดลองเปลี่ยนเวอร์ชันของ Visual Studio เป็น 2022
- How To Setup HoloLens for Unity development in 2022
- How to Compile Your Unity Project for the Microsoft HoloLens | Tutorial
ผลลัพธ์คือสามารถ Build แอปพลิเคชัน และDeploy ได้สำเร็จ แต่ไม่ทราบถึงเหตุผลในการทำงาน และแอปพลิเคชันทำงานไม่ปกติมีเพียง Scene สีดำ
โดยปัญหาคาดว่าเกิดจากลืมกด Add Scene ในขั้นตอนการ Build จาก โปรแกรม Unity แค่หลังจากนั้นก็ไม่สามารถ Deploy แอปพลิเคชันได้อีกครั้ง โปรแกรม Visual Studio มักค้างและ Not Responding เสมอ
____________________________________________
DATE : 16 กรกฎาคม 2567
งานที่ทำในวันนี้
- ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens และปรับโค้ด
_____
ทดสอบการ Deploy แอปพลิเคชันลงบน Hololens และปรับโค้ด
ทดสอบเอกสารการDeployที่พบใหม่นี้อย่างละเอียด โดยเลือกใช้ทั้ง Tools ,Unity และVisual Studioเวอร์ชันเดียวกัน
- ในขั้นตอนการ Build ใน Unity ให้ทำขั้นตอนที่ต่างกันออกไปเนื่องจากทดลองและไม่สามารถ Deploy ได้ โดยขั้นตอนที่ต่างไปทำตามดังนี้
- แก้ไข Build and Run On
- เพิ่มเลข IP ของ Hololens
- ใส่ Username และรหัสสำหรับกรเชื่อมต่อกับ Hololens
- เมื่อได้ไฟล์ที่ทำการ Build จาก โปรแกรม Unityแล้วนั้นให้ทำการเปิดด้วย Visual Studio 2022 เนื่องจาก MSVC v143 สามารถติดตั้งได้ในเวอร์ชันนี้ และสามารถตั้งค่าได้ตามนี้ Release และ ARM64 และใน Debug > ….. Debug Properties และใน Property Page ให้กด Debugging > Machine Name ให้ใส่เลข IP ของ Hololens
- เมื่อตั้งค่าเสร็จให้ทำการกด Build Solution และรอจนกว่าจะเสร็จและจึงกด Deploy Solution
*** ในการBuild และ Deploy ตราบใดที่สัญลักษณ์ด้านล่างยังคงขยับ แนะนำไม่ควรคลิกเปลี่ยนหน้าต่างอื่นเนื่องจากจะใช้เวลาในการ Deploy ค่อนข้างนาน และอาจทำให้โปรแกรม Visual Studio Not Responding ได้
หลังจากนั้นจึงมีการปรับเวอร์ชัน Unity ให้เป็นเวอร์ชันปัจจุบันมากที่สุด โดยทำตามขั้นตอนเดิมเพียงเปลี่ยนเวอร์ชันของ Unity เท่านั้น และมีการปรับโค้ดเพียงเล็กน้อยเพื่อให้สอดคล้องกับฟังก์ชันการทำงานของแอปพลิเคชันควบคุมรถที่ได้ออกแบบไว้
_____________________________________________
DATE : 17 กรกฎาคม 2567
งานที่ทำในวันนี้
- ปรับแก้โค้ดสำหรับควบคุมการทำงานของรถ
___
ปรับแก้โค้ดสำหรับควบคุมการทำงานของรถ
มีการเพิ่มฟังก์ชันการทำงานขึ้นมา คือ ปุ่มหยุด เพื่อหยุดการทำงานของรถกะทันหัน
ปัญหาที่พบ: ข้อความจะส่ง 1 ข้อความต่อการกดปุ่ม 1 ครั้ง ,เมื่อกดปุ่ม Stop ไม่มีการหยุดการส่งข้อความของทิศทางอื่นๆ ,ทิศทางอื่นๆเมื่อมีการกดเพิ่มจะทำงานพร้อมกัน ไม่แยกกันทำงาน
_____________________________________________
DATE : 18 กรกฎาคม 2567
งานที่ทำในวันนี้
- ปรับแก้โค้ดสำหรับควบคุมการทำงานของรถ และศึกษาScriptของ MRTK3 เพิ่มเติม
____
ปรับแก้โค้ดสำหรับควบคุมการทำงานของรถ และศึกษาScriptของ MRTK3 เพิ่มเติม
ค้นหา Class ที่จะนำมาใช้ในเว็บไซต์รวมเอกสารของ MRTK3 โดย Class ที่สนใจคือ Class StatefulInteractable
StatefulInteractable เป็นคลาสที่ขยายจาก MRTKBaseInteractable ใน Microsoft Mixed Reality Toolkit (MRTK) สำหรับ Unity โดยเพิ่มความสามารถเพิ่มเติม เช่น การสนับสนุนการใช้งานด้วยเสียง, การใช้งานด้วยการมอง, และพฤติกรรมการสลับ (toggle behaviors) คลาสนี้ช่วยในการจัดการและตรวจสอบสถานะการโต้ตอบของวัตถุ เช่น การเลือกและการวางวัตถุ รวมถึงการจัดการเหตุการณ์ต่าง ๆ ที่เกี่ยวข้อง เช่น การคลิก การเปิดใช้งาน หรือการปิดใช้งานวัตถุ
แต่Class นี้ยังไม่ได้ผลลัพธ์ตามที่ต้องการ คือ เกิดการส่งข้อความทุกๆ 2 วินาทีที่มีการกดปุ่มค้าง
_____________________________________________
DATE : 19 กรกฎาคม 2567
งานที่ทำในวันนี้
- ปรับแก้โค้ดสำหรับควบคุมการทำงานของรถ
____
ปรับแก้โค้ดสำหรับควบคุมการทำงานของรถ
ทดสอบแก้ไขกลับมาในรูปแบบการกด 1 ครั้ง และส่งข้อความ 1 ครั้ง แต่พบปัญหาเมื่อมีการกด 1 ครั้ง มีการส่งข้อความซ้ำ 6 ครั้ง และเมื่อเริ่มต้นทำงานข้อความดีบัคในการเชื่อมต่อ MQTT ถูกส่งมา 5 ครั้งเช่นเดียวกัน
_____________________________________________
DATE : 23 กรกฎาคม 2567
งานที่ทำในวันนี้
- ปรับแก้การส่งข้อความซ้ำซ้อน และทดลองดูตัวอย่างใน MRTK3
___
ปัญหาที่พบ: มีการส่งข้อความซ้ำ 5 – 6 ครั้ง ทุก 1 วินาที แทนการส่ง 1 ข้อความ ทุก 1 วินาที
เมื่อทำการตรวจสอบพบว่ามีการใส่ Component ที่ซ้ำซ้อนเกินไป ทำให้มีการเรียกใช้งานซ้ำ วิธีแก้จึงเป็นการเก็บ Object หลักที่ทำงาน Component นั้นๆไว้และลบ Componentซ้ำซ้อนอื่นๆ
_____________________________________________
DATE : 24 กรกฎาคม 2567
งานที่ทำในวันนี้
- เข้าร่วมงาน อว.แฟร์ : SCI POWER FOR FUTURE THAILAND
___________________________________
DATE : 25 กรกฎาคม 2567
งานที่ทำในวันนี้
- เตรียมสไลด์สำหรับพรีเซนท์งานการฝึกงานตลอด 2 เดือน
- เขียน Blog บันทึกการฝึกงานประจำวัน
- ทดสอบการทำงานของ Hololens และรถ
_____
ทดสอบการทำงานของ Hololens และรถ
- ภาพปุ่มบังคับรถ
_____________________________________________
DATE : 26 กรกฎาคม 2567
งานที่ทำในวันนี้
- เขียน Blog บันทึกการฝึกงานประจำวัน
_____________________________________________
DATE : 30 กรกฎาคม 2567
งานที่ทำในวันนี้
- เขียน Blog บันทึกการฝึกงานประจำวัน
_____________________________________________
DATE : 31 กรกฎาคม 2567
งานที่ทำในวันนี้
- เขียน Blog บันทึกการฝึกงานประจำวัน
_____________________________________________