รายละเอียดโปรเจกต์
นี่คือแพลตฟอร์มแอปแนวคิดสำหรับ Tangible User Interface งานนี้เราออกแบบมาให้ใช้ง่ายมากๆ แม้แต่คนที่ไม่มีประสบการณ์เขียนโปรแกรมลึกซึ้ง ก็สามารถออกแบบและเผยแพร่แอปของตัวเองบนซอฟต์แวร์นี้ได้เลยจ้า
ในหน้าแรกของซอฟต์แวร์ จะมีสองส่วนหลัก ส่วนบนคือแพลตฟอร์มออนไลน์ เหมือน App Store บนมือถือ ให้ Developer กับ Designer มาโพสต์แอปของตัวเอง ส่วนอีกส่วนคือชุดเครื่องมือที่เราใช้ในการออกแบบแอป หน้าตาจะคล้ายๆ กับ Unity นะ มี SDK, API และของอื่นๆ แถมมาให้ในตัว ซอฟต์แวร์ตัวนี้เชื่อมต่อกับฮาร์ดแวร์แบบไร้สายด้วย ทำให้เราสามารถทดสอบการออกแบบแอปแบบเรียลไทม์ได้เลย โดยการส่งสัญญาณ Matrix ของหน้าจอไปยังอุปกรณ์
ฮาร์ดแวร์ที่เราใช้คือเวอร์ชันย่อของ Tangible User Interface ที่ดังๆ จาก MIT อย่าง inFORM แต่อันที่เราสร้างขึ้นมานี้ไม่ได้ลิขสิทธิ์จาก MIT นะ เป็นของเราสร้างเองเลย จุดประสงค์หลักคือเอามาโชว์ไอเดียซอฟต์แวร์ของเรา ถ้าอยากรู้จักของต้นฉบับมากกว่านี้ ไปดูที่ link นี้ได้เลย

วิธีสร้าง
โปรเจกต์นี้มีทั้งซอฟต์แวร์และฮาร์ดแวร์ เดี๋ยวพี่จะเล่าให้ฟังทีละส่วนเลย
เริ่มจากซอฟต์แวร์ก่อน เราใช้ Unity ในการสร้าง inFORM แบบเสมือนจริงและปุ่มต่างๆ เป็น User Interface จากนั้นข้อมูลจะถูกส่งจาก Backend ของ Unity ไปยังคอมพิวเตอร์ที่เชื่อมต่ออยู่ในรูปแบบไฟล์ข้อความ (Text File) ต่อมา Processing จะอ่านไฟล์ข้อความนั้นและส่งข้อมูลผ่าน Serial Port สุดท้าย [Arduino](https://s.shopee.co.th/7fUgFAWSki) ก็จะทำงานประสานกันกับของเสมือนจริงโดยการอ่านข้อมูลจาก Serial Port นั่นเอง งานนี้หล่อเท่เลย
ส่วนฮาร์ดแวร์นั้น อุปกรณ์ของเรามีทั้งหมด 3 ชั้น:
1. Top Pins: เราตัดสไตโรโฟมเป็นชิ้นสี่เหลี่ยม แล้วติดกาวกับ Magnet Wire ที่ปลายของ Linkage
2. Linkage: Linkage นี้คือ Magnet Wire ที่อยู่ในปลอกพลาสติก (Hollow Nylon Rods) ใช้เชื่อมต่อแต่ละ Pin กับ Actuator ทำให้เราจัดเรียง Pin ให้ชิดกันได้โดยไม่ต้องกังวลเรื่องขนาดของ Actuator นอกจากนี้มันยังส่งแรงสองทิศทางจาก [Servo](https://s.shopee.co.th/7fUgFAWSki) Motor ได้อีกด้วย

3. Servos Matrix: เราใช้ [Servo](https://s.shopee.co.th/7fUgFAWSki) Motor จำนวน 100 ตัวจัดเรียงในรูปแบบ Matrix เพื่อขับเคลื่อนการเคลื่อนที่เชิงเส้นของ Pins โดยควบคุมผ่าน PCA9685 servo drivers



หลังจากประกอบเสร็จ อุปกรณ์นี้ก็สามารถควบคุมผ่าน [Arduino](https://s.shopee.co.th/7fUgFAWSki) IDE และทำการทดสอบเฉพาะทางได้แล้ว ใน Demo นี้ เราให้แถวแรกของ Matrix แสดงผลเป็นคลื่น Sine Wave ดูสวยดี
สิ่งที่ต้องทำต่อ (Future Work)
จาก Demo จะเห็นว่าการตอบสนองเร็วและการเคลื่อนที่นิ่งดี แต่มันก็ยังมีข้อบกพร่องบางอย่างเพราะงบประมาณและปัญหาทางวิศวกรรม ทำให้อุปกรณ์ยังขาดฟังก์ชันขั้นสูงไปบ้าง ต้องสู้งานต่อนะน้อง
1. ปัญหาระบบไฟ (Power System): เราใช้เวลาแก้ไขปัญหานี้เยอะมาก มันทำให้ Pins เคลื่อนที่ไม่พร้อมกัน เมื่อทดสอบแถวของ Pins แยกกันทีละแถว มันทำงานได้ดีเหมือนใน Demo แต่พอทดสอบทั้งหมดพร้อมกันมันก็ยังไม่เวิร์ก เรากำลังหาทางแก้อยู่
2. ปัญหาการยึด Pin (Pin Constraints): เราวาง Pins ไว้ในช่องพลาสติกเพื่อให้แน่ใจว่าการเคลื่อนที่จะอยู่ในทิศทางเดียวตลอด แต่ข้อเสียคือ Constraints มันหลวมเกินไป บางครั้ง Pins ก็เอียงนิดหน่อยตอนขยับออก แต่ถ้าให้แน่นเกินไปก็จะเพิ่มแรงเสียดทาน ทางออกที่ดีอาจเป็นการเพิ่มความยาวของ Pins เพื่อลดอัตราส่วนส่วนที่โผล่ออกมาต่อส่วนที่ซ่อนอยู่ จะได้เอียงน้อยลง
3. ปัญหาโครงสร้าง [Servo](https://s.shopee.co.th/7fUgFAWSki) Unit: โครงสร้างของ Unit ยังไม่ใช่เวอร์ชันที่ optimize เพราะ Racks ไม่ถูกยึดไว้ดีพอ และบางครั้งก็แยกออกจาก Gear ปัญหานี้ไม่เกิดบ่อย แต่ก็กวนใจมากเวลาเกิด กำลังหาทางแก้เหมือนกัน
4. ปัญหาไม่มี Feedback ทางสัมผัส (Haptic Feedback): ในเวอร์ชันดั้งเดิมของอุปกรณ์ Pins ไม่เพียงแต่สร้างเอฟเฟกต์ภาพ แต่ยังให้ Feedback ทางสัมผัสได้ด้วย แต่เราไม่มีงบพอซื้อเครื่องมือที่เกี่ยวข้อง ฟังก์ชันที่เราทำจึงไม่เหมือนของต้นฉบัยมากนัก อย่างไรก็ตาม จุดประสงค์หลักของเราคือการแสดงไอเดียซอฟต์แวร์ ไม่ใช่สร้างฮาร์ดแวร์ขึ้นมาใหม่ ดังนั้นนี่อาจไม่ใช่ปัญหาหลัก
ขอบคุณที่อ่านมาจนจบนะครับ พี่หวังว่าน้องจะสนุกกับมัน