Tabla de contenido:
- Suministros
- Paso 1: Colocación de la placa de pruebas
- Paso 2: cableado de la tarjeta SD
- Paso 3: las bibliotecas de software
- Paso 4: trazar datos MP3 en el monitor en serie
Video: Biblioteca Arduino para decodificación MP3: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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
Coloque el ESP32 y la rotura de la tarjeta SD en la placa de pruebas.
Paso 2: 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
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:
Programación de un Arduino usando otro Arduino para mostrar un texto de desplazamiento sin una biblioteca: 5 pasos
Programación de un Arduino usando otro Arduino para mostrar un texto de desplazamiento sin una biblioteca: Sony Spresense o Arduino Uno no son tan costosos y no requieren mucha energía. Sin embargo, si su proyecto tiene limitaciones de energía, espacio o incluso presupuesto, es posible que desee considerar el uso de Arduino Pro Mini. A diferencia de Arduino Pro Micro, Arduino Pro Mi
Hacer una biblioteca Arduino para YouTube Sight: 7 pasos
Creación de una biblioteca Arduino para YouTube Sight: Hola a todos. Recientemente, he creado un servicio llamado YouTube Sight que puede extraer datos de suscriptores de la API de YouTube Analytics y brindarles recuentos de suscriptores más precisos desde que YouTube comenzó a agregar los resultados. Con él, he construido un ejemplo
Trazado de intensidad de luz usando Arduino y la biblioteca maestra de Arduino de Python: 5 pasos
Trazado de intensidad de luz usando Arduino y la biblioteca maestra de Arduino de Python: Arduino es una herramienta económica pero altamente eficiente y funcional, programarlo en Embedded C hace que el proceso de hacer proyectos sea tedioso. El módulo Arduino_Master de Python simplifica esto y nos permite realizar cálculos, eliminar valores basura
Conversor de texto a voz de Arduino con LM386 - Proyecto Arduino parlante - Biblioteca Talkie Arduino: 5 pasos
Conversor de texto a voz de Arduino con LM386 | Proyecto Arduino parlante | Biblioteca Talkie Arduino: Hola chicos, en muchos de los proyectos requerimos que arduino hable algo como un reloj parlante o cuente algunos datos, por lo que en este instructables convertiremos texto en voz usando Arduino
Biblioteca para BMP280 y BME280: 7 pasos
Biblioteca para BMP280 y BME280: Introducción No me propuse escribir esta biblioteca. Ocurrió " como efecto secundario de un proyecto que comencé que usa un BMP280. Ese proyecto aún no está terminado, pero creo que la biblioteca está lista para compartir con otros. Posteriormente tuve un ne