สารบัญ:

มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano: 7 ขั้นตอน
มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano: 7 ขั้นตอน

วีดีโอ: มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano: 7 ขั้นตอน

วีดีโอ: มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano: 7 ขั้นตอน
วีดีโอ: Creating Arduino Library for SN76489 Digital Sound Generator 2024, พฤศจิกายน
Anonim
Image
Image
มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano
มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano
มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano
มาสร้าง SN76489 USB MIDI Synth ด้วย Arduino Nano

เคยต้องการที่จะสร้างซินธิไซเซอร์ของคุณเองโดยใช้เพลงชิปเก่าจากยุค 80 หรือไม่? เล่นเพลงโพลีโฟนิกง่ายๆ ที่ฟังดูเหมือนกับ Sega Master System และวิดีโอเกม Megadrive?

ฉันมีดังนั้นฉันจึงสั่งชิป SN76489 สองสามตัวจาก ebay และอินเทอร์เฟซโฮสต์ midi แล้วลองดู สำหรับฉัน ไม่ใช่การเดินเล่นในสวนสาธารณะ แต่ฉันมีความสุขทุกช่วงเวลา

อันดับแรก ฉันเรียนรู้วิธีเชื่อมต่อ SN76489 โดยตรงและทำให้เกิดเสียงรบกวน มีองค์ประกอบที่สับสนอยู่บ้าง แต่ด้วยความช่วยเหลือของ The Oddbloke Geek Blog และตัวอย่างอื่นๆ ร่วมกับเอกสารข้อมูลจำเพาะของชิป ฉันสามารถพัฒนาไลบรารี Arduino อย่างง่ายได้

ต่อไป ฉันต้องเรียนรู้วิธีเชื่อมต่อแป้นพิมพ์ midi กับ USB mini host shield ไม่ยากนัก เนื่องจากมีเอกสารประกอบอยู่ และมีไลบรารีที่ดีพร้อมตัวอย่างที่ชัดเจน

เมื่อฉันเข้าใจวิธีควบคุมชิปและวิธีเชื่อมต่อแป้นพิมพ์ USB midi ของฉันแล้ว สิ่งเดียวที่ต้องทำคือเขียนโค้ดที่จะรวมสิ่งเหล่านี้เข้าด้วยกันและอนุญาตให้ฉันใช้แป้นพิมพ์เพื่อควบคุมชิป

ระหว่างทาง ฉันได้เรียนรู้ว่าเสียงที่มีความถี่ต่ำกว่าที่ฉันพยายามสร้างสำหรับโน้ต midi 0x2f นั้นฟังดูไม่ถูกต้อง ฉันจึงตัดสินใจใช้เสียงนั้นเพื่ออนุญาตให้ส่งเสียงรบกวนไปยังเครื่องกำเนิดสัญญาณรบกวนสำหรับโน้ต midi ใดๆ ระหว่าง 0x28 และ 0x2f และยังอนุญาตให้เล่นโน้ตด้วยการสัมผัสอาหรับตะวันออกสำหรับสิ่งที่ต่ำกว่า midi 0x28

เมื่อมองย้อนกลับไป มันสนุกมากและน่าสนใจมากในการสร้าง

ฉันหวังว่าคุณจะพบว่ามันสนุกและน่าสนใจเหมือนที่ฉันทำ และถ้าคุณสร้างมันขึ้นมาเอง คุณจะใจดีพอที่จะแบ่งปันรูปภาพของมัน

หากคุณชอบโปรเจ็กต์นี้ โปรดโหวตด้านล่างเพื่อช่วยให้ชนะการประกวดที่เข้าร่วม

เสบียง

ฉันได้เพิ่มลิงก์ไปยังสื่อที่คุณสามารถซื้อได้สำหรับโครงการนี้ อย่างไรก็ตาม คุณสามารถหารายการต่างๆ ที่พร้อมใช้งานซึ่งคุณสามารถขูดจากอุปกรณ์อิเล็กทรอนิกส์เก่าได้

ลิงค์เหล่านี้เป็นลิงค์พันธมิตร ดังนั้น หากคุณซื้อหลังจากคลิก ฉันได้รับส่วนเล็กน้อย (ไม่ใช่โชค) และคุณจะได้ผลิตภัณฑ์ที่เหมาะกับโครงการนี้ ไม่มีค่าธรรมเนียมหรือค่าใช้จ่ายเพิ่มเติมในการใช้สิ่งเหล่านี้ อย่างไรก็ตาม คุณสามารถหาสิ่งของที่คล้ายกันที่สามารถแทนที่สิ่งเหล่านี้ได้อย่างง่ายดาย

ebay.us/svA4z4 | 1 x บอร์ดประสิทธิภาพ

ebay.us/ZyEFNp | 1 x Arduino นาโน

ebay.us/t1zy0v | 1 x USB มินิชิลด์

ebay.to/2QrHl1C | 1 x SN76489 ชิปเสียง

ebay.us/aaaj8p | 1 x ทะเบียนกะ 595

ebay.us/DSvTHO | 1 x คริสตัลออสซิลเลเตอร์ 4MHz

ebay.us/XQeM0Q | ตัวควบคุมแรงดันไฟฟ้า 1 x 5V 7805

ebay.us/6R6Fpf |1 x แผ่นระบายความร้อนสำหรับตัวควบคุมแรงดันไฟฟ้า

ebay.us/xkLbn4 | ตัวเก็บประจุ 3 x 10uF

ebay.us/pnm2BH | สายไฟ

ebay.us/PMbUfY | 1 x LED สีแดงสำหรับพลังงาน

ebay.us/zokHtc | ตัวต้านทาน 1 x 220 โอห์มเพื่อจำกัดการไหลของกระแสไฟ LED

ebay.us/qjbesJ | 1 x ขั้วต่อสายไฟสำหรับแหล่งจ่ายไฟ 12v

ebay.us/cS0wwv | 1 x สวิตช์เปิด/ปิด

กล่องที่เหมาะสม (ฉันสร้างของฉันจากลิ้นชักเก่าที่วางอยู่ในที่เก็บของฉันมานานหลายปี)

ขั้นตอนที่ 1: การเตรียม USB Mini Host Shield เพื่อขับเคลื่อนอุปกรณ์ Midi 5V

การเตรียม USB Mini Host Shield เพื่อขับเคลื่อนอุปกรณ์ Midi 5V
การเตรียม USB Mini Host Shield เพื่อขับเคลื่อนอุปกรณ์ Midi 5V

เนื่องจาก USB mini host shield ทำงานบน 3.3V และคีย์บอร์ด USB midi ที่ฉันใช้ต้องใช้ 5V จึงจำเป็นต้องปรับแรงดันเอาต์พุตของชิลด์โดยตัดสาย 3.3V ที่ไปยัง USB out Vcc ดังนั้นเราจึงสามารถเชื่อมต่อได้ในภายหลัง ถึง 5V

มีบทแนะนำมากมายเกี่ยวกับวิธีการทำเช่นนั้น และกลายเป็นว่าค่อนข้างง่าย:

เพียงตัดเส้นแบ่งระหว่างตัวต้านทาน 2k2 และเส้น Vcc (ดูภาพที่แนบมา) ฉันใช้ไขควงเพื่อขูดเส้นนี้และทดสอบว่าใช้งานได้กับเครื่องวัดความต่อเนื่องหรือไม่

ขั้นตอนที่ 2: เชื่อมต่อ USB Mini Shield กับ Arduino Nano. ของคุณ

เชื่อมต่อ USB Mini Shield กับ Arduino Nano. ของคุณ
เชื่อมต่อ USB Mini Shield กับ Arduino Nano. ของคุณ
เชื่อมต่อ USB Mini Shield กับ Arduino Nano. ของคุณ
เชื่อมต่อ USB Mini Shield กับ Arduino Nano. ของคุณ

โชคดีที่มีข้อมูลมากมายเกี่ยวกับวิธีการทำเช่นนั้นโดย googling สำหรับ "Arduino Nano และ mini USB host shield" ฉันไปที่กระทู้นี้

มันอธิบายวิธีเชื่อมต่อชิลด์ USB mini v2.0 และหลังจากทำตามฉันก็ตรงไปข้างหน้าเพื่อทดสอบตัวอย่าง USB midi

การเดินสายไฟ:

Arduino Host ชิลด์

10--------------5

11--------------6

12--------------7

13--------------8

2----------------2

5V ---------------

3.3V ----- 9

GND------------3

RST ------4

ในหัวข้อนี้ ยังกล่าวถึงว่าพวกเขาตัดลีด 3.3V เพื่อให้ USB สามารถรับ 5V จาก VBUS ได้

คำอธิบายและภาพที่แนบมานี้มาจากกระทู้นี้

BTW มีข้อผิดพลาดในการพิมพ์บนกระดานนี้ ดังนั้นมันจึงค่อนข้างสับสน อย่างไรก็ตาม คุณสามารถเห็นความคิดเห็นของฉันเกี่ยวกับสิ่งนั้น (tyrkelko) และฉันเรียนรู้จากที่ใด

ขั้นตอนที่ 3: ชิปใคร? กำลังเพิ่ม SN76489 ด้วย 4MHz Osc. และ 595 Shift Register

ชิปใคร? กำลังเพิ่ม SN76489 ด้วย 4MHz Osc. และ 595 Shift Register
ชิปใคร? กำลังเพิ่ม SN76489 ด้วย 4MHz Osc. และ 595 Shift Register

ตอนนี้ได้เวลาเพิ่มชิปที่สร้างเสียงอันน่าทึ่งนี้แล้ว

ฉันได้พัฒนาห้องสมุดเพื่อเชื่อมต่อ Arduino กับชิปนี้แล้วและต้องทำตามคำแนะนำของฉันเท่านั้น

ไลบรารี่เผยแพร่ใน github ภายใต้ GPLv3 (การเปิดตัวโอเพ่นซอร์สครั้งแรกของฉัน)

github.com/tyrkelko/sn76489

การเชื่อมต่อของ 76489 และ 595 เหมือนกับในรูปภาพที่แนบมาซึ่งถูกบันทึกจากไฟล์ readme.txt ของไลบรารี

Write Enable on Low (NotWE) ของ 76489 เชื่อมต่อกับพิน 3 ของ nano และสามารถเปลี่ยนแปลงได้ในโค้ด

#define PIN_NotWE 3

595 เชื่อมต่อกับนาโนดังนี้และยังสามารถปรับเปลี่ยนได้โดยการแก้ไขหมายเลขพิน:

#define PIN_SER 7

#define PIN_LATCH 6

#define PIN_CLK 5

ออสซิลเลเตอร์ที่ฉันใช้คือคริสตัลออสซิลเลเตอร์ 4MHz ที่มี 4 ขา

มีการกำหนดค่าในโค้ดดังนี้ และคุณสามารถปรับค่าความถี่ของออสซิลเลเตอร์ระหว่าง 500kHz และ 4MHz:

#define ความถี่ 4000000.0

การเชื่อมต่อออสซิลเลเตอร์ที่ฉันใช้มีดังนี้:

พิน 1 - ไม่ได้เชื่อมต่อ

พิน 7 - กราวด์

พิน 8 - เชื่อมต่อกับ 76489 พิน 14 - นาฬิกา osc

ขั้นตอนที่ 4: เพียงเพิ่มโค้ด - เพิ่มไลบรารี รวบรวมและอัปโหลดโค้ด

ต้องเพิ่มไลบรารีที่ใช้ในโครงการนี้ใน Arduino IDE ดังนี้:

เปิด Arduino IDE

ดาวน์โหลดไลบรารีต่อไปนี้ลงในโฟลเดอร์ไลบรารีของ IDE ของคุณ (หวังว่าจะเห็นสิ่งเหล่านี้ภายใต้เมนู "จัดการไลบรารี…" ในเมนู "เครื่องมือ" ของ IDE เร็วๆ นี้):

github.com/felis/USB_Host_Shield_2.0

github.com/tyrkelko/sn76489

ใช้รหัสจากโครงการ github ต่อไปนี้:

github.com/tyrkelko/usb_midi_tone

ดาวน์โหลด usb_midi_tone.ino คอมไพล์และอัปโหลดไปยัง Arduino nano ของคุณ

ขั้นตอนที่ 5: เชื่อมต่อแอมพลิฟายเออร์และลำโพง เชื่อมต่อแป้นพิมพ์ USB Midi ของคุณและทดสอบ

ตอนนี้ได้เวลาทดสอบการทำงานทุกอย่างแล้ว

ในการทำเช่นนั้นเราต้องการ:

1. เครื่องขยายเสียงและลำโพง

2. คีย์บอร์ด USB midi

เชื่อมต่อ SN76489 pin 7, เสียงออก, เข้ากับเครื่องขยายเสียงเข้า

เพิ่มพลังให้แอมพลิฟายเออร์แล้วเปิด Arduino nano ตอนนี้คุณควรจะได้ยินเสียงทดสอบการเพิ่มพลังในเสี้ยววินาที

เชื่อมต่อแป้นพิมพ์ USB midi และทดสอบ

หากทุกอย่างถูกต้อง คุณควรจะสามารถเล่น 3 โทนพร้อมกัน และเล่น 8 ประเภทของเสียงและแม้แต่เศษส่วนของ 24 EDO-Scale 24

หากไม่ได้ผล ให้ทำตามขั้นตอนต่างๆ เพื่อดูว่ามีอะไรผิดพลาด

หากคุณรู้สึกว่าผลลัพธ์นี้เกิดจากคำแนะนำที่ไม่ชัดเจน โปรดทิ้งโน้ตไว้เพื่อให้เราอัปเดตคำแนะนำเพื่อแก้ไข

ขั้นตอนที่ 6: ทำวงจรให้สมบูรณ์ด้วยตัวควบคุมแรงดันไฟฟ้า 5V, ขั้วต่อ 12V, สวิตช์เปิด/ปิด และ LED เพาเวอร์

ในขั้นตอนนี้ คุณควรจะสามารถตัดวงจรหลังจากทดสอบแล้วว่าทำงานได้อย่างถูกต้อง

1. เพิ่มตัวควบคุมพลังงานด้วย LM7805 และตัวเก็บประจุ 10uF สองตัวและ 0.1uF มีบทช่วยสอนมากมายเกี่ยวกับเรื่องนี้ คุณสามารถใช้คำแนะนำต่อไปนี้เพื่อทำสิ่งนั้นให้สำเร็จ -

2. เพิ่มขั้วต่อไฟ 12V โดย Vcc จะผ่านสวิตช์เปิด/ปิด

3. เพิ่ม LED พร้อมตัวต้านทานกระแสไฟที่ จำกัด เพื่อระบุเมื่อเปิดเครื่อง

ขั้นตอนที่ 7: ใส่ในกล่อง ระบายสีและเพลิดเพลินกับ Synth ใหม่ของคุณ

เมื่อวงจรได้รับการทดสอบและทำงานได้ตามที่คุณต้องการแล้ว ก็ไม่มีอะไรให้ทำมากนักยกเว้นการสร้างตู้ที่สวยงาม ทาสีด้วยสีสันที่สวยงามและเล่นเพลง

ฉันหวังว่าคุณจะสนุกกับการอ่านคำแนะนำนี้ และเป็นแรงบันดาลใจให้คุณสร้างซินธ์ของคุณเองหรือเริ่มทำโปรเจ็กต์อื่นที่คุณกำลังดำเนินการอยู่

โปรดแสดงความคิดเห็นด้านล่างพร้อมคำถามใดๆ และหากคุณได้สร้างสิ่งที่คล้ายกันโดยอิงจากบทช่วยสอนนี้ จะเป็นการดีหากคุณแชร์สิ่งที่คุณได้ทำในหัวข้อ "ฉันทำสิ่งนี้!" พื้นที่หรือในส่วนข้อเสนอแนะ

แนะนำ: