فهرست مطالب:

کتابخانه آردوینو برای رمزگشایی MP3: 4 مرحله
کتابخانه آردوینو برای رمزگشایی MP3: 4 مرحله

تصویری: کتابخانه آردوینو برای رمزگشایی MP3: 4 مرحله

تصویری: کتابخانه آردوینو برای رمزگشایی MP3: 4 مرحله
تصویری: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, جولای
Anonim
کتابخانه آردوینو برای رمزگشایی MP3
کتابخانه آردوینو برای رمزگشایی MP3
کتابخانه آردوینو برای رمزگشایی MP3
کتابخانه آردوینو برای رمزگشایی MP3

با توجه به افزایش شیوع میکروکنترلرهای سریع مانند ESP32 و سری ARM M ، رمزگشایی MP3 دیگر لازم نیست توسط سخت افزار تخصصی انجام شود. رمزگشایی اکنون می تواند در نرم افزار انجام شود.

یک کتابخانه عالی از earlephilhower موجود است که نحوه رمزگشایی انواع زیادی از فایل های صوتی و پخش آنها بر روی میکروکنترلرهای ESP را نشان می دهد. با الهام از این ، برخی از کدها را برای ایجاد یک روش مدولار برای خواندن فایلهای MP3 روی میکروکنترلرها تطبیق دادم.

امیدوارم این روش به اندازه کافی عمومی برای استفاده در هر میکروکنترلر با سرعت کافی (نه فقط یک برد ESP32) باشد ، اما در حال حاضر من فقط بر روی ESP32 آزمایش کرده ام.

تدارکات

همانطور که قبلاً گفتم ، امیدوارم این روش برای هر میکروکنترلر سریع کار کند ، اما ممکن است اینطور نباشد. بنابراین برای تکرار نتایج من به موارد زیر نیاز دارید:

  • یک برد ESP32
  • برد شکست SD
  • کارت SD
  • سیم های جامپر
  • تخته نان
  • کابل میکرو USB (برای بارگذاری طرح)
  • آردوینو IDE

مرحله 1: چیدن Breadboard

گذاشتن تخته نان
گذاشتن تخته نان

شکست ESP32 و کارت SD را روی تخته نان قرار دهید.

مرحله 2: سیم کشی کارت SD

سیم کشی کارت SD
سیم کشی کارت SD

اتصالات کارت SD (شکست ESP32 SD) به شرح زیر است:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

لطفاً توجه داشته باشید که اگر از میکروکنترلر متفاوتی استفاده می کنید ، این اتصالات متفاوت خواهد بود.

مرحله 3: کتابخانه های نرم افزار

اگر ESP-IDF را ندارید به وب سایت آنها سر بزنید و آن را نصب کنید.

سپس کتابخانه microdecoder را نصب کنید. می توانید این کار را با بارگیری مخزن و قرار دادن آن در پوشه کتابخانه های آردوینو انجام دهید. کتابخانه microdecoder در حال حاضر از فایل های.wav و.mp3 پشتیبانی می کند.

صرف نظر از قالب ، چند روش متداول برای هر کلاس وجود دارد که در کد زیر ذکر شده است. این موارد شامل دریافت برخی از فوق داده های فایل و چاپ آن در مانیتور سریال است.

#شامل "SD.h" // ورودی

#شامل "mp3.h" // رمزگشای #شامل "pcm.h" // ظرف خام داده های صوتی MP3 MP3 ؛ void setup () {Serial.begin (115200)؛ // راه اندازی سریال SD.begin ()؛ // راه اندازی اتصال SD فایل فایل = SD.open ("/cc.mp3") ؛ // باز کردن یک فایل MP3 MP3.begin (فایل) ؛ // به کلاس MP3 بگویید چه پرونده ای را برای پردازش MP3.getMetadata ()؛ // دریافت metdadata Serial.print ("بیت در نمونه:") ؛ Serial.println (MP3.bitsPerSample) ؛ // چاپ بیت در هر نمونه Serial.print ("نرخ نمونه:") ؛ Serial.println (MP3. Fs) ؛ // و نرخ نمونه} void loop () {}

مرحله 4: داده های MP3 را روی مانیتور سریال ترسیم کنید

داده های MP3 را روی مانیتور سریال ترسیم کنید
داده های MP3 را روی مانیتور سریال ترسیم کنید

با کد زیر می توانید برخی از داده های صوتی را روی مانیتور سریال ترسیم کنید. این بسیار کند خواهد بود اما نحوه استفاده از کتابخانه MP3 را به شما نشان می دهد. همچنین داده ها را با ضریب 16 نمونه برداری می کند تا وقتی داده ها رسم می شوند شبیه شکل موج صوتی به نظر برسد. این کد از مثال SPI_MP3_Serial.ino گرفته شده است که همراه با کتابخانه microdecoder ارائه شده است. البته ، با حرکت به جلو ، می خواهید این داده های صوتی را به نحوی پخش کنید ، اما این موضوع یک دستورالعمل متفاوت است.

#شامل "SD.h" // ورودی

#شامل "mp3.h" // رمزگشای mp3 MP3 ؛ // کلاس MP3 pcm صوتی؛ // خام داده های صوتی void setup () {Serial.begin (115200)؛ // راه اندازی Serial SD.begin ()؛ // راه اندازی اتصال SD فایل فایل = SD.open ("/cc.mp3") ؛ // باز کردن یک فایل MP3 MP3.begin (فایل) ؛ // ارسال فایل به کلاس MP3} حلقه void () {audio = MP3.decode ()؛ // رمزگشایی داده های صوتی به کلاس pcm / * 32 نمونه در audio.interleaved (16 سمت چپ و 16 راست) * وجود دارد * اما ما فقط قصد داریم اولین نقطه داده را در هر کانال ترسیم کنیم. * این امر به طور موثر داده ها را با ضریب 16 (برای * فقط مشاهده شکل موج) */ Serial.print (audio.interleaved [0]) کوچک می کند ؛ // کانال سمت چپ Serial.print ("")؛ Serial.println (audio.interleaved [1]) ؛ // کانال راست}

توصیه شده: