ย้อนกลับไปตอนเดือนสิงหาคม 2017 ตอนนั้นพี่อายุ 15 อยากจะทำโปรเจควิศวะอะไรสักอย่างที่ทั้งสนุกและได้เรียนรู้ไปด้วย เก็บ Arduino Uno ไว้ในลิ้นชักมานานแสนนาน พอดีมีโอกาสก็เลยคว้ามาอัดโปรเจคใหม่ซะเลย
พี่ชอบดูพวกเปียโนที่กดเองได้มาตลอด มันมีอะไรบางอย่างที่ทำให้ดูมหัศจรรย์มากเวลาดูก้านคีย์ขยับเองอัตโนมัติ พี่เลยอยากทำอะไรแบบนั้นบ้าง สิ่งที่ไม่ได้แค่ทำงานได้ แต่ต้องทำให้คนดูว้าวด้วย และที่สำคัญ ต้องใช้งบน้อย!
เป้าหมายหนึ่งของพี่คือการพิสูจน์ว่าเราสามารถสร้างสิ่งที่น่าทึ่งด้วยงบประมาณจำกัดได้ และพี่คิดว่าพี่ทำสำเร็จแล้ว ในขณะที่ระบบเล่นอัตโนมัติจากยามาฮ่าหรือ Pianodisc ราคาเริ่มต้นที่ 10,000 ดอลลาร์ขึ้นไป แต่ระบบของพี่สร้างเองด้วยงบประมาณเพียง 650 ดอลลาร์เท่านั้น! และไม่ใช่แค่นั้น พอคุณซื้อเปียโนระบบอัตโนมัติราคาแพงมาแล้ว คุณยังต้องเสียเงินซื้อแอปและเพลงเพิ่มเติมอีก แต่ของพี่ไม่ต้อง! พี่พอใจกับผลลัพธ์ที่ออกมามาก และตื่นเต้นที่จะได้ใช้มันในอนาคต
เอกสารรายละเอียดขั้นตอนการสร้างเปียโนระบบอัตโนมัตินี้ สามารถดูได้ที่นี่: เอกสารรายละเอียดการสร้าง
มุมมองของโปรเจค
MIDI Player Piano Powered by Arduino คือการสำรวจโลกแห่งวิศวกรรมดนตรีและการเชื่อมโยงระหว่าง MIDI กับกลไกอย่างลึกซึ้ง ด้วยการโฟกัสที่ส่วนประกอบหลัก—อาร์เรย์โซลินอยด์ 88 ตัว และระบบจ่ายไฟกระแสสูง—น้องจะได้เรียนรู้วิธีการสื่อสารและเล่นเปียโนอะคูสติกโดยใช้ซอฟต์แวร์ลอจิกเฉพาะทางและการตั้งค่ากลไกที่แข็งแกร่ง
การลงมือทำจริง: โซลินอยด์และลอจิก MIDI
โปรเจคนี้จะเผยให้เห็นเลเยอร์ที่ซ่อนอยู่เบื้องหลังการโต้ตอบระหว่างโค้ดง่ายๆ กับดนตรี:
- เลเยอร์ระบุตัวตน: โซลินอยด์ JF-1039B จำนวน 88 ตัว ทำหน้าที่เป็น "นิ้วลม" ความละเอียดสูง ให้แรงกระแทกทางกายภาพสำหรับแต่ละคีย์เปียโน
- เลเยอร์แปลงสัญญาณ: Arduino Mega ใช้ข้อมูล MIDI (ผ่าน Serial หรือ Bluetooth) เพื่อถอดรหัสข้อความ "Note On" และ "Velocity"
- เลเยอร์ลอจิกประมวลผล: โค้ด Arduino ใช้กลยุทธ์ "sequential decoding" (หรือการจับคู่เวลาด้วยคิว): มันตีความสตรีม MIDI และจับคู่พัลส์ของโซลินอยด์เพื่อสร้างการแสดงดนตรีที่มีความละเอียดสูง
- เลเยอร์อินเตอร์เฟซกำลังสูง: แบงค์ของ รีเลย์ (หรือ MOSFET) จัดเตรียมกระแสและกำลังไฟสูงที่จำเป็นสำหรับโซลินอยด์ 12V/24V ในขณะที่ปกป้องไมโครคอนโทรลเลอร์
- เลเยอร์อินเตอร์เฟซภาพ: จอแสดงผล LCD 20x4 ให้ฟีดแบ็คภาพความละเอียดสูงสำหรับการตรวจสอบสถานะ MIDI ทุกครั้ง (เช่น "Song: Chopin Op. 9")
ฮาร์ดแวร์และโครงสร้างพื้นฐาน
- Arduino Mega 2560: คือ "สมอง" ของโปรเจกต์นี้ จัดการจังหวะการทำงานของโซลินอยด์หลายช่องทางและประสานข้อมูลสตรีม MIDI
- อาร์เรย์โซลินอยด์ 88 ตัว: ให้แรงกดทางกายภาพและทิศทางสำหรับทุกคีย์ของนักเปียโน
- โมดูล Bluetooth MIDI: จัดการส่งข้อมูลความเร็วสูงและเสถียรสำหรับการอัปเดต MIDI จากสมาร์ทโฟน
- แหล่งจ่ายไฟ 24V กระแสสูง: สำคัญมากสำหรับการจ่ายกระแส 20A+ เพื่อให้กดคีย์หลายตัวพร้อมกันและควบคุมเพดัลได้
- รางติดตั้งแบบกำหนดเอง: ให้โครงสร้างทางกลที่มีความแม่นยำสูงสำหรับโซลินอยด์กว่า 100 ตัวที่อยู่หลังคีย์เปียโน
- สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino และเป็นแหล่งจ่ายไฟหลักในขั้นตอนตั้งต้น
คุณสมบัติเด่น
- เล่นเพลงใดก็ได้จากไฟล์ MIDI ซึ่งเป็นไฟล์ประเภทหนึ่ง (คล้าย mp3) ที่บันทึกโน้ตเฉพาะของเพลงไว้ ไฟล์ MIDI เป็นที่นิยมมาก หาเพลงอะไรก็เจอในรูปแบบนี้
- เชื่อมต่อกับเปียโนได้ทั้งผ่านสายไปยังคอมพิวเตอร์ หรือผ่าน Bluetooth ไปยังสมาร์ทดีไวซ์
- โปรแกรมอย่าง Synthesia และ Piano From Above ทำให้เล่นเพลงใดก็ได้ในทันที หรือใช้ PianoStream แอปสตรีม MIDI เพื่อเปิดเพลงบนเปียโนแบบวิทยุได้เป็นชั่วโมง
- บันทึกเพลงเป็นไฟล์ MIDI ง่ายๆ ด้วยคีย์บอร์ดดิจิทัล แล้วเล่นซ้ำบนเปียโนได้ทันที
- เปียโนยังใช้งานปกติได้ แม้ในขณะที่มันกำลังเล่นเพลงอยู่! นักเปียโนสามารถฝึกซ้อมหรือเล่นเพลงไปพร้อมกับมันได้
- ประสิทธิภาพ - เปียโนสามารถถอดรหัสข้อมูล MIDI และจัดเวลากดแต่ละคีย์เพื่อสร้างเสียงตามที่ตั้งใจ แม้ว่าข้อมูลที่ส่งมาจะเล่นตามไม่ได้ในทางทฤษฎีก็ตาม
- ระบบควบคุมเพดัลแดมเปอร์ (ซัสเทน) เพื่อสร้างการแสดงที่สมจริง
- ระบบควบคุมความดัง (velocity) ของแต่ละคีย์ได้ ทำให้เล่นโน้ตเบาหรือดังตามข้อมูล MIDI ที่ได้รับ
- มีกล่องควบคุมด้านหน้าของเปียโน สำหรับสวิตช์เปิด/ปิด ปุ่มปรับระดับเสียง และปุ่มเปลี่ยนการตั้งค่าต่างๆ ของเปียโน
ขั้นตอนการเล่นและโต้ตอบ
กระบวนการแปลง MIDI เป็นเสียงเปียโนออกแบบมาให้มีประสิทธิภาพสูง:
- เตรียมฮาร์ดแวร์: ติดตั้งโซลินอยด์ 88 ตัวบนรางแบบกำหนดเองให้ถูกต้อง และเชื่อมต่อกับแบงค์รีเลย์และ Arduino
- ตั้งค่าซิงค์กำลังสูง: ในฟังก์ชัน
setup()กำหนดอัตราบอด (baud rate) ของ MIDI (31250 bps) และเริ่มต้นใช้งานพินเอาต์พุตดิจิทัลทั้ง 88 พิน - ลูปประสานงานภายใน: เปียโนจะตรวจสอบ MIDI ประสิทธิภาพสูงอย่างต่อเนื่องและอัปเดตสถานะคีย์แบบเรียลไทม์ไปกับเพลง
- แสดงผลแบบเห็นภาพ: ดูสิว่าเปียโนอะคูสติกของคุณกลายเป็นสัญญาณภาพที่เคลื่อนไหวไปกับจังหวะ พลั๊งๆ ตามการตั้งค่า MIDI ของคุณ
ไอเดียสำหรับอนาคต & การขยาย功能
- บันทึกไฟล์ MIDI ด้วยตัวเปียโนเองได้
- ผสานทั้งเสียงและ MIDI เข้าด้วยกัน
- เพิ่ม OLED Dashboard: ติดจอ OLED ขนาดเล็กบนกล่องควบคุมหน้าเปียโน เพื่อแสดง "BPM", "คีย์", และ "โหลด CPU"
- เพิ่ม Multi-sensor Climate Sync: เชื่อมต่อ "โมดูลบันทึก" พิเศษเพื่อติดตามและบันทึกการแสดงเปียโนของคุณลงในไฟล์ MIDI แบบแม่นยำ
- เพิ่ม Cloud Interface: สร้างเว็บแดชบอร์ดพิเศษเพื่อติดตามและดูประวัติการเล่นเปียโนจากสมาร์ทโฟนที่ไหนก็ได้
- ปรับแต่ง Advanced Velocity Profile: เพิ่ม "Pedal Dynamics" พิเศษ (ใช้ Servo) เพื่อให้การเหยียบเพดัลสมจริงยิ่งขึ้น สำหรับการแสดงคอนเสิร์ต
โปรเจกต์ MIDI Player Piano Powered by Arduino นี้คือโปรเจกต์สุดปังสำหรับใครก็ตามที่ชอบงานอิเล็กทรอนิกส์และมองหาเครื่องมือหุ่นยนต์ดนตรีที่โต้ตอบได้ สนุกแน่นอน!
[!CAUTION] ใช้สายไฟคุณภาพสูง กันน้ำและฉนวนดีเสมอสำหรับโซลินอยด์ 88 ตัวนี้ เพื่อหลีกเลี่ยงความร้อนเกินและลัดวงจรระหว่างการแสดงนานๆ ห้ามช็อตนะตัวนี้!
รายละเอียดและเอกสารประกอบ
รายละเอียดขั้นตอนการสร้าง, โค้ด, และวิดีโออื่นๆ น้องสามารถไปดูเพิ่มเติมได้ในเว็บของพี่เลย (จัดไปวัยรุ่น)