
The New Velocity คือเครื่องจักรที่วาดแผนที่เกาะผี Sandy Island ด้วยวิธีการดิจิทัล โดยการจำลองสภาพปรากฏการณ์เดียวกันกับที่เคยมีคนเห็นเกาะนี้ในปี 1876 มันพยายามจะสร้าง "บั๊ก" การทำแผนที่ขึ้นมาใหม่ ซึ่งเคยปรากฏอยู่ในแผนที่ทั่วโลกมาจนถึงปี 2012 เครื่องนี้บันทึกชุดข้อมูลใหม่ที่สนับสนุนการมีอยู่ของเกาะต่อไป โดยการจัดการกับการปรากฏตัวของมันในโลกดิจิทัล
กองทรายถูกสแกนด้วยเซ็นเซอร์วัดระยะอินฟราเรด ซึ่งเคลื่อนที่ขึ้นลงเหนือแท่นที่เลียนแบบการเคลื่อนไหวของเรือที่ลอยอยู่กลางทะเลลึก ข้อมูลเชิงพื้นที่ถูกแมปและแสดงผลแบบเรียลไทม์ เครื่องนี้ทำงานภายใต้โหมดที่ตั้งไว้ล่วงหน้าสี่โหมด แต่ละโหมดสำหรับชุดข้อมูลที่มันบันทึก: พิกัดแนวชายฝั่ง, ความลึกของน้ำโดยรอบ, ความสูงของภูมิประเทศ และการติดแท็กตำแหน่งทางภูมิศาสตร์ดิจิทัล ชุดข้อมูลแต่ละชุดเป็นหลักฐานการมีอยู่ของเกาะเล็กๆ ภายในบริเวณของเกาะ และจะถูกอัปโหลดต่อไป
โปรเจกต์นี้สำรวจข้อผิดพลาดในการทำแผนที่ที่ยังคงอยู่แม้หลังจากยุคของสื่อดิจิทัลได้เริ่มขึ้นแล้ว มันตั้งคำถามว่าข้อมูลและปรากฏการณ์ทางกายภาพเกี่ยวพันกันอย่างไร และในยุคปัจจุบัน สองสิ่งนี้มีน้ำหนักเท่ากันภายใต้สื่อดิจิทัลได้อย่างไร The New Velocity สำรวจว่าปรากฏการณ์ของเกาะ Sandy Island เกิดขึ้นได้เฉพาะภายใต้ความเร็วบางอย่างเท่านั้น เมื่อกองทรายและกองข้อมูลมีความไม่แน่นอนที่คล้ายคลึงกัน




มุมมองของโปรเจค
The New Velocity คือการสำรวจเทคโนโลยีทางศิลปะและการโต้ตอบแบบเคลื่อนไหว (kinetic interaction) ที่ลงลึกและซับซ้อนมากๆ โดยเน้นไปที่พื้นฐานสำคัญ—นั่นคือ การแมปการเคลื่อนไหวไปสู่การพล็อตแบบเจเนอเรทีฟ (motion-to-generative-plotting mapping) และ ตรรกะการส่งงานจาก Processing ไปยัง Servo ที่มีประสิทธิภาพสูง (high-performance Processing-to-Servo-dispatch logic)—น้องจะได้เรียนรู้วิธีการสื่อสารและประสานงานภารกิจสร้างสรรค์ต่างๆ โดยใช้ตรรกะซอฟต์แวร์เฉพาะทางและการตั้งค่าที่เสถียรและแรงฉุดมาก
หลักการทำงาน:
เครื่องนี้ใช้ Arduino Uno ควบคุม NEMA 17 stepper motors จำนวน 2 ตัว ผ่าน low-voltage stepper motor driver carriers 2 ตัว โดยมอเตอร์ตัวหนึ่งควบคุม "จานหมุน (turntable)" ที่มีทรายอยู่ด้านบน โดยใช้ aluminum mounting hub ส่วนอีกตัวควบคุมสไลด์เดอร์ 1 แกนให้เคลื่อนที่ในแนวตั้ง โดยใช้ aluminum shaft coupler เชื่อมต่อกับ threaded rod and a traveller สไลด์เดอร์แนวตั้งนี้บรรจุไดโอดเลเซอร์สีแดงและ 4-30cm SHARP infra-red sensor ไว้ ส่วนตัวควบคุมมี LED สีแดงธรรมดา 4 ดวง และปุ่มสวิตช์สำหรับหยุด/เริ่มการเคลื่อนที่หรือการบันทึกข้อมูลของเครื่อง
การนำไปใช้ทางเทคนิค: เวกเตอร์การเคลื่อนไหวและพิกัดแบบเจเนอเรทีฟ
โปรเจคนี้เผยให้เห็นเลเยอร์ที่ซ่อนอยู่ของการโต้ตอบแบบเซนซิ่งสู่การเคลื่อนไหวอย่างง่าย:
- เลเยอร์ระบุตัวตน (Identification layer): เซนเซอร์อินฟราเรด SHARP ทำหน้าที่เป็นดวงตาที่มีความละเอียดสูงในเชิงพื้นที่ คำนวณแต่ละจุดบนพื้นผิวของกองทรายเพื่อสร้างข้อมูลพิกัดสำหรับการส่งงานแบบเจเนอเรทีฟ
- เลเยอร์แปลงข้อมูล (Conversion layer): ระบบใช้โปรโตคอลดิจิทัลความเร็วสูงเพื่อรับข้อมูลชุด PWM ความเร็วสูง เพื่อประสานงานภารกิจเซนซิ่งที่สำคัญ
- เลเยอร์อินเทอร์เฟซการเคลื่อนไหว (Kinetic Interface layer): มอเตอร์สเต็ปเปอร์ NEMA 17 จำนวน 2 ตัว ให้ฟีดแบ็คทางภาพและกลไกที่มีความละเอียดสูงสำหรับการตรวจสอบสถานะทางศิลปะแต่ละครั้ง (เช่น การเคลื่อนไหวในการพล็อต)
- เลเยอร์อินเทอร์เฟซภาพ (Visual Interface layer): แอปพลิเคชัน OpenFrameworks (Generative) ให้การส่งข้อมูลด้วยมือหรือการตรวจสอบสถานะซิงค์กับคลาวด์แบบอัตโนมัติระหว่างการปรับเทียบเริ่มต้น เพื่อประสานสถานะของระบบ
- ตรรกะการประมวลผล (Processing Logic): โค้ดเซิร์ฟเวอร์ใช้กลยุทธ์ "สถานะสู่พล็อตเตอร์ (state-to-plotter)" หรือการส่งงานทางศิลปะ (artistic-dispatch): มันตีความอินพุตจากเซนเซอร์และจับคู่สถานะของเซอร์โวและโปรเจคเตอร์ เพื่อให้การพล็อต "เกาะล่องหน (phantom-island)" ที่ปลอดภัยและเป็นจังหวะ
- ลูปการสื่อสาร (Communication Dialogue Loop): โค้ดโน๊ตจะถูกส่งเป็นจังหวะไปยัง Serial Monitor ในระหว่างการปรับเทียบเริ่มต้น เพื่อประสานสถานะของระบบ
โปรแกรมที่เขียนสำหรับ Arduino จะควบคุมการเคลื่อนไหวของมอเตอร์ ควบคุม LED บนตัวควบคุม รับฟังสัญญาณจากปุ่มควบคุมและข้อมูลจากเซนเซอร์อินฟราเรดบนสไลด์เดอร์ ไดโอดเลเซอร์ให้ฟีดแบ็คทางกายภาพเพื่อบอกว่าเซนเซอร์กำลังอ่านข้อมูลอยู่ ส่วน LED จะบอกว่าชุดข้อมูล (preset/dataset) ใดกำลังถูกประมวลผลอยู่ มอเตอร์ทำงานโดยใช้ไลบรารี AccelStepper library for Arduino และชุดข้อมูลแต่ละชุดที่ถูกประมวลผลจะมีค่าการเคลื่อนไหวที่ถูกตั้งค่าแบบฮาร์ดโค้ดไว้ในโปรแกรม แม้ว่า "เกาะทราย" จะเป็นอันเดียวกัน แต่แต่ละชุดข้อมูลจะสร้างผลลัพธ์ที่แตกต่างกัน เนื่องจากการเคลื่อนที่ของสไลด์เดอร์และ/หรือจานหมุนที่ต่างกัน
สุดท้ายแต่ไม่ท้ายสุด ข้อมูลที่ได้จากเซนเซอร์จะถูกถ่ายโอนผ่านสาย USB serial ไปยัง Raspberry Pi ที่รันโปรแกรมที่เขียนด้วย C++ โดยใช้เฟรมเวิร์ค OpenFrameworks เพื่อสร้างภาพแบบเจเนอเรทีฟเรียลไทม์ และยังใช้ในการแยกข้อมูลจาก Arduino ออกเป็นชุดข้อมูลต่างๆ
ฮาร์ดแวร์และโครงสร้างพื้นฐาน (แบบช่างๆ)
- Arduino Uno: ตัว "สมอง" ของโปรเจกต์นี้เลยว่ะ จัดการเรื่องการอ่านค่าจากเซนเซอร์หลายทิศทาง และประสานงานกับสเต็ปเปอร์มอเตอร์และการซิงค์กับ Processing
- เซนเซอร์วัดระยะ SHARP IR: เป็นตัวให้สัญญาณ "Trigger Link" ที่ชัดเจนและแม่นยำสำหรับทุกจุดในการสแกนกองทราย
- สเต็ปเปอร์มอเตอร์ความแม่นยำสูง (NEMA 17): ให้กำลังและความน่าเชื่อถือระดับพรีเมียมสำหรับทุก "ภารกิจเคลื่อนไหว" ของเครื่อง
- โครงสร้างกลไกแบบสั่งทำเอง (สไลด์เดอร์และแท่นหมุน): สำคัญมากสำหรับการปกป้องฮาร์ดแวร์ทุกชิ้นในโครงให้ปลอดภัยและประหยัดพลังงาน เหมือนในรูปโปรเจกต์เลย
- โปรเจคเตอร์ (ผ่าน Raspberry Pi/OpenFrameworks): สำคัญสำหรับการแสดงผลภาพที่ชัดเจนและประหยัดพลังงาน ให้เห็นข้อมูลจากเซนเซอร์ในรูปแบบศิลปะ
- สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino และเป็นอินเทอร์เฟซหลักสำหรับควบคุมระบบ
ระหว่างทำต้นแบบ:
ใช้เวลาพอสมควรเลยน้องในการทดลองและหาการตั้งค่าที่ดีที่สุดสำหรับเครื่อง โดยเฉพาะเรื่องของมอเตอร์และวิธีที่จะทำให้มันเคลื่อนไหวได้ ในที่สุดก็เลือกใช้สเต็ปเปอร์มอเตอร์สองตัวเพื่อควบคุมการเคลื่อนไหวได้แม่นยำขึ้น และใช้ไดรเวอร์แรงดันต่ำเพื่อให้งานง่ายขึ้นและเล่นกับไลบรารี AccelStepper ได้สะดวกขึ้น
มีปัญหากวนใจอยู่อย่างนึงคือ ตอนรันระบบทั้งหมดพร้อมกันบน Arduino Uno มันช้าลงมากเลย ลองเปลี่ยนไปใช้ Arduino Mega ก็ยังไม่เวิร์ค แยกกันรันทีละส่วนก็ลื่นปรื้ด แต่พอรวมกันทีไรมีปัญหาทุกที ใช้เวลาหน่อยถึงจะเจอว่า `digitalWrite()` กับ `analogRead()` ในลูปหลักนี่แหละตัวดีที่ทำให้ช้า วิธีแก้แรกคือเขียนคลาส "Timer" ขึ้นมาเองใน Arduino เพื่อเรียกใช้ฟังก์ชันพวกนี้เฉพาะตอนจำเป็น แต่มันก็แก้ปัญหาได้แค่บางส่วน สุดท้ายวิธีแก้ที่ได้ผลดีกว่าคาดไว้มาก (ถึงแม้จะไม่ใช่วิธีที่อยากใช้ที่สุด) คือการใช้คำสั่งระดับล่างเพื่อคุยกับรีจิสเตอร์โดยตรง
ด้านล่างน้องสามารถดูรูปเพิ่มเติม (และวิดีโอ) ของต้นแบบแรกๆ ของเครื่องที่ทำงานได้เลย:





อนาคตที่รอการขยาย
- เชื่อมต่อแดชบอร์ดแสดงตัวตนบน OLED: ใส่หน้าจอ OLED ขนาดเล็กเพื่อแสดง "จำนวนแปลงทั้งหมด" หรือสถานะอื่นๆ ของระบบ
- ซิงค์ข้อมูลสภาพอากาศจากเซ็นเซอร์หลายตัว: เชื่อมต่อเซ็นเซอร์วัดสภาพแวดล้อมแบบเฉพาะทาง เพื่อเก็บข้อมูลที่มีความแม่นยำสูงขึ้น
- ซัพพอร์ตการลงทะเบียนกับอินเทอร์เฟซบนคลาวด์: เพิ่มแดชบอร์ดเว็บเฉพาะทางบนสมาร์ทโฟนผ่าน WiFi/BT เพื่อติดตามและบันทึกประวัติการใช้งานของแปลงทั้งหมดอย่างละเอียด
- ซัพพอร์ตการปรับแต่งโปรไฟล์ความเร็วขั้นสูง: เพิ่มการเรียนรู้ของเครื่อง (Machine Learning) เฉพาะทางลงในโค้ด เพื่อให้ระบบทริกเกอร์ปรับเปลี่ยนได้อัตโนมัติตามพฤติกรรมการใช้งานของผู้ใช้
The New Velocity เป็นโปรเจกต์ที่เพอร์เฟกต์สำหรับวัยรุ่นสายวิทย์ที่มองหาเครื่องมือสร้างสรรค์แบบอินเทอร์แอคทีฟและน่าสนใจ!
[!IMPORTANT] มอเตอร์สเตปเปอร์ ต้องการการ แมปภาระแรงบิด (Torque load mapping) ที่แม่นยำ (เช่น สำหรับกลไกพล็อตเตอร์ที่หนักมาก) ในขั้นตอนการตั้งค่า เพื่อหลีกเลี่ยงความล้มเหลวของระบบจ่ายไฟ อย่าลืมใส่ ฟลัก Fail-Safe ที่เหมาะสมในลูปเสมอ ถ้าบัสซีเรียลโอเวอร์โหลดนะตัวนี้!