Съдържание:

Библиотека Arduino за MP3 декодиране: 4 стъпки
Библиотека Arduino за MP3 декодиране: 4 стъпки

Видео: Библиотека Arduino за MP3 декодиране: 4 стъпки

Видео: Библиотека Arduino за MP3 декодиране: 4 стъпки
Видео: Урок 101. Использование ИК-пульта дистанционного управления для управления телевизором, лампочкой переменного тока с реле, двигателем постоянного тока и серводвигателем. 2024, Ноември
Anonim
Библиотека Arduino за MP3 декодиране
Библиотека Arduino за MP3 декодиране
Библиотека Arduino за MP3 декодиране
Библиотека Arduino за MP3 декодиране

Поради увеличеното разпространение на бързи микроконтролери като ESP32 и MP3 декодирането от серия ARM вече не се изисква да се извършва от специализиран хардуер. Декодирането вече може да се извърши в софтуер.

От earlephilhower има голяма библиотека, която показва как да декодирате голямо разнообразие от аудио файлове и да ги възпроизвеждате на ESP микроконтролери. Вдъхновен от това, аз адаптирах част от кода, за да създам модулен метод за четене на MP3 файлове на микроконтролери.

Надявам се, че този метод ще бъде достатъчно общ за използване на всеки достатъчно бърз микроконтролер (не само на платка ESP32), но засега съм тествал само на ESP32.

Консумативи

Както вече казах, надявам се този метод да работи за всеки бърз микроконтролер, но може и да не е. Следователно, за да повторите моите резултати, ще ви трябва:

  • ESP32 платка
  • SD пробивна дъска
  • SD карта
  • Джъмперни проводници
  • макет
  • микро USB кабел (за качване на скица)
  • Arduino IDE

Стъпка 1: Поставяне на платката

Поставяне на платката
Поставяне на платката

Поставете 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, отидете на уебсайта им и го инсталирайте.

След това инсталирайте библиотеката на микродекодера. Можете да направите това, като изтеглите хранилището и го поставите в папката си Arduino Libraries. Библиотеката на микродекодера понастоящем поддържа.wav и.mp3 файлове.

Независимо от формата, има няколко общи метода, свързани с всеки клас и те са обхванати в кода по -долу. Те включват получаването на някои метаданни за файловете и отпечатването им на серийния монитор.

#include "SD.h" // вход

#include "mp3.h" // декодер #include "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 ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // отпечатваме битове на проба Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // и честота на дискретизация} void loop () {}

Стъпка 4: Начертайте MP3 данни на серийния монитор

Начертайте MP3 данни на серийния монитор
Начертайте MP3 данни на серийния монитор

С кода по -долу можете да начертаете някои аудио данни на серийния монитор. Това ще бъде много бавно, но ще ви покаже как да използвате MP3 библиотеката. Той също така понижава извадката на данните с коефициент 16, така че когато данните са нанесени, те изглеждат като форма на аудио вълна. Този код е взет от примера SPI_MP3_Serial.ino, който се доставя с библиотеката на микродекодера. Разбира се, придвижвайки се напред, ще искате да възпроизведете тези аудио данни по някакъв начин, но това е темата на друга инструкция.

#include "SD.h" // вход

#включва "mp3.h" // декодер mp3 MP3; // MP3 клас pcm аудио; // необработени аудио данни void setup () {Serial.begin (115200); // Настройка на сериен SD.begin (); // Настройка на SD връзка Файлов файл = SD.open ("/cc.mp3"); // Отваряне на MP3 файл MP3.begin (файл); // Предаване на файл в MP3 клас} void loop () {audio = MP3.decode (); // Декодиране на аудио данни в pcm клас / * има 32 проби в audio.interleaved (16 вляво и 16 вдясно) *, но ние ще начертаем само първата точка от данни във всеки канал. * Това ефективно намалява данните с коефициент 16 (само за * гледане на формата на вълната) */ Serial.print (audio.interleaved [0]); // ляв канал Serial.print (""); Serial.println (audio.interleaved [1]); // десен канал}

Препоръчано: