Taula de continguts:
- Subministraments
- Pas 1: Disposició del tauler de pa
- Pas 2: Cablatge de la targeta SD
- Pas 3: les biblioteques de programari
- Pas 4: dibuixeu dades MP3 al monitor de sèrie
Vídeo: Biblioteca Arduino per a descodificació MP3: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
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}
Recomanat:
Programació d'un Arduino Utilitzant un altre Arduino per mostrar un text de desplaçament sense biblioteca: 5 passos
Programar un Arduino Utilitzant un altre Arduino per mostrar un text de desplaçament sense biblioteca: Sony Spresense o Arduino Uno no són tan cars i no requereixen molta energia. Tot i això, si el vostre projecte té una limitació de potència, espai o fins i tot pressupost, us recomanem que utilitzeu Arduino Pro Mini. A diferència d’Arduino Pro Micro, Arduino Pro Mi
Creació d'una biblioteca Arduino per a YouTube Sight: 7 passos
Creació d’una biblioteca Arduino per a YouTube Sight: Hola a tothom, recentment he creat un servei anomenat YouTube Sight que permet extreure dades de subscriptors de l’API de YouTube Analytics i proporcionar-vos un recompte de subscriptors més precís des que YouTube va començar a agregar els resultats. Amb ell, he construït un exemple
Caixa de descodificació d'escapament: 7 passos (amb imatges)
Escape Room Decoder Box: Escape Rooms són activitats molt divertides que resulten molt atractives i ideals per al treball en equip. Alguna vegada heu pensat a crear el vostre propi Escape Room? Doncs bé, amb aquesta caixa de descodificadors podràs estar en bon camí! Encara millor heu pensat a utilitzar es
Biblioteca per a BMP280 i BME280: 7 passos
Biblioteca per a BMP280 i BME280: Introducció No em vaig proposar escriure aquesta biblioteca. Va passar " com a efecte secundari d’un projecte que vaig començar que utilitza un BMP280. Aquest projecte encara no està acabat, però crec que la biblioteca està a punt per compartir-la amb els altres. Posteriorment vaig tenir un ne
Placa de codificació i descodificació de protocols NEC d'infrarojos: 5 passos
Placa de codificació i descodificació de protocols NEC d'infrarojos: rep un senyal IR NEC modulat o desmodulat en brut i el converteix en bytes que s'envien al port sèrie. La velocitat de transmissió en sèrie es pot seleccionar entre dues velocitats per defecte. El mode d’ús predeterminat transmet una seqüència d’ordres amb byte d’enquadrament