جدول المحتويات:

تشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو محول Flyback: 6 خطوات (بالصور)
تشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو محول Flyback: 6 خطوات (بالصور)

فيديو: تشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو محول Flyback: 6 خطوات (بالصور)

فيديو: تشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو محول Flyback: 6 خطوات (بالصور)
فيديو: إضافة النطق و الأصوات لمشاريع الأردوينو Arduino TMRpcm wav 2024, شهر نوفمبر
Anonim
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer
قم بتشغيل الأغاني (MP3) باستخدام Arduino باستخدام PWM على مكبر الصوت أو Flyback Transformer

مرحبا يا شباب،

هذا هو أول تدريب لي ، أتمنى أن تعجبك !!

في الأساس ، في هذا المشروع ، استخدمت الاتصال التسلسلي بين Arduino وجهاز الكمبيوتر المحمول الخاص بي ، لنقل بيانات الموسيقى من جهاز الكمبيوتر المحمول الخاص بي إلى Arduino. واستخدام Arduino TIMERS لتشغيل البيانات كإشارة PWM.

أردت أن أذكر أن هذا المشروع ليس للمبتدئين !!!.

في الواقع ، كان هذا المشروع من أطول المشاريع ، لأنه يتعين علينا القيام بأشياء كثيرة لإنجاحه.

الانتباه

لقد جعلت الجزء الثاني من هذا التدريب ، وهو أسهل بكثير ويحتاج إلى الحد الأدنى من المشاكل للعمل

رابط للجزء الثاني (أسهل جزء).

الخطوة 1: الأشياء التي نحتاجها لهذا المشروع (المتطلبات)

1. Arduino Board (يمكننا استخدام أي لوحة (328 ، 2560) ، أي Mega ، و Uno ، و Mini ، إلخ ولكن مع دبابيس مختلفة محددة)

2. كمبيوتر شخصي أو كمبيوتر محمول مع Linux (لقد استخدمت Fedora 29) أو Live USB مع Linux

3. اللوح أو اللوح

4. توصيل الأسلاك

5. TC4420 (سائق موسفيت أو شيء من هذا القبيل)

6. Power Mosfet (قناة N أو P ، يرجى توصيل الأسلاك وفقًا لذلك) (لقد استخدمت قناة N)

7. مكبر الصوت أو محول Flyback (نعم تقرأها بشكل صحيح !!)

8. مصدر طاقة مناسب (0-12 فولت) (لقد استخدمت مزود طاقة ATX الخاص بي)

9. المشتت الحراري (لقد أنقذت من جهاز الكمبيوتر القديم)

10. جهاز كمبيوتر مع Windows ومحرك القلم.

لمعرفة العمل التفصيلي لكل مكون وهذا المشروع يرجى قراءة الخطوة التالية.

لقد جعلت الجزء الثاني من هذا الدليل ، وهو أسهل بكثير ويحتاج إلى الحد الأدنى من المشاكل للعمل. اربط بالجزء الثاني (أسهل واحد).

الخطوة 2: فهم مبدأ العمل

أهه!! يعد الجزء الأطول من هذا القسم القابل للتوجيه والقراءة والكتابة مملاً.

بادئ ذي بدء ، نحتاج إلى الحصول على نظرة عامة ، كيف يعمل هذا الشيء بالفعل.

ما نقوم به هنا هو أولاً ، أننا نقوم بتحويل أغنية MP3 الخاصة بنا إلى ملف WAV وهذا الملف إلى ملف رأس C باستخدام البرنامج الموجود في الرابط. يحتوي رمز C هذا في الواقع على عينات بيانات 8 بت (لماذا 8 بت ؟؟ اقرأ المزيد) التي نحتاجها للعب باستخدام Arduino الخاص بنا بمعدل أو سرعة ثابتة ، والتي يتم تحديدها وفقًا لمعدل أخذ العينات لدينا.

نظرية الإشارة الصوتية.

بالنسبة لأولئك الذين لا يعرفون معدل أخذ العينات أو معدل البت: -

يُعرّف معدل أخذ العينات بأنه عدد العينات التي نلعبها في ثانية (تُقاس عادةً بالهرتز أو كيلوهرتز).

لمعرفة المزيد بالتفصيل: -انقر هنا

معدلات أخذ العينات القياسية هي 44100 هرتز (أفضل جودة) ، 32000 هرتز ، 22050 هرتز ، إلخ

مما يعني أنه يتم استخدام 44100 عينة في ثانية لتوليد موجة وفقًا لذلك.

على سبيل المثال ، يجب تشغيل كل نموذج على فاصل زمني ثابت قدره 1/44100 = 22.67 دولارًا أمريكيًا.

ثم يأتي بعد ذلك عمق البت للإشارة الصوتية ، والذي عادة ما يكون مقياسًا لمدى دقة تمثيل الصوت في الصوت الرقمي. كلما زاد عمق البت ، زادت دقة الصوت الرقمي.

ولكن مع Arduino أو أي وحدة تحكم صغيرة أخرى مزودة بساعة 16 ميجا هرتز تتيح لنا استخدامنا حتى 8 بت فقط. سأشرح لماذا.

توجد معادلة في الصفحة رقم 102 في ورقة البيانات 328 ص: - ورقة البيانات

لن أخوض في التفاصيل ، لماذا أستخدم هذه الصيغة.

تردد الإشارة = إشارة الساعة / N x (1 + TOP)

إشارة الساعة = 16 ميجا هرتز (لوحة اردوينو)

N = prescaler (1 قيمة لمشروعنا)

TOP = القيمة 0 إلى 2 ^ 16 (للعداد المؤقت 16 بت) (255 = 2 ^ 8 (8 بت) لمشروعنا)

نحصل على قيمة تردد الإشارة = 62.5 كيلو هرتز

هذا يعني أن تردد الموجة الحاملة يعتمد على عمق البت.

لنفترض ، إذا استخدمنا قيمة TOP = 2 ^ 16 = 65536 (أي عمق بت 16 بت)

ثم نحصل على قيمة تردد الإشارة = 244 هرتز (لا يمكننا استخدامها)

OKK… لذا فإن هذه النظرية حول كيفية عمل الإشارات الصوتية كافية ، لذا نعود إلى المشروع.

يمكن نسخ رمز C الذي تم إنشاؤه لأغنية إلى Arduino ويمكن تشغيله ، لكننا مقيدون بتشغيل الصوت لمدة 3 ثوانٍ بمعدل أخذ عينات يبلغ 8000 هرتز. لأن رمز C هذا هو ملف نصي وبالتالي فهو غير مضغوط بدلاً من فك ضغطه. ويأخذ مساحة كبيرة. (على سبيل المثال ، ملف كود C مع صوت 43 ثانية مع عينات 44 ، 1 كيلو هرتز يأخذ مساحة تصل إلى 23 ميجا بايت) ويمنحنا Arduino Mega مساحة تبلغ حوالي 256 كيلو بايت.

فكيف سنقوم بتشغيل الأغاني باستخدام Arduino. إنه غير ممكن. هذا Instructable مزيف. لا تقلق القراء ،

لهذا السبب نحتاج إلى استخدام نوع من الاتصال بين Arduino بسرعات عالية جدًا (تصل إلى 1 ميجا بايت / ثانية) لإرسال بيانات صوتية إلى Arduino.

ولكن ما مقدار السرعة التي نحتاجها بالضبط للقيام بذلك ؟؟

الإجابة هي 44000 بايت في الثانية مما يعني أن السرعات تزيد عن 44000 * 8 = 325000 بت / ثانية.

نحتاج إلى جهاز طرفي آخر بسعة تخزين كبيرة لإرسال هذه البيانات إلى Arduino. وسيكون هذا هو جهاز الكمبيوتر الخاص بنا مع Linux (لماذا الكمبيوتر الشخصي مع Linux ؟؟؟ يرجى قراءة المزيد لمعرفة المزيد عنها.)

Ahaa … هذا يعني أنه يمكننا استخدام الاتصال التسلسلي … ولكن انتظر … المسلسل ممكن بسرعات تصل إلى 115200 بت / ثانية مما يعني (325000/115200 = 3) أنه أبطأ بثلاث مرات مما هو مطلوب.

لا يا أصدقائي ليس كذلك. سنستخدم سرعة أو سرعة Baud تبلغ 500000 بت / ثانية مع كابل يصل إلى 20-30 سم كحد أقصى ، وهو أسرع بمقدار 1.5 مرة من المطلوب.

لماذا لينكس وليس ويندوز ؟؟؟

لذلك ، نحتاج إلى إرسال عينات على فاصل زمني (محدد أعلاه) من 1/44100 = 22.67 دولارًا أمريكيًا باستخدام جهاز الكمبيوتر الخاص بنا.

فكيف يمكننا برمجتها للقيام بذلك ؟؟

يمكننا استخدام C ++ لإرسال بايت البيانات من خلال المسلسل في فاصل زمني باستخدام نوع من وظيفة السكون

مثل nanosleep ، و Chrono ، إلخ ، إلخ …

لـ (int x = 0 ؛ x

SendData (x) ؛

nanosleep (22000) ؛ // 22uS

}

ولكن لا يعمل على WINDOWS أيضًا لم يعمل بهذه الطريقة على Linux (لكنني وجدت طريقة أخرى يمكنك رؤيتها في الكود المرفق.)

لأننا لا نستطيع تحقيق مثل هذا التفصيل باستخدام النوافذ. أنت بحاجة إلى Linux لتحقيق مثل هذا التفصيل.

المشاكل التي وجدتها حتى مع Linux …

يمكننا تحقيق مثل هذا التفصيل باستخدام Linux ، لكنني لم أجد مثل هذه الوظيفة لإيقاف برنامجي لمدة 22uS.

وظائف مثل nanosleep ، و Chrono nanosleep ، وما إلى ذلك.. لا تعمل أيضًا ، لأنها توفر نومًا لأكثر من 100 دولارًا فقط. لكنني كنت بحاجة إلى 22 دولارًا أمريكيًا بالضبط. لقد بحثت في كل صفحة على Google وجربت جميع الوظائف الممكنة المتوفرة في C / C ++ ولكن لا شيء يعمل معي. ثم توصلت إلى وظيفتي الخاصة ، والتي عملت بالنسبة لي كسحر حقيقي.

ويوفر الكود الخاص بي الآن سكونًا دقيقًا ودقيقًا لـ 1uS أو أعلى !!!

لذلك قمنا بتغطية الجزء الصعب والباقي سهل …

ونريد إنشاء إشارة PWM باستخدام Arduino بتردد محدد أيضًا تردد الموجة الحاملة (62.5 كيلو هرتز (كما هو محسوب أعلاه) لمناعة جيدة للإشارة).

لذلك ، نحن بحاجة إلى استخدام ما يسمى TIMERS من Arduino لإنشاء PWM. بالمناسبة ، لن أخوض في الكثير من التفاصيل حول ذلك ، لأنك ستجد العديد من البرامج التعليمية حول موضوع TIMERS ، ولكن إذا لم تجد بعضها ، فقم بالتعليق أدناه سأقوم بعمل واحد.

لقد استخدمت برنامج تشغيل TC4420 Mosfet ، لحفظ دبابيس Arduino الخاصة بنا ، لأنهم لا يستطيعون توصيل الكثير من التيار لقيادة MOSFET في بعض الأحيان.

إذن ، كانت هذه هي النظرية تقريبًا لهذا المشروع ، يمكننا الآن رؤية مخطط الدائرة.

انتبه ، انتبه ، انتبه

في الواقع ، كان هذا المشروع صعبًا جدًا عن قصد (سأخبرك لماذا) ، هناك طريقة أخرى لا تتطلب جهاز كمبيوتر فقط Arduino ومكبر الصوت في ملفي التالي ، الرابط هنا.

* الغرض الرئيسي من هذا المشروع هو استخدام الاتصال التسلسلي ومعرفة قوته ومعرفة كيف يمكننا برمجة جهاز الكمبيوتر الخاص بنا للقيام بالمهام على وجه التحديد في مثل هذه الفواصل الزمنية الدقيقة. *

الخطوة 3: التخطيطي

تخطيطي
تخطيطي

قم بتوصيل جميع المكونات كما هو موضح في التخطيطي. إذن لديك هنا خياران: -

1. قم بتوصيل مكبر صوت (متصل بـ 5 فولت)

2. قم بتوصيل محول Flyback (متصل بـ 12V)

لقد جربت كليهما. وكلاهما يعمل بشكل جيد.

تنصل:-

* أوصي باستخدام Flyback Transformer بحذر لأنه قد يكون خطيرًا لأنه ينتج جهدًا عاليًا. ولن أكون مسؤولاً عن أي ضرر. *

الخطوة 4: تحويل ملف MP3 إلى WAV باستخدام Audacity

تحويل ملف MP3 إلى WAV باستخدام Audacity
تحويل ملف MP3 إلى WAV باستخدام Audacity
تحويل ملف MP3 إلى WAV باستخدام Audacity
تحويل ملف MP3 إلى WAV باستخدام Audacity
تحويل ملف MP3 إلى WAV باستخدام Audacity
تحويل ملف MP3 إلى WAV باستخدام Audacity

لذلك ، أولاً وقبل كل شيء ، قم بتنزيل البرنامج

1. الجرأة والبحث والتحميل من جوجل

2. لتحويل ملف WAV إلى C-Code ، قم بتنزيل تطبيق نافذة يسمى WAVToCode

يمكنك معرفة كيفية استخدام برنامج WAVToCode من هذا الرابط وتنزيله من هذا الرابط.

سأقدم أيضًا خطوات مفصلة حول كيفية استخدام كلا البرنامجين.

يرجى الاطلاع على الصور المرتبطة بهذا الدليل.

في هذه الخطوة ، سنقوم بتحويل MP3 إلى Wav. (اتبع الصور ، يجب أن يكون معدل المشروع 44100 هرتز)

في الخطوة التالية ، سنقوم بتحويل ملف wav إلى C Code.

الخطوة 5: WAV إلى C-Code

WAV إلى C-Code
WAV إلى C-Code
WAV إلى C-Code
WAV إلى C-Code
WAV إلى C-Code
WAV إلى C-Code

اتبع الصور.

انظر إلى الصورتين الأخيرتين ، يجب أن تكون التغييرات متطابقة تمامًا ، ويجب أن تكون الأحرف الكبيرة كبيرة ويجب أن تكون الأحرف الصغيرة أقل ، أو ستحصل على خطأ نحوي أثناء التجميع.

(يمكنك أن ترى أن أغنية مدتها دقيقة واحدة و 41 ثانية استهلكت مساحة قدرها 23 ميجابايت).

قم بتغيير اسم الأغنية وطولها مع اسم الأغنية ومدتها على التوالي.

واحفظ ملف C Code.

افعل ذلك مع جميع الأغاني التي تريد تشغيلها باستخدام Arduino

الخطوة 6: قم بعمل ملف نهائي وقم بتشغيل نظام Linux الخاص بك

اصنع ملفًا نهائيًا وقم بتشغيل Linux الخاص بك
اصنع ملفًا نهائيًا وقم بتشغيل Linux الخاص بك
اصنع ملفًا نهائيًا وقم بتشغيل Linux الخاص بك
اصنع ملفًا نهائيًا وقم بتشغيل Linux الخاص بك
اصنع ملفًا نهائيًا وقم بتشغيل Linux الخاص بك
اصنع ملفًا نهائيًا وقم بتشغيل Linux الخاص بك

أضف جميع الأغاني المحولة إلى ملف متوفر في هذا الرابط.

واتبع الصور.

قم بتحميل الكود في Arduino ، الذي أرفقته.

تذكر أسماء ملفات C Code (على سبيل المثال نمط الحياة ، الدولار ، weare) ، لأننا يجب أن نذكر نفس الأسماء بالضبط في التعليمات البرمجية الخاصة بنا مع مراعاة حالة الأحرف.

في النهاية ، قم بتشغيل Fedora Live USB أو غيره وقم بتثبيت برنامج التحويل البرمجي gcc ثم باستخدام إرشادات التجميع من المجلد ، قم بتجميع البرنامج وتشغيله.

في النهاية ، ستتمكن من الاستماع إلى الأغاني من مكبر الصوت أو Flyback.

شكرًا لك على قراءة هذه التعليمات ويرجى التعليق إذا كنت ترغب في ذلك.

تنبيه لقد جعلت الجزء الثاني من هذه التعليمات ، وهو أمر أسهل بكثير ويحتاج إلى الحد الأدنى من المشاكل للعمل. رابط الجزء الثاني (أسهل جزء)

موصى به: