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

مكتبة Arduino لفك تشفير MP3: 4 خطوات
مكتبة Arduino لفك تشفير MP3: 4 خطوات

فيديو: مكتبة Arduino لفك تشفير MP3: 4 خطوات

فيديو: مكتبة Arduino لفك تشفير MP3: 4 خطوات
فيديو: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, يوليو
Anonim
مكتبة Arduino لفك تشفير MP3
مكتبة Arduino لفك تشفير MP3
مكتبة Arduino لفك تشفير MP3
مكتبة Arduino لفك تشفير MP3

نظرًا لتزايد انتشار وحدات التحكم الدقيقة السريعة مثل ESP32 و ARM M series ، لم تعد هناك حاجة لفك تشفير MP3 بواسطة أجهزة متخصصة. يمكن الآن فك التشفير في البرنامج.

هناك مكتبة رائعة متاحة من earlephilhower توضح كيفية فك تشفير مجموعة متنوعة من الملفات الصوتية وتشغيلها على ميكروكنترولر ESP. مستوحاة من هذا ، قمت بتكييف بعض التعليمات البرمجية لإنشاء طريقة معيارية لقراءة ملفات MP3 على ميكروكنترولر.

آمل أن تكون هذه الطريقة عامة بما يكفي لاستخدامها على أي متحكم دقيق سريع بما فيه الكفاية (ليس فقط لوحة ESP32) ولكن حتى الآن اختبرت فقط على ESP32.

اللوازم

كما قلت من قبل ، آمل أن تعمل هذه الطريقة مع أي متحكم سريع ، لكنها قد لا تعمل. لذلك ، لتكرار نتائجي ، ستحتاج إلى:

  • لوحة ESP32
  • مجلس الاختراق SD
  • بطاقة الذاكرة
  • أسلاك العبور
  • اللوح
  • كابل micro USB (لتحميل الرسم التخطيطي)
  • اردوينو IDE

الخطوة 1: وضع اللوح

وضع اللوح
وضع اللوح

ضع فاصل بطاقة ESP32 و SD على اللوح.

الخطوة 2: توصيل بطاقة SD

توصيل بطاقة SD
توصيل بطاقة SD

اتصالات بطاقة SD (كسر ESP32 SD) هي كما يلي:

GND GND

3v3 VDD

23 DI (MOSI)

19 هل (MISO)

18 SCLK

5 سي إس

يرجى ملاحظة أن هذه الاتصالات ستكون مختلفة إذا كنت تستخدم متحكمًا مختلفًا.

الخطوة 3: مكتبات البرامج

إذا لم يكن لديك ESP-IDF مثبتًا ، فانتقل إلى موقع الويب الخاص به وقم بتثبيته.

ثم قم بتثبيت مكتبة microdecoder. يمكنك القيام بذلك عن طريق تنزيل المستودع ووضعه في مجلد مكتبات Arduino. تدعم مكتبة microdecoder حاليًا ملفات.wav و. mp3.

بغض النظر عن التنسيق ، هناك بعض الطرق الشائعة المرتبطة بكل فئة ويتم تناولها في الكود أدناه. يتضمن ذلك الحصول على بعض الملفات الوصفية وطباعتها على الشاشة التسلسلية.

# تضمين إدخال "SD.h" //

# تضمين "mp3.h" // وحدة فك الترميز # تضمين "pcm.h" // حاوية بيانات الصوت الخام mp3 MP3 ؛ إعداد باطل () {Serial.begin (115200) ؛ // إعداد المسلسل SD.begin () ؛ // إعداد ملف اتصال SD = SD.open ("/ cc.mp3") ؛ // فتح ملف MP3 MP3.begin (ملف) ؛ // أخبر فئة MP3 بالملف المطلوب معالجة MP3.getMetadata () ؛ // الحصول على البيانات الوصفية Serial.print ("بت لكل عينة:") ؛ Serial.println (MP3.bitsPerSample) ؛ // بتات الطباعة لكل عينة Serial.print ("معدل العينة:") ؛ Serial.println (MP3. Fs) ؛ // ومعدل العينة} حلقة فارغة () {}

الخطوة 4: ارسم بيانات MP3 على جهاز العرض التسلسلي

ارسم بيانات MP3 على جهاز العرض التسلسلي
ارسم بيانات MP3 على جهاز العرض التسلسلي

باستخدام الكود أدناه ، يمكنك رسم بعض البيانات الصوتية على الشاشة التسلسلية. سيكون هذا بطيئًا جدًا ولكنه سيوضح لك كيفية استخدام مكتبة MP3. كما أنه يختزل عينات البيانات بمعامل 16 بحيث يبدو عند رسم البيانات وكأنها شكل موجة صوتية. هذا الرمز مأخوذ من مثال SPI_MP3_Serial.ino الذي يأتي مع مكتبة الترميز الصغير. بالطبع ، للمضي قدمًا ، سترغب في تشغيل هذه البيانات الصوتية بطريقة ما ولكن هذا هو موضوع تعليمات مختلفة.

# تضمين إدخال "SD.h" //

# تضمين "mp3.h" // فك mp3 MP3 ؛ // MP3 فئة pcm الصوت ؛ // إعداد باطل بيانات الصوت الخام () {Serial.begin (115200) ؛ // إعداد المسلسل SD.begin () ؛ // إعداد ملف اتصال SD = SD.open ("/ cc.mp3") ؛ // فتح ملف MP3 MP3.begin (ملف) ؛ // تمرير الملف إلى فئة MP3} حلقة باطلة () {audio = MP3.decode () ؛ // فك تشفير بيانات الصوت إلى فئة pcm / * هناك 32 عينة في audio.interleaved (16 يسارًا و 16 يمينًا) * لكننا سنرسم فقط نقطة البيانات الأولى في كل قناة. * هذا يقلل من دقة البيانات بمعامل 16 (* لعرض شكل الموجة فقط) * / Serial.print (audio.interleaved [0]) ؛ // القناة اليسرى Serial.print ("") ؛ Serial.println (audio.interleaved [1]) ؛ // القناة الصحيحة}

موصى به: