สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ยินดีต้อนรับทุกคน, ฉันต้องการแสดง Musical Digital Interface ของตัวเองให้คุณดู ฉันทำมันในระหว่างการศึกษาระดับปริญญาทางเทคนิคของฉัน นี่คือเอกสารการวิจัยของฉัน ในการเริ่มต้น ฉันถามฉันว่าจะแต่งเพลงโดยไม่มี DAW ได้อย่างไร โดยใช้วัสดุรีไซเคิลและเล่นแบบสแตนด์อโลนได้
ในคำแนะนำนี้ ฉันจะสอนวิธีใช้การสื่อสารแบบอนุกรมเพื่อส่ง/รับข้อมูลเซ็นเซอร์ (แอนะล็อกและดิจิทัล) จาก Arduino ถึง Raspberry pi ต่อซอฟต์แวร์ puredata เพื่อกระตุ้นเสียง
วัสดุที่จำเป็นคือ:
x1 รพ.รามาธิบดี
x1 เทศบาลนครราชบุรี
x1 ไมโครเอสดี (32G)
x1 วิทยาลัยอาชีวศึกษาอุบลราชธานี
x1 เซนเซอร์ IR ชาร์ป GP2Y0E02B
x1 วิทยาลัยอาชีวศึกษา
x1 เกจทดสอบเพลท (0.2)
x28 ความต้านทาน10MΩ
x2 ความต้านทาน 1.8kΩ
x1 ความต้านทาน 10kΩ
x20 ขั้วต่อขั้วต่อ ชาย/หญิง
x1 ประสาน ผู้ให้บริการ
x1 ม้วนดีบุก (1 เมตร)
x1 หัวแร้ง
x25 Flexibles Straps ชาย/ชาย
ขั้นตอนที่ 1: เซ็นเซอร์
ฉันใช้ 4 piezoelectric ที่มาจากรีโมท Harmonix XBOX 360 ของ "Guitar Hero" ฉันใช้ปุ่มเปิด/ปิดเพราะปุ่ม Reed Switch แม่เหล็กของรีโมท Jam foot pedal กีตาร์ฮีโร่หมด
ฉันใช้เซ็นเซอร์ IR Sharp GP2Y0E02B สำหรับเซ็นเซอร์ทั้งหมดนี้ ฉันได้ทำการประกอบแบบดึงขึ้นเพื่อการทำงานที่มีประสิทธิภาพ…
ดังนั้นฉันจึงพบค่าความต้านทานต่อเซ็นเซอร์ปุ่มและเซ็นเซอร์ IR โดยสังเกต อย่างไรก็ตาม ฉันทดสอบเพียโซอิเล็กทริกเพื่อให้ทราบสเกลเต็มของอันนี้ และค่าความต้านทานคงที่นั้นจำเป็นและนำไปใช้กับเซ็นเซอร์แอนะล็อก 4 ตัว
ขั้นตอนที่ 2: การตัดต่อแบบดึงขึ้น
หลังจากทดสอบเพียโซอิเล็กทริกด้วยเครื่องกำเนิดแรงดันไฟฟ้า ฉันคงค่าความต้านทานไว้ที่7MΩ
การดึงชุดประกอบความต้านทานของปุ่มคือ 10 kΩ
สำหรับเซ็นเซอร์ IR ฉันใช้ความต้านทาน 1, 8kΩ สองตัวระหว่างแรงดันไฟฟ้าของแหล่งจ่ายตามลำดับกับ SDA (ข้อมูล) และ SCL (นาฬิกา)
ระวังเพราะค่าความต้านทานเหล่านั้นมีไว้สำหรับ RTX Arduino UNO; สิ่งที่ต้องรู้เกี่ยวกับอินพุตอิมพีแดนซ์ Arduino: 10MΩ
คุณสามารถดูการตัดต่อแบบดึงขึ้นได้จากภาพสุดท้ายของขั้นตอนนี้ ฉันแก้ไขสายรัด piezoelectric ใน 0 1 2 3 พินบน UNO สายรัดปุ่มใน 2 พินดิจิตอล แต่สื่อสารค่าบน 6 พินบน UNO และสายรัดเซ็นเซอร์ IR ใน 4 5 พินบน UNO อินพุตอะนาล็อกทั้งหมดของ Arduino Uno
ขั้นตอนที่ 3: รหัส Arduino
เพื่อให้แน่ใจว่าการทำงานมีประสิทธิภาพ ฉันจึงทดสอบการส่ง/รับข้อมูลของเซ็นเซอร์ไปยัง Arduino
ฉันใส่ไฟล์ในคำอธิบาย แต่คุณสามารถค้นหาได้ในส่วนตัวอย่างของการเขียนโปรแกรม Arduino Genuino ยกเว้นเซ็นเซอร์ IR เนื่องจากยังไม่สมบูรณ์ ฉันเปลี่ยนข้อมูลบางส่วนในส่วน "กำหนด" เช่น "กะ" และฉันเปลี่ยนการคำนวณการวัดให้เป็นปกติ ในรูปแบบระยะทาง คุณอาจเคยเห็น "Wire" ในรหัสเซ็นเซอร์ IR อันที่จริง ฉันใช้โปรโตคอล I2C เพื่อสื่อสาร ฉันขอเชิญคุณมาดูโปรโตคอล I2C ที่น่าสนใจมาก คุณสามารถใช้โปรโตคอลนี้เพื่อส่งเซ็นเซอร์ดิจิทัลทั้งหมดที่คุณต้องการแบบเรียลไทม์
ขั้นตอนที่ 4: ทั้ง Arduino Raspberry Serial Communication
ครับ:D
ดังที่คุณเห็นในภาพแรก ลิงค์ Arduino-Raspberry คือปลั๊ก USB
ฉันพบวิธีรับข้อมูลเซ็นเซอร์โดยตรงโดย PureData Extented ที่ติดตั้งใน Raspberry PI ทำไม PureData ขยาย? เนื่องจากเวอร์ชัน Vanilla ไม่ได้ใช้ไลบรารีเดียวกันกับแอปพลิเคชันในสภาพแวดล้อม Raspbian
ดังนั้นให้เปิดใช้ StandardFirmata ใน Arduino Genuino เพื่อแก้ไข I/O และการเปลี่ยนแปลงค่าอย่างถูกวิธี!
ในการรับข้อมูลค่ากลับใน Raspberry PI มี 2 โปรโตคอล: Firmata และ Msg
ฉันเลือก Firmata ด้วยเหตุผลเดียว การรับข้อมูลใน PureData ผ่านแพตช์ Pduino นั้นง่ายกว่ามาก
ฉันขอเชิญคุณค้นพบข่าวสารเกี่ยวกับหากคุณใช้โปรโตคอล OSC
ขั้นตอนที่ 5: ได้รับ PureData Patch แล้ว
อันที่จริง หลังจากสัปดาห์ที่เขียนโค้ดบน Genuino ฉันได้รับข้อมูลเซ็นเซอร์ทั้งหมดของฉันสำเร็จในหน้าเดียว ซึ่งทำให้เห็นการเปลี่ยนแปลงในแบบเรียลไทม์ด้วย Pduino ซึ่งเป็นแพตช์ใน Puredata และไลบรารีส่วนเสริม
จากขั้นตอนนี้ เราจะไม่แตะต้องโค้ด Arduino อีกต่อไป ข้อมูลค่าสามารถอ่านได้
ตามที่ฉันสังเกตเห็นในขั้นตอนที่ 3 ฉันได้รับข้อมูลจากปุ่มดิจิทัลในแบบแอนะล็อก 6 พิน ซึ่งง่ายต่อการดูการทำงานของการสื่อสารที่มีประสิทธิภาพ ทั้งหมดในบรรทัดเดียว
ขั้นตอนที่ 6: การพัฒนา PureData
PureData เป็นภาษาเฉพาะ และคุณต้องใช้เวลาว่างของคุณเพื่อประสบความสำเร็จในการเย็บปะติดปะต่อกันที่ดี
แพทช์ PureData บางตัวจะพร้อมใช้งานใน GitHub
ฉันหวังว่าสิ่งที่ฉันเขียนที่นี่จะช่วยให้คุณเริ่มต้นโครงการของคุณเองได้ใกล้เคียงกับของฉัน