Tabla de contenido:

Biblioteca Arduino para decodificación MP3: 4 pasos
Biblioteca Arduino para decodificación MP3: 4 pasos

Video: Biblioteca Arduino para decodificación MP3: 4 pasos

Video: Biblioteca Arduino para decodificación MP3: 4 pasos
Video: Como Grabar y Reproducir Musica mp3 usando el Arduino 2024, Mes de julio
Anonim
Biblioteca Arduino para decodificación MP3
Biblioteca Arduino para decodificación MP3
Biblioteca Arduino para decodificación MP3
Biblioteca Arduino para decodificación MP3

Debido a la mayor prevalencia de microcontroladores rápidos como el ESP32 y la descodificación de MP3 de la serie ARM M, ya no es necesario que lo realice un hardware especializado. La decodificación ahora se puede realizar en software.

Hay una gran biblioteca disponible en earlephilhower que muestra cómo decodificar una amplia variedad de archivos de audio y reproducirlos en microcontroladores ESP. Inspirado por esto, adapté parte del código para crear un método modular de lectura de archivos MP3 en microcontroladores.

Mi esperanza es que este método sea lo suficientemente genérico para su uso en cualquier microcontrolador lo suficientemente rápido (no solo en una placa ESP32), pero a partir de ahora solo lo he probado en un ESP32.

Suministros

Como dije antes, espero que este método funcione para cualquier microcontrolador rápido, pero puede que no. Por lo tanto, para replicar mis resultados necesitará:

  • Una placa ESP32
  • Tarjeta de conexión SD
  • tarjeta SD
  • Cables de puente
  • tablero de circuitos
  • cable micro USB (para cargar bocetos)
  • IDE de Arduino

Paso 1: Colocación de la placa de pruebas

Colocación de la placa de pruebas
Colocación de la placa de pruebas

Coloque el ESP32 y la rotura de la tarjeta SD en la placa de pruebas.

Paso 2: cableado de la tarjeta SD

Cableado de la tarjeta SD
Cableado de la tarjeta SD

Las conexiones de la tarjeta SD (ruptura ESP32 SD) son las siguientes:

GND GND

3v3 VDD

23 DI (MOSI)

19 HACER (MISO)

18 SCLK

5 CS

Tenga en cuenta que estas conexiones serán diferentes si utiliza un microcontrolador diferente.

Paso 3: las bibliotecas de software

Si no tiene el ESP-IDF instalado, diríjase a su sitio web e instálelo.

Luego instale la biblioteca del microdecoder. Puede hacer esto descargando el repositorio y colocándolo en su carpeta de Bibliotecas Arduino. La biblioteca de microdescodificadores admite actualmente archivos.wav y.mp3.

Independientemente del formato, existen algunos métodos comunes asociados con cada clase y se tratan en el código a continuación. Estos incluyen obtener algunos de los metadatos de los archivos e imprimirlos en el monitor en serie.

#include "SD.h" // entrada

#include "mp3.h" // decodificador #include "pcm.h" // contenedor de datos de audio sin procesar mp3 MP3; configuración vacía () {Serial.begin (115200); // Configurar Serial SD.begin (); // Configurar la conexión SD File file = SD.open ("/ cc.mp3"); // Abra un archivo MP3 MP3.begin (archivo); // le dice a la clase MP3 qué archivo debe procesar MP3.getMetadata (); // obtener la metdadata Serial.print ("Bits por muestra:"); Serial.println (MP3.bitsPerSample); // imprimir bits por muestra Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // y frecuencia de muestreo} void loop () {}

Paso 4: trazar datos MP3 en el monitor en serie

Trazar datos MP3 en el monitor serial
Trazar datos MP3 en el monitor serial

Con el siguiente código puede trazar algunos datos de audio en el monitor serial. Esto será muy lento pero le mostrará cómo usar la biblioteca MP3. También reduce la resolución de los datos en un factor de 16 para que cuando se tracen los datos parezcan una forma de onda de audio. Este código se toma del ejemplo SPI_MP3_Serial.ino que viene con la biblioteca del microdecoder. Por supuesto, en el futuro, querrá reproducir estos datos de audio de alguna manera, pero ese es el tema de un instructable diferente.

#include "SD.h" // entrada

#include "mp3.h" // decodificador mp3 MP3; // MP3 Class pcm audio; // configuración void de datos de audio sin procesar () {Serial.begin (115200); // Configurar Serial SD.begin (); // Configurar la conexión SD File file = SD.open ("/ cc.mp3"); // Abra un archivo MP3 MP3.begin (archivo); // Pasar el archivo a la clase MP3} void loop () {audio = MP3.decode (); // Decodifica datos de audio en clase pcm / * hay 32 muestras en audio.interleaved (16 a la izquierda y 16 a la derecha) * pero solo vamos a trazar el primer punto de datos en cada canal. * Esto reduce efectivamente los datos por un factor de 16 (para * ver la forma de onda solamente) * / Serial.print (audio.interleaved [0]); // canal izquierdo Serial.print (""); Serial.println (audio.interleaved [1]); // canal derecho}

Recomendado: