กลับไปหน้ารวมไฟล์
midi-controlled-slide-whistle-dbfa3a.md

ชื่อโปรเจกต์: MIDI-Controlled Slide Whistle (ขลุ่ยสไลด์คุมด้วย MIDI ฉบับวิศวะจัดให้)

มันคืออะไรวะ?

โปรเจกต์นี้คือการเอาชุดเฟืองสะพาน (Rack-and-pinion) ที่พิมพ์จากเครื่อง 3D print มาบวกกับพัดลม Blower, บอร์ด Arduino Due และฐานที่ตัดด้วยเลเซอร์ (Laser-cut) มาประกอบร่างเป็นขลุ่ยสไลด์อัตโนมัติ งานนี้ใช้งานได้จริงและค่อนข้างสมบูรณ์แล้วนะน้อง แต่อาจจะต้องเก็บงานอีกนิดหน่อย ในอนาคตกะว่าจะใส่ Limit Switch ไว้ทำ Home position ด้วย (ตอนนี้ยังต้องใช้มือหมุนหาตำแหน่งเริ่มต้นเอาเองอยู่ สู้งานหน่อยนะเรา)

ที่มาของความเฟี้ยว:

วิดีโอโชว์ของ:

ขั้นตอนการสร้าง Midi-Controlled Slide Whistle

โปรเจกต์นี้โคตรสนุกเลยน้อง พัฒนามาแบบงงๆ ตอนแรกกะจะทำเครื่องดนตรีแบบมีลิ้น (Reed-based instrument) ลองเอาลิ้น Saxophone มาติดกับ Mouthpiece ที่ 3D print ออกมา... บอกเลยว่าเกือบไม่รอด! พอเอาไปใส่ท่อ PVC ยาว 5 ฟุต เสียงออกมาอย่างกับ Didgeridoo เฉยเลย หลังจากแก้ไปแก้มา ในที่สุดก็ได้ Fipple (ช่องเป่า) ที่เวิร์กจนได้ (ดูในคลิปประกอบเอาละกัน)

เป้าหมายหลักจริงๆ คืออยากทำเครื่องเป่าจาก PVC ที่สมบูรณ์แบบ แต่ตอนนี้ขอพักมาเล่น 3D print ทำ Fipple flute ก่อนละกัน ตัวต้นแบบแรกที่เวิร์ก พี่เอาไปใช้ในคลิป Cover เพลงของวง Cream เมื่อเดือนก่อนด้วยนะ จัดไปวัยรุ่น:

สรุปสั้นๆ คือสุดท้ายมันกลายเป็น Slide whistle เพื่อเปลี่ยนตัวโน้ต แถมพี่ได้ขุดเอา Code เก่าจากโปรเจกต์ "SMERK" (Semi Manual Electric Rail Kalimba) เมื่อกลางปี 2020 มาโมใช้ใหม่ได้ด้วย ประหยัดเวลาไปได้เยอะเลยหล่ะ

เอาละ เลิกโม้แล้วมาดูงานดีไซน์กัน:

ภาพรวมการออกแบบ ปรัชญาการออกแบบคือเน้นของถูกและหาง่าย เหมือนพวกอะไหล่เครื่อง 3D printer (พัดลม Centrifugal blower, ราง Linear rail 8mm) ผสมกับงาน 3D printed และ Laser cut

งาน Hardware/Mechanical ทั้งหมดทำใน Fusion360 จุดที่ต้องนั่งงมและแก้ซ้ำๆ คือ:

  • ตัว Fipple (ส่วนของนกหวีดที่ลมต้องพุ่งผ่าน) พี่ทำแบบผ่าครึ่งไว้ให้ดูในวิดีโอด้วย จะได้เข้าใจง่ายๆ
  • ความสูงและขนาดของชุดเฟือง Pinion และ Motor mount (ถ้าเฟืองใหญ่ไป Motor จะไม่มีแรงหมุน (Torque) พอนะน้อง)
  • การประกอบ O-Ring กับราง 8mm (มีชิ้นส่วน 3D print เล็กๆ ที่ไว้ล็อก O-ring พี่ต้องปรับขนาดหลายรอบมาก ตอนนี้ก็ยังฟิตไปนิดนึง)

งานนี้ใช้ M3 heated inserts กับสกรู 1/4-20 เพียบเลย เพราะพี่มีของเหลือสต็อกไว้เยอะ... [ปลดล็อกความสำเร็จ: ใส่ทั้งระบบนิ้วและเมตริกในงานเดียวกันเฉย]

ไส้ในและสมองกล (Firmware & Electrical): บอร์ดที่เลือกใช้คือ Arduino Due ประกบกับ CNC Shield v.3 และ Driver A4988 นี่คือสูตรสำเร็จของพี่เลยถ้าจะเล่น MIDI + USB + NEMA17 Stepper Motors แบบด่วนๆ

ส่วน Stepper motor ใช้รุ่น 2A NEMA17 ของ STEPPERONLINE ตั้งค่า Microstepping ไว้ที่ 1/8 เพื่อให้ได้ความเร็วที่โอเคและไม่หนวกหูจนเกินไป

Firmware ยังเป็น Sketch ร่างๆ สำหรับ Arduino Due อยู่ พี่มองว่ามันคือการแมพค่า MIDI บางช่วงไปเป็นตำแหน่งของ Stepper motor ตอนนี้ยังมีพวก Dead-waits (คำสั่งหน่วงเวลาโง่ๆ) อยู่บ้าง เดี๋ยวค่อยหาทางเอาออก แต่รวมๆ ก็ใช้งานได้แหละ

คำเตือน: ตัวแปรบางตัวอาจจะชื่อแปลกๆ เพราะก๊อปมาจากโปรเจกต์ Kalimba (ขออภัยในความมั่วซั่วระหว่าง "kalimba" กับ "flute" ด้วยนะน้อง) พี่ตั้งค่า Firmware ให้ใช้แกน Y บน CNC Shield เพราะแกน X พี่เอาไว้คุมเครื่องดนตรีอื่น Code นี้ใช้ Library MIDIUSB ของ Arduino ซึ่งช่วยให้การทำ MIDI USB ผ่านพอร์ต Native ของ Arduino Due ง่ายเหมือนปอกกล้วย

มี Macro #define isTuning ไว้ให้ด้วยนะ เอาไว้ให้เรา Tune เสียงเครื่องดนตรี แค่เสียบพอร์ต USB แล้วพิมพ์จำนวน Steps ลงไป แล้วเอาตัวเลขพวกนั้นไปใส่ในไฟล์ pulleyPositions.h ก็เรียบร้อย

การสร้างชิ้นส่วน

  • Base-plate ตัดเลเซอร์จากพลาสติกใสหนา 1/4" (ไฟล์ .dxf)
  • ชิ้นส่วนอื่นๆ ส่วนใหญ่ 3D print เอา
  • ท่อ PVC ขนาดรูใน 1/2" ตัดยาวประมาณ 400mm

โน้ตไว้นิดนึง: โปรเจกต์นี้ต้องใช้ทั้งงานเลเซอร์, การฝัง Heated inserts ด้วยหัวแร้ง, งาน 3D print และต้องใจเย็นๆ ตอน Tune เสียงหน่อยนะ...

วิธีประกอบ (ตั้งใจฟังนะน้อง)

Step 1 แนะนำให้ดูวิดีโอก่อนเพื่อทำความเข้าใจหลักการออกแบบและขั้นตอนการประกอบเบื้องต้น อ่านคำแนะนำให้จบก่อนลงมือทำล่ะ เดี๋ยวหาว่าพี่ไม่เตือน!

Step 2 ได้เวลาหาของและเริ่มทำ ชิ้นส่วน 3D print พี่ใช้เครื่อง FDM (Creality CR-10) พิมพ์ไฟล์ .stl ที่ให้ไว้ ส่วนฐานใช้เครื่องเลเซอร์ตัดไฟล์ .dxf สำหรับแผ่น Acrylic แนะนำหนา 1/4" ขึ้นไป สกรูจะได้ไม่โผล่ทะลุลงไปด้านล่าง ถ้าใครใช้เครื่อง 3D print เล็กกว่า 300x300mm ให้พิมพ์ไฟล์ Rack อันที่สั้นกว่านะ

Step 3 หมายเหตุ: บางจุดที่มีรูสำหรับ Heated insert พี่ไม่ได้ใช้นะในเวอร์ชันจบ ใช้หัวแร้งค่อยๆ กด Heated inserts ลงไป ถ้าไม่เคยทำ พี่แนะนำให้ลองกับเศษงาน 3D print ก่อนนะน้อง เดี๋ยวชิ้นจริงละลายแล้วจะร้องไห้เอา! จุดที่ต้องใส่ Heated Inserts:

  • Motor Mount / Base Plate Bracket
  • Whistle Top / Fipple
  • Pinion Gear
  • Stability Bracket
  • Pipe and Bearing Clamp Bracket
  • Pipe Bottom Clamp Bracket

Step 4 พอได้แผ่น Acrylic สวยๆ มาแล้ว ก็เอาสว่านเจาะและต๊าปเกลียว 1/4-20 เลย พี่ใช้สว่านมือค่อยๆ ทำ ไม่ต้องใช้น้ำยาหล่อลื่นก็ได้สำหรับ Acrylic

Step 5 ใช้สกรู 1/4-20 x 5/8" ยึดบรรดา Bracket ที่ 3D print มาเข้ากับแผ่นฐาน

Step 6 (ถ้าใช้ลูกปืน LM8UU อย่าลืมร้อยเข้ากับ Rod ก่อนนะ) ติดตัว Plunger adapter เข้ากับปลาย Rod ด้านหนึ่ง ส่วนอีกด้านติดชุดเฟือง Rack ที่ 3D print มา ยึดด้วย Epoxy ให้แน่นๆ พอมันแห้งแล้ว ก็เอา O Ring ใส่เข้าไปในร่องของตัว Plunger ได้เลย

Step 7 เสียบชุด Plunger เข้าไปในท่อ PVC วางท่อลงบนประกับ (Clamp brackets) แล้วใช้สกรู M3x16 ขันยึดประกับตัวบนเพื่อล็อกท่อให้แน่น

Step 8 ประกอบ Blower Adapter เข้ากับ Whistle Top ด้วยสกรู M3x16 จากนั้นติดพัดลม Blower ด้วยสกรู M3x22mm และน็อตตัวเมีย M3 ขันหลวมๆ ก่อนแล้วค่อยสไลด์พัดลมเข้าที่ แล้วค่อยกดทั้งชุดลงบนปลายท่อ PVC

Step 9 ได้เวลาประกอบชุดขับเคลื่อน (Drive mechanism) จะมี Motor mount, Motor และเฟือง Pinion ตอนประกอบ Motor mount ให้ดันถอยหลังให้สุดก่อนขันยึด (ตัวนี้ดีไซน์มันกวนหน่อย ปรับยากทีหลัง) ใช้สกรู M3 ยึดด้านหน้า และ 1/4-20 x 1" ยึดด้านหลัง พอยึด Mount แล้วก็ติด Motor ด้วยสกรู M3x10 ขันหลวมๆ ไว้ก่อนจนกว่าจะใส่เฟือง Pinion และจัดแนวในร่องให้เป๊ะ ใส่เฟือง Pinion แล้วขัน Set screw ให้แน่น ระวังอย่าให้รูดล่ะ ค่อยๆ ขยับให้เฟือง Pinion กับ Rack สบกันพอดี แล้วค่อยกดตัว Motor ลงมาให้เฟืองมันขบกันแน่นๆ แล้วค่อยขันน็อตให้จม

Step 10 พี่ใช้ CNC Shield เพราะมันเพิ่ม Motor หรือ Driver ได้ง่ายดี สำคัญ: Code นี้ใช้แกน "Y" และ Microstepping 1/8 นะน้อง เพราะฉะนั้นจัมเปอร์ที่ตำแหน่ง M0 และ M1 บน Shield ด้วย เสียบสาย Motor ให้ถูกขั้ว (ดูรูปประกอบ) ถ้าหมุนผิดทางก็แค่สลับปลั๊กหรือไปแก้ค่าติดลบใน Code เอา จ่ายไฟ 24V (หรือ 12V ถ้าพัดลมเราเป็นแบบ 12V) อย่าลืมจูนกระแส (Current) ที่ตัว Driver ให้เหมาะกับ Motor ที่ใช้ด้วยล่ะ ห้ามช็อตนะตัวนี้!

รวมไฟล์แจกฟรี

Arduino_Due_Sketch_Rev3.zip: ไฟล์ Code และ Header Whistle_Rack_and_Pinion_build_files.zip: ไฟล์ STL, DXF, STEP สำหรับสายสร้าง Images.zip: รูปประกอบการออกแบบ Demo_Slide_Whistle.mp4: วิดีโอโชว์การใช้งาน


เจาะลึกทางเทคนิค (ฉบับขิงรุ่นน้อง)

จาก Digital สู่เครื่องดนตรี Acoustic

MIDI Slide Whistle คือการรวมร่างระหว่างเครื่องดนตรีกลไกกับระบบไฟฟ้า โดยใช้ Arduino "เป่า" และ "เล่น" ขลุ่ยจริงๆ ผ่านข้อมูล MIDI

  • Linear Motorized Positioning: ใช้ชุดขับเคลื่อน Linear ความเร็วสูงเพื่อเลื่อนก้านขลุ่ย โดย Arduino จะแปลงเลขโน้ต MIDI (0-127) ให้กลายเป็นระยะมิลลิเมตรที่แม่นยำบนก้านสไลด์
  • Dynamic Airflow Modulation: คุมพัดลม Blower 12V โดยใช้สัญญาณ PWM จาก Arduino เพื่อปรับความแรงของลมตามค่า Velocity (น้ำหนักการกดโน้ต) ที่ส่งมาจาก MIDI

ความเทพของมัน

  • ลูกเล่น Pitch-Bend สุดพริ้ว: Firmware นี้รองรับ MIDI Pitch Bend แบบ Real-time ทำให้ก้านขลุ่ยขยับลื่นไหล ทำเสียงรูด (Glissandos) ได้พริ้วสุดๆ แบบที่ขลุ่ยสไลด์ควรจะเป็นเลยล่ะ หล่อเท่แน่นอนงานนี้!

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

title: "MIDI-Controlled Slide Whistle"
description: "Uses an Arduino Due and a stepper motor + driver to control a slide whistle made of 3D-printed parts and PVC pipe. Laser-cut base plate."
author: "themixedsignal"
category: "Audio & Sound"
tags: []
views: 4291
likes: 2
price: 2450
difficulty: "Intermediate"
components:
  - "20x 1/4-20 x 5/8\" Screws"
  - "12x M3x16 Screws"
  - "1x Linear Rack (long or short)"
  - "1x Base plate part 2"
  - "1x 400mm Length of 1/2\" ID PVC Pipe"
  - "1x Base plate connector bracket"
  - "4x 1/4-20 x 1\" or 1/4-20 x 1.25\" Screws"
  - "1x O-Ring"
  - "1x NEMA17 Stepper Motor: 2A"
  - "1x Plunger Adapter"
  - "1x 12V or 24V Power Supply for Stepper Motor"
  - "10x M3x10 Screws"
  - "1x 8mm x 400mm Rod"
  - "1x Fan Adapter"
  - "1x CNC Shield v3 (Optional)"
  - "2x Tube Holder Top"
  - "1x Motor Mount"
  - "1x Base plate part 1"
  - "1x 24V Power Supply for Blower Fan"
  - "16x M3 Heated Inserts"
  - "1x Bearing Holder Top (Optional)"
  - "1x Stepper Motor Driver"
  - "4x 1/4-20 Hex Nuts"
  - "1x Bottom Motor Mount and Rack Guide"
  - "1x 50mm x 15mm Blower Fan"
  - "1x Whistle Top"
  - "1x Stability Bracket"
  - "1x Pinion Gear"
  - "1x Arduino Due"
  - "1x LM8UU Bearing (Optional)"
  - "2x Single-Sided Rack Capture"
  - "1x Bearing and Tube Holder"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "56a8b7efa8c32eb962385d0d9bee163870cdd2866415384bd1032d102999c553"
encryptedPayload: "U2FsdGVkX1/N68OufxnLD/h6l30Q5XJT9/vpUVu95iS5TMhIUA6Ti9v0fqxdEzsAV42FcWCe8Tz/8Fb8DUNroyBMMPALp6K1pIo8hKgqMyA="
seoDescription: "MIDI-controlled Slide Whistle project featuring Arduino Due, stepper motor, 3D-printed parts, and PVC pipe."
videoLinks:
  - "https://www.youtube.com/embed/p-gjM94Bu5E"
  - "https://www.youtube.com/embed/VaGBY9zagCU"
  - "https://www.youtube.com/embed/p-gjM94Bu5E"
  - "https://cdn.hackaday.io/files/1743487459304832/Demo_Slide_Whistle.mp4"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/midi-controlled-slide-whistle-dbfa3a_cover.jpg"
lang: "th"