Taula de continguts:

Biblioteca Arduino per a descodificació MP3: 4 passos
Biblioteca Arduino per a descodificació MP3: 4 passos

Vídeo: Biblioteca Arduino per a descodificació MP3: 4 passos

Vídeo: Biblioteca Arduino per a descodificació MP3: 4 passos
Vídeo: How to Install Arduino Library in Proteus 8 | Proteus Add All Library File | Proteus Download 2024, De novembre
Anonim
Biblioteca Arduino per a descodificació MP3
Biblioteca Arduino per a descodificació MP3
Biblioteca Arduino per a descodificació MP3
Biblioteca Arduino per a descodificació MP3

A causa de l'augment de la prevalença de microcontroladors ràpids, com ara l'ESP32 i la sèrie ARM M, la descodificació MP3 ja no és necessària per a la realització d'un maquinari especialitzat. La descodificació ara es pot fer mitjançant programari.

Hi ha una gran biblioteca disponible a earlephilhower que mostra com descodificar una àmplia varietat de fitxers d’àudio i reproduir-los en microcontroladors ESP. Inspirat en això, vaig adaptar part del codi per crear un mètode modular de lectura de fitxers MP3 en microcontroladors.

La meva esperança és que aquest mètode sigui prou genèric per utilitzar-lo en qualsevol microcontrolador prou ràpid (no només amb una placa ESP32), però a hores d’ara només he provat en un ESP32.

Subministraments

Com he dit abans, espero que aquest mètode funcioni per a qualsevol microcontrolador ràpid, però potser no. Per tant, per reproduir els meus resultats necessitareu:

  • Una placa ESP32
  • Tauler SD Breakout
  • targeta SD
  • Filferros de pont
  • taulell de pa
  • cable micro USB (per penjar esbossos)
  • IDE Arduino

Pas 1: Disposició del tauler de pa

Disposició de la taula de pa
Disposició de la taula de pa

Col·loqueu ESP32 i la targeta SD a la tauleta de suport.

Pas 2: Cablatge de la targeta SD

Cablatge de la targeta SD
Cablatge de la targeta SD

Les connexions de la targeta SD (ESP32 SD breakout) són les següents:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Tingueu en compte que aquestes connexions seran diferents si utilitzeu un microcontrolador diferent.

Pas 3: les biblioteques de programari

si no teniu el ESP-IDF instal·lat cap al seu lloc web i instal·leu-lo.

A continuació, instal·leu la biblioteca de microdecodificadors. Podeu fer-ho descarregant el dipòsit i col·locant-lo a la carpeta Arduino Libraries. Actualment, la biblioteca de microdecodors admet fitxers.wav i.mp3.

Independentment del format, hi ha uns quants mètodes habituals associats a cada classe i es cobreixen al codi següent. Aquests inclouen obtenir algunes de les metadades dels fitxers i imprimir-los al monitor sèrie.

#include "SD.h" // input

#include "mp3.h" // decodificador #include "pcm.h" // contenidor de dades d'àudio sense format MP3 MP3; configuració nul·la () {Serial.begin (115200); // Configuració de la sèrie SD.begin (); // Configuració de la connexió SD File file = SD.open ("/ cc.mp3"); // Obriu un fitxer MP3 MP3.begin (fitxer); // digueu a la classe MP3 quin fitxer processar MP3.getMetadata (); // obtingueu les metdades Serial.print ("Bits per mostra:"); Serial.println (MP3.bitsPerSample); // imprimir bits per mostra Serial.print ("Velocitat de mostra:"); Serial.println (MP3. Fs); // i freqüència de mostra} bucle buit () {}

Pas 4: dibuixeu dades MP3 al monitor de sèrie

Dibuixeu dades MP3 al monitor sèrie
Dibuixeu dades MP3 al monitor sèrie

Amb el codi següent podeu representar algunes dades d'àudio al monitor sèrie. Serà molt lent, però us mostrarà com utilitzar la biblioteca MP3. També redueix les mostres de les dades en un factor de 16, de manera que quan es representen les dades sembla una forma d'ona d'àudio. Aquest codi està extret de l'exemple SPI_MP3_Serial.ino que inclou la biblioteca de microdecodificadors. Per descomptat, per avançar voldreu reproduir aquestes dades d'àudio d'alguna manera, però aquest és el tema d'una altra instrucció.

#include "SD.h" // input

#include "mp3.h" // descodificador MP3 MP3; // Àudio pcm de classe MP3; // configuració buida de dades d’àudio sense processar () {Serial.begin (115200); // Configuració de la sèrie SD.begin (); // Configuració de la connexió SD File file = SD.open ("/ cc.mp3"); // Obriu un fitxer MP3 MP3.begin (fitxer); // Passar fitxer a classe MP3} void loop () {audio = MP3.decode (); // Decodifiqueu les dades d'àudio en classe pcm / * hi ha 32 mostres a audio.interleaved (16 a l'esquerra i 16 a la dreta) *, però només anem a representar el primer punt de dades de cada canal. * Això eficaçment redueix la mida de les dades en un factor de 16 (per a * només visualitzar la forma d'ona) * / Serial.print (audio.interleaved [0]); // canal esquerre Serial.print (""); Serial.println (audio.interleaved [1]); // canal dret}

Recomanat: