Sommario:

Libreria Arduino per la decodifica di MP3: 4 passaggi
Libreria Arduino per la decodifica di MP3: 4 passaggi

Video: Libreria Arduino per la decodifica di MP3: 4 passaggi

Video: Libreria Arduino per la decodifica di MP3: 4 passaggi
Video: Usare la shield VS1053 con le librerie di Adafruit per riprodurre mp3 con Arduino - video 614 2024, Dicembre
Anonim
Libreria Arduino per la decodifica di MP3
Libreria Arduino per la decodifica di MP3
Libreria Arduino per la decodifica di MP3
Libreria Arduino per la decodifica di MP3

A causa della maggiore prevalenza di microcontrollori veloci come ESP32 e la decodifica MP3 della serie ARM M non è più necessario che venga eseguita da hardware specializzato. La decodifica può ora essere eseguita nel software.

C'è una grande libreria disponibile da Earlephilhower che mostra come decodificare un'ampia varietà di file audio e riprodurli su microcontrollori ESP. Ispirato da ciò, ho adattato parte del codice per creare un metodo modulare di lettura di file MP3 su microcontrollori.

La mia speranza è che questo metodo sia abbastanza generico per l'uso su qualsiasi microcontrollore abbastanza veloce (non solo una scheda ESP32) ma per ora ho testato solo su un ESP32.

Forniture

Come ho detto prima, spero che questo metodo funzioni per qualsiasi microcontrollore veloce, ma potrebbe non essere così. Pertanto per replicare i miei risultati avrai bisogno di:

  • Una scheda ESP32
  • Scheda breakout SD
  • scheda SD
  • Cavi per ponticelli
  • tagliere
  • cavo micro USB (per caricare lo schizzo)
  • Arduino IDE

Passaggio 1: stendere il tagliere

Preparare il tagliere
Preparare il tagliere

Posiziona ESP32 e la scheda SD sulla breadboard.

Passaggio 2: cablaggio della scheda SD

Cablaggio della scheda SD
Cablaggio della scheda SD

Le connessioni della scheda SD (breakout SD ESP32) sono le seguenti:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Si prega di notare che queste connessioni saranno diverse se si utilizza un microcontrollore diverso.

Passaggio 3: le librerie software

se non hai installato ESP-IDF, vai sul loro sito Web e installalo.

Quindi installa la libreria del microdecoder. Puoi farlo scaricando il repository e inserendolo nella cartella Librerie Arduino. La libreria del microdecoder attualmente supporta file.wav e.mp3.

Indipendentemente dal formato, esistono alcuni metodi comuni associati a ciascuna classe e sono trattati nel codice seguente. Questi includono ottenere alcuni metadati dei file e stamparli sul monitor seriale.

#include "SD.h" // input

#include "mp3.h" // decoder #include "pcm.h" // contenitore di dati audio non elaborati mp3 MP3; void setup() { Serial.begin(115200); // Configura SD.begin(); // Imposta connessione SD File file = SD.open("/cc.mp3"); // Apri un file MP3 MP3.begin(file); // indica alla classe MP3 quale file elaborare MP3.getMetadata(); // ottiene i metadati Serial.print("Bits per Sample: "); Serial.println(MP3.bitsPerSample); // stampa bit per campione Serial.print("Sample Rate: "); Serial.println(MP3. Fs); // e frequenza di campionamento } void loop() { }

Passaggio 4: tracciare i dati MP3 sul monitor seriale

Traccia i dati MP3 sul monitor seriale
Traccia i dati MP3 sul monitor seriale

Con il codice qui sotto puoi tracciare alcuni dati audio sul monitor seriale. Questo sarà molto lento ma ti mostrerà come usare la libreria MP3. Inoltre, esegue il downsampling dei dati di un fattore di 16 in modo che quando i dati vengono tracciati assomiglino a una forma d'onda audio. Questo codice è tratto dall'esempio SPI_MP3_Serial.ino fornito con la libreria del microdecoder. Ovviamente, andando avanti vorrai riprodurre questi dati audio in qualche modo, ma questo è l'argomento di un altro istruibile.

#include "SD.h" // input

#include "mp3.h" // decodifica mp3 MP3; // Audio pcm di classe MP3; // dati audio grezzi void setup() { Serial.begin(115200); // Configura SD.begin(); // Imposta connessione SD File file = SD.open("/cc.mp3"); // Apri un file MP3 MP3.begin(file); // Passa il file alla classe MP3 } void loop() { audio = MP3.decode(); // Decodifica i dati audio nella classe pcm /* ci sono 32 campioni in audio.interleaved (16 a sinistra e 16 a destra) * ma tracceremo solo il primo punto dati in ogni canale. * Questo riduce efficacemente i dati di un fattore 16 (per * visualizzare solo la forma d'onda) */ Serial.print(audio.interleaved[0]); // canale sinistro Serial.print(" "); Serial.println(audio.interleaved[1]); //canale destro}

Consigliato: