Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
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
Col·loqueu ESP32 i la targeta SD a la tauleta de suport.
Pas 2: 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
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}