กลับไปหน้ารวมไฟล์
the-new-velocity-74b65e.md

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

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

โปรเจกต์นี้สำรวจข้อผิดพลาดในการทำแผนที่ที่ยังคงอยู่แม้หลังจากยุคของสื่อดิจิทัลได้เริ่มขึ้นแล้ว มันตั้งคำถามว่าข้อมูลและปรากฏการณ์ทางกายภาพเกี่ยวพันกันอย่างไร และในยุคปัจจุบัน สองสิ่งนี้มีน้ำหนักเท่ากันภายใต้สื่อดิจิทัลได้อย่างไร The New Velocity สำรวจว่าปรากฏการณ์ของเกาะ Sandy Island เกิดขึ้นได้เฉพาะภายใต้ความเร็วบางอย่างเท่านั้น เมื่อกองทรายและกองข้อมูลมีความไม่แน่นอนที่คล้ายคลึงกัน

caption (optional)

มุมมองของโปรเจค

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 เพื่อเรียกใช้ฟังก์ชันพวกนี้เฉพาะตอนจำเป็น แต่มันก็แก้ปัญหาได้แค่บางส่วน สุดท้ายวิธีแก้ที่ได้ผลดีกว่าคาดไว้มาก (ถึงแม้จะไม่ใช่วิธีที่อยากใช้ที่สุด) คือการใช้คำสั่งระดับล่างเพื่อคุยกับรีจิสเตอร์โดยตรง

ด้านล่างน้องสามารถดูรูปเพิ่มเติม (และวิดีโอ) ของต้นแบบแรกๆ ของเครื่องที่ทำงานได้เลย:

Prototype

อนาคตที่รอการขยาย

  • เชื่อมต่อแดชบอร์ดแสดงตัวตนบน OLED: ใส่หน้าจอ OLED ขนาดเล็กเพื่อแสดง "จำนวนแปลงทั้งหมด" หรือสถานะอื่นๆ ของระบบ
  • ซิงค์ข้อมูลสภาพอากาศจากเซ็นเซอร์หลายตัว: เชื่อมต่อเซ็นเซอร์วัดสภาพแวดล้อมแบบเฉพาะทาง เพื่อเก็บข้อมูลที่มีความแม่นยำสูงขึ้น
  • ซัพพอร์ตการลงทะเบียนกับอินเทอร์เฟซบนคลาวด์: เพิ่มแดชบอร์ดเว็บเฉพาะทางบนสมาร์ทโฟนผ่าน WiFi/BT เพื่อติดตามและบันทึกประวัติการใช้งานของแปลงทั้งหมดอย่างละเอียด
  • ซัพพอร์ตการปรับแต่งโปรไฟล์ความเร็วขั้นสูง: เพิ่มการเรียนรู้ของเครื่อง (Machine Learning) เฉพาะทางลงในโค้ด เพื่อให้ระบบทริกเกอร์ปรับเปลี่ยนได้อัตโนมัติตามพฤติกรรมการใช้งานของผู้ใช้

The New Velocity เป็นโปรเจกต์ที่เพอร์เฟกต์สำหรับวัยรุ่นสายวิทย์ที่มองหาเครื่องมือสร้างสรรค์แบบอินเทอร์แอคทีฟและน่าสนใจ!

[!IMPORTANT] มอเตอร์สเตปเปอร์ ต้องการการ แมปภาระแรงบิด (Torque load mapping) ที่แม่นยำ (เช่น สำหรับกลไกพล็อตเตอร์ที่หนักมาก) ในขั้นตอนการตั้งค่า เพื่อหลีกเลี่ยงความล้มเหลวของระบบจ่ายไฟ อย่าลืมใส่ ฟลัก Fail-Safe ที่เหมาะสมในลูปเสมอ ถ้าบัสซีเรียลโอเวอร์โหลดนะตัวนี้!

ข้อมูล Frontmatter ดั้งเดิม

title: "The New Velocity - งานง่ายแต่หล่อ มาพล็อตเกาะลึกลับด้วยกัน!"
description: "งานนี้ตึงๆ นะน้อง! The New Velocity คือเครื่องที่เราจะใช้พล็อต "เกาะแซนดี้" เกาะลึกลับที่หายไปจากแผนที่โลก ด้วยวิธีดิจิทัลสุดเทพๆ ใช้เซนเซอร์ อินเตอร์รัพต์ และมอเตอร์ จัดไปแบบไม่ยั้ง!"
author: "lgguts"
category: "Installations"
tags:
  - "generative"
  - "island"
  - "machine"
  - "scanning"
  - "motion sensor"
views: 4547
likes: 6
price: 1499
difficulty: "Intermediate"
components:
  - "2x NEMA 17 Stepper Motor"
  - "1x Raspberry Pi 2 Model B"
  - "1x Arduino UNO"
  - "1x Proximity Sensor"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "c6f92b1973c2a27a54060fca43e96a03d3d3069cf43bb2c1fcbfeec72a2ffa6d"
encryptedPayload: "U2FsdGVkX18s3XQEehEAOQEXOqeUKHH1CELDw7+yVDZ/moH1le3OMqDcWTGpBZ3S6waFYjpxaNKWrRJBGqV379uLc+YsYgdCQVz5RvG00xE="
seoDescription: "The New Velocity: A machine that plots the phantom Sandy Island via digital means. Discover this innovative Arduino project."
videoLinks:
  - "https://player.vimeo.com/video/135616524"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/the-new-velocity-74b65e_cover.jpg"
lang: "en"