สารบัญ:
- ขั้นตอนที่ 1: เรื่องคอมพิวเตอร์
- ขั้นตอนที่ 2: เปียโน
- ขั้นตอนที่ 3: การประกอบ
- ขั้นตอนที่ 4: ความท้าทายทางเทคนิคและข้อควรพิจารณาในอนาคต
วีดีโอ: เปียโนผู้เล่น Synesthesia: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ผู้เล่นเปียโนคนนี้เล่นเพลงโดยใช้วงล้อสีและกล้อง! กล้องจะจับภาพ ประมวลผล และตีความว่าเป็นโน้ตดนตรี ตอนนี้มันถูกตั้งโปรแกรมให้เล่นเพลงกล่อมเด็กที่สามารถเปลี่ยนแปลงได้โดยการอัปโหลดภาพร่าง Arduino ใหม่ซึ่งระบุว่าควรเล่นโน้ตใด (ควรแสดงสีใดให้กล้องเห็น)
ออนบอร์ด Linux PC เริ่มบริการเมื่อบูตเครื่องซึ่งถ่ายภาพด้วยกล้อง คำนวณฟังก์ชันของค่า RGB ในภาพ และส่งเสียงออกตามค่าที่ส่งคืนของฟังก์ชัน ก่อนเล่นเสียงจะส่งสัญญาณบอกให้ Arduino หมุนเซอร์โวโดยแสดงสีที่สอดคล้องกับโน้ตถัดไปที่จะเล่น จากนั้นการวนซ้ำเริ่มต้นอีกครั้ง ถ่ายภาพ วงล้อสีหมุน และเล่นเสียงไม่สิ้นสุด
โปรเจ็กต์นี้เป็นวิธีที่สนุกในการรวมเพลง การเขียนโปรแกรมระบบ Linux สมัยใหม่ การเขียนโปรแกรมไมโครคอนโทรลเลอร์ การเขียนภาพ Inkscape การตัดด้วยเลเซอร์ และการนำกล่องกระดาษแข็งขยะกลับมาใช้ใหม่
รหัสและ inkscape SVG ทั้งหมดมีอยู่ใน github ที่:
github.com/melvyniandrag/pyMusic
วัสดุที่ใช้:
- ป้ายขาวเปล่า
- กล่องกระดาษแข็ง
- เว็บแคม
- ดินสอสี
- Arduino
- Beagleboard-xM
- สายไฟ
- สายเคเบิลอนุกรม
- ความรู้พื้นฐานเกี่ยวกับการประมวลผลภาพและดนตรี
ขั้นตอนที่ 1: เรื่องคอมพิวเตอร์
ออนบอร์ด คุณจะต้องมีคอมพิวเตอร์ขนาดเล็กที่รองรับ Linux เช่น Raspberry Pi ฉันใช้ BeagleBoard-xM รุ่นเก่าเพราะฉันบังเอิญวางมันไว้ และฉันมีระบบปฏิบัติการในการ์ด SD แล้ว คุณสามารถใช้อะไรก็ได้ ตราบใดที่สามารถรองรับเว็บแคมได้ สามารถเรียกใช้ OpenCV (ไลบรารีการมองเห็นของคอมพิวเตอร์ที่ใช้ในการถ่ายและประมวลผลภาพของวงล้อสี) และมีแจ็คสัญญาณเสียงออก
ฉันตั้งค่าระบบปฏิบัติการเพื่อเรียกใช้โค้ด python ที่จับภาพเมื่อบูตเครื่องตามบทช่วยสอน systemd เพื่อให้สคริปต์ทำงาน คุณจะต้อง sudo apt-get install python-pyaudio python-opencv เพื่อรับไลบรารีที่ระบุ คุณจะต้อง pip ติดตั้ง numpy pyserial เพื่อรับไลบรารีเหล่านั้น pyaudio ใช้สำหรับเล่นเสียง opencv ใช้สำหรับการถ่ายภาพและประมวลผล numpy ยังใช้สำหรับการประมวลผลภาพและ pyserial จำเป็นสำหรับการสื่อสารกับ Arduino
Arduino ใช้สำหรับหมุนเซอร์โวมอเตอร์ที่ติดตั้งวงล้อสี หากคุณมี Raspberry Pi คุณสามารถใช้หมุด GPIO ที่นั่นและทิ้ง Arduino ไว้ได้ แต่คุณต้องแก้ไขโค้ด Python
ในภาพ คุณสามารถเห็นความกล้าทางเทคโนโลยีของการดำเนินการและตัวอย่างโค้ดบางส่วน
ขั้นตอนที่ 2: เปียโน
ฉันทำเปียโนจากกระดาษแข็งจากกล่องเก่าๆ ที่ฉันมี ฉันมีความโชคดีในการใช้ชีวิตใกล้กับพื้นที่ผู้ผลิตที่มีเครื่องตัดเลเซอร์ ตลอดทั้งปี ฉันสงสัยว่าคนๆ นั้นต้องการเครื่องตัดเลเซอร์เพื่ออะไร และในที่สุดฉันก็พบว่ามันมีประโยชน์
ฉันวัดคอมพิวเตอร์ อาร์ดิโน และเซอร์โว ฉันจึงรู้ว่าฉันต้องการพื้นที่เท่าใด วาดส่วนต่างๆ ของเปียโนใน Inkscape แล้วตัดออกด้วยเครื่องตัดเลเซอร์ (แก้ไข: ฉันหมดกระดาษแข็งเพื่อให้กล่องใส่คอมพิวเตอร์และ Arduino ดังนั้นฉันจึงไม่ได้ใส่เข้าไป พวกเขาอยู่ด้านนอกของเคส ไม่เป็นไร ได้กล่องอื่นจากที่ไหนสักแห่ง แต่มันก็ไม่ได้ สุดท้ายไม่สำคัญ)
ชิ้นงานถูกประกอบเข้าด้วยกันด้วยอีพ็อกซี่
ขั้นตอนที่ 3: การประกอบ
นี่คือภาพบางส่วนของเปียโนที่กำลังประกอบและระบายสี เครื่องพิมพ์ไม่มีหมึกพิมพ์ ฉันจึงไม่สามารถพิมพ์สีลงบนฉลากสีขาวได้ตามที่วางแผนไว้ ฉันก็เลยใช้สีเทียนของลูกสาว และฉันก็หามีด xacto มาตัดฉลากให้เหมือนกระดาษแข็งไม่ได้ ฉันเลยใช้มีดสเต็กแล้ววางสิ่งที่ป้องกันไว้บนเคาน์เตอร์ครัว ใช้สิ่งที่คุณได้รับ!
ขั้นตอนที่ 4: ความท้าทายทางเทคนิคและข้อควรพิจารณาในอนาคต
ส่วนที่ท้าทายของโปรเจ็กต์นี้คือการรับค่า RGB ที่เหมาะสมเพื่อให้กล้องอ่านได้ เว็บแคมที่ฉันมีมีไฟ LED ที่สว่างอย่างไม่น่าเชื่อซึ่งฉันไม่รู้ว่าจะปิดใน Linux ได้อย่างไร ฉันคิดว่ามีไดรเวอร์ Windows ที่ให้คุณสลับเปิดและปิดได้ ฉันทดลองติดเทปไฟ LED ด้วยเทปพันสายไฟแล้วเปิดทิ้งไว้ ฉันยังทดสอบซอฟต์แวร์เพื่อความทนทาน โดยไม่เพียงแต่แสดงให้มันเป็นกระดาษสี แต่ยังเขียนเว็บไซต์เล็กๆ ที่แสดงสีด้วย
เสียงที่เกิดจากคอมพิวเตอร์บางครั้งมีเสียงแตกและเสียงแตก และนี่มาจากข้อเท็จจริงที่ว่าฉันมีประสบการณ์น้อยมากในการเขียนโปรแกรมเสียง Linux ไลบรารี pyaudio แยกข้อร้องเรียนทั้งหมดเกี่ยวกับ JACK ที่ไม่ได้ติดตั้งบนพีซี แต่โดยค่าเริ่มต้น JACK ไม่ต้องการให้ทำงานแบบไม่มีส่วนหัว (ไม่มีเดสก์ท็อป gui และจอภาพ) นี่เป็นงานเขียนโปรแกรมที่ฉันคิดว่าเป็นการปรับแต่ง แต่ไม่จำเป็นที่จะแสดงแก่นแท้ของเครื่องเล่นเปียโนที่ฉันมีอยู่ในใจ
ฉันได้พิจารณาใช้ข้อเหวี่ยงมือเพื่อเปลี่ยนสี และบางทีอาจจะใส่มันไว้กับหมุดกลิ้ง แต่นั่นทำให้เกิดความยุ่งยากในตัวเอง เซอร์โวมีเสียงดังเล็กน้อย แต่ใช้งานได้ดีสำหรับตอนนี้
ขณะนี้ผู้เล่นเปียโนได้รับการตั้งโปรแกรมให้เล่นโน้ต 4 ตัวเท่านั้น เนื่องจากเซอร์โวเคลื่อนที่ได้เพียง 180 องศา เพลงกล่อมเด็กส่วนใหญ่สามารถเล่นได้เพียง 3-4 โน้ต และฉันไม่ต้องการให้วงล้อสีรกกับบริเวณสี อาจทำให้กล้องสับสนได้ ดังนั้นด้วยการผสมผสานระหว่างโชคด้านดนตรีและข้อจำกัดทางเทคนิค โน้ต 4 ตัวก็ใช้ได้ดี
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง