جدول المحتويات:
فيديو: محلل الطيف CRAZY L.O.L: 6 خطوات (بالصور)
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
أود اليوم أن أشارك في كيفية صنع محلل طيف صوتي - 36 نطاقًا من خلال الجمع بين 4 LoL Shields معًا. يستخدم هذا المشروع المجنون مكتبة FFT لتحليل إشارة صوت ستيريو ، وتحويلها إلى نطاقات تردد ، وعرض سعة نطاقات التردد هذه على 4 x LoL Shields.
قبل البدء ، يرجى مشاهدة الفيديو أدناه:
الخطوة 1: الأشياء التي نحتاجها
المكونات الإلكترونية الرئيسية هي على النحو التالي:
- 4 قطعة x Arduino Uno R3.
- 4 قطعة x LoLShield PCB. دعمتني خدمة PCBWay (خدمة النموذج الأولي المخصص لـ PCB ذات الميزات الكاملة) لوحات الدوائر المطبوعة LoLShield هذه.
- 504 قطعة x LED ، 3 مللي متر. يحتاج كل LoLShield إلى 126 مصباحًا ويمكننا اختيار 4 ألوان وأنواع مختلفة من مصابيح LED (منتشرة أو غير منتشرة).
- 1 قطعة × بطارية محمولة شاحن بنك الطاقة 10000/20000 مللي أمبير.
- 4 قطعة x رأس ذكر 40pin 2.54 مللي متر.
- 2 قطعة × كابل USB من النوع A / B. أحدهما يستخدم لبرمجة Arduino ، والآخر يستخدم لتشغيل Arduino من بنك الطاقة.
- 1 قطعة x 3.5 مللي متر أنثى مقبس صوت ستيريو.
- 1 قطعة × 3.5 مللي متر 1 ذكر إلى 2 أنثى محول مقسم صوت أو مقسم صوت سماعة رأس متعدد.
- 1 قطعة × 3.5 مللي متر ستيريو صوت جاك ذكر ذكر كابل موصل.
- 1 م × 8P كابل الشريط قوس قزح.
- 1 م × نوى كابل الطاقة.
- 1 قطعة x أكريليك شفاف ، مقاس A4.
الخطوة 2: رسم بياني
LoLShield عبارة عن مصفوفة LED 9x14 charlieplexing لـ Arduino وهذا التصميم لا يتضمن أي مقاومات حالية. يمكن معالجة مصابيح LED بشكل فردي ، لذلك يمكننا استخدامها لعرض المعلومات في مصفوفة 9 × 14 led.
يترك LoL Shield D0 (Rx) و D1 (Tx) والدبابيس التناظرية من A0 إلى A5 مجانًا للتطبيقات الأخرى. توضح الصورة أدناه استخدام دبابيس Arduino Uno لهذا المشروع:
يحتوي محلل الطيف الصوتي الخاص بي على 4 x (Arduino Uno + LoLShield). يتم توصيل مصدر الطاقة ومقبس صوت الاستريو مقاس 3.5 مم على النحو التالي التخطيطي:
الخطوة 3: LOL SHIELD PCB & LED SOLDERING
1. LoL SHIELD PCB
Ѽ. يمكنك الرجوع إلى تصميم ثنائي الفينيل متعدد الكلور على: https://github.com/jprodgers/LoLshield بواسطة Jimmie P. Rodgers.
Ѽ. دعمتني PCBWay لوحات الدوائر المطبوعة LoLShield هذه مع التسليم السريع وثنائي الفينيل متعدد الكلور عالي الجودة.
2. الصمام لحام
Ѽ. يحتاج كل LoLShield إلى 126 مصباحًا ، وقد استخدمت أنواعًا وألوانًا مختلفة لـ 4x LoLShields على النحو التالي:
- 1 × LoLShield: مصباح LED منتشر ، لون أحمر ، 3 مم.
- 1 × LoLShield: مصباح LED منتشر ، لون أخضر ، 3 مم.
- 2 × LoLShield: مصباح LED غير منتشر (واضح) ، لون أزرق ، 3 مم.
Ѽ. تحضير LoLShield PCB و LED
Ѽ. لحام 126 LED على LoLShield PCB. يجب أن نتحقق من مصابيح LED بالبطارية بعد لحام كل صف - 14 مصباحًا
أعلى LoLSHIELD
الأسفل
Ѽ. الانتهاء من LoLShield واحد والاستمرار في لحام 3 LoLShield المتبقية.
الخطوة 4: التوصيل والتجميع
Ѽ. مصدر طاقة لحام وإشارة صوتية لـ 4xLoLShield. تستخدم إشارة الاستريو قناتين صوتيتين: اليسار واليمين متصلان بـ Arduino Uno عند المسامير التناظرية A4 و A5.
- A4: قناة الصوت اليسرى.
- A5: قناة الصوت اليمنى.
Ѽ. محاذاة وتركيب 4 × Arduino Uno على لوح الأكريليك.
Ѽ. توصيل 4 x LoLShield بـ 4 x Arduino Uno.
Ѽ. بنك الطاقة شاحن محمول الغراء ومقبس الصوت على لوحة الاكريليك
Ѽ. منتهي!
الخطوة 5: البرمجة
يجب عليك الرجوع إلى كيفية عمل LoLShield بناءً على طريقة Charlieplexing و Fast Fourier Transform (FFT) على:
en.wikipedia.org/wiki/Charlieplexing
github.com/kosme/fix_fft
بالنسبة إلى Charlieplexing ، نولي اهتمامًا "للحالات الثلاث" لمنافذ Arduino الرقمية: "HIGH" (5V) و "LOW" (0V) و "INPUT". وضع "INPUT" يضع دبوس Arduino في حالة مقاومة عالية. المرجع في:
www.arduino.cc/en/Tutorial/DigitalPins
في مشروعي ، يتم عرض نطاقات تردد الصوت على 4 x LoL Shield وهي موصوفة كما هو موضح أدناه:
يقرأ كل Arduino إشارة صوتية في القناة اليسرى / اليمنى ويقوم بإجراء FFT.
لـ (i = 0 ؛ i <64 ؛ i ++) {Audio_Input = analogRead (RIGHT_CHANNEL) ؛ // قراءة إشارة الصوت في القناة اليمنى A5 - ARDUINO 1 & 2 // Audio_Input = analogRead (LEFT_CHANNEL) ؛ // قراءة إشارة الصوت في القناة اليسرى A4 - ARDUINO 3 & 4 Real_Number = Audio_Input ؛ Imaginary_Number = 0 ، } fix_fft (Real_Number، Imaginary_Number، 6، 0) ؛ // إجراء تحويل فورييه السريع باستخدام N_WAVE = 6 (2 ^ 6 = 64) لـ (i = 0؛ i <32؛ i ++) {Real_Number = 2 * sqrt (Real_Number * Real_Number + Imaginary_Number * Imaginary_Number ) ؛ }
Ѽ. Arduino 1 - عرض نطاقات تردد السعة 01 ~ 09 للقناة اليمنى (A5).
لـ (int x = 0؛ x <14؛ x ++) {لـ (int y = 0؛ y <9؛ y ++) {if (x <Real_Number [y]) // عرض نطاقات التردد من 01 إلى 09 {LedSign:: Set (13-س ، 8-ص ، 1) ؛ // LED ON} آخر {LedSign:: Set (13-x، 8-y، 0)؛ // انطلق } } }
Ѽ. Arduino 2 - عرض نطاقات تردد السعة من 10 إلى 18 من القناة اليمنى (A5).
لـ (int x = 0؛ x <14؛ x ++) {for (int y = 0؛ y <9؛ y ++) {if (x <Real_Number [9 + y]) // عرض نطاقات التردد من 10 إلى 18 {LedSign:: مجموعة (13-س ، 8-ص ، 1) ؛ // LED ON} آخر {LedSign:: Set (13-x، 8-y، 0)؛ // انطلق } } }
Ѽ. Arduino 3 - عرض نطاقات تردد السعة 01 ~ 09 للقناة اليسرى (A4).
الرمز هو نفسه Arduino 1 والقناة اليسرى للإشارة الصوتية تتصل بـ Arduino على دبوس التمثيلي A4.
Ѽ. Arduino 4 - عرض نطاقات تردد السعة من 10 إلى 18 من القناة اليسرى.
الرمز هو نفسه Arduino 2 والقناة اليسرى للإشارة الصوتية تتصل بـ Arduino على دبوس تمثيلي A4.
الخطوة 6: الإنهاء
يمكن لمحلل الطيف المحمول هذا الاتصال مباشرة بجهاز كمبيوتر محمول / سطح مكتب أو هاتف محمول أو جهاز لوحي أو مشغلات موسيقى أخرى عبر مقبس صوت استريو مقاس 3.5 ملم. هذا المشروع يبدو مجنونا ، أتمنى أن ينال إعجابكم!
شكرا لقراءتك !!!