<< Reproductor Mp3 con Arduino I (Circuito)

La estructura de la SD

Es este post voy a intentar explicar un poco el código de nuestra 'Gramola' con corazón de Arduino.
El principal problema que encontré para realizar este proyecto, fue la limitación de la librería SD, con su FAT  reducida que sólo permitía la los nombres en formato 8.3.
La solución fue crear un pequeño catálogo en un archivo de texto de donde poder leer las entradas.



La estructura de directorios en la SD tiene el siguiente formato:
raiz
 +-artistas.txt
 +-[ARTIST01]
 |   +-album.txt
 |   +-[ALBUM01]
 |   |   +-track.txt
 |   |   +-track001.mp3
 |   |   +-track002.mp3
 |   |   .....
 |   |   +-track0nn.mp3
 |   +-[ALBUM02]
 |   .......
 |   +-[ALBUMnn]
 +-[ARTIST02]
 .....
 +-[ARTISTnn]
Es decir hay tres niveles : artista, álbum y  pista. Cada nivel tiene un fichero de texto con las entradas del catálogo (una linea de texto por cada artista, álbum  o canción).
Los nombres de las carpetas y los archivos deben ser tal como están en el esquema (siempre podéis cambiar el código).
Es un poco engorroso para crear la tarjeta, pero.... vale la pena.Yo he utilizado un programa que facilita mucho la tarea MP3Tag, que permite exportar a texto las pistas de un directorio y renombrar los mp3.

El código

Consta de una librería 'AGMp3' que maneja el chip y la SD , y el sketch del reproductor. Podéis descargarlos de aquí


La librería se encarga de la inicialización del chip,el bus SPI y  la SD. Tiene métodos para escribir/leer en los registros del chip, y para reproducir un mp3.
En cuanto al sketch comienza leyendo el fichero 'artistas.txt' que se encuentra en la raiz de la SD y luego a través del encoder y los botones 'navega' por la estructura de directorios. En cada nivel lee el fichero de texto correspondiente para cargar la lista del catálogo. En el último nivel reproduce el mp3 seleccionado.
Una vez se esta reproduciendo, el encoder se encarga de variar el volumen, que se muestra en el LCD con un valor de 0 a 10. El botón adelante permite pasar a la siguiente canción durante la reproducción.
Para mostrar el progreso de la canción, he definido unos caracteres sobre el LCD.

Aquí os dejo unas cuantas fotos del proceso de construcción:



Espero que os guste ! ....

 << Reproductor Mp3 con Arduino I (Circuito)

Si te ha gustado, recuerda compartirlo en tu red social favorita. Gracias

14 comments

20 de diciembre de 2012, 12:13

Sencillamente impresionante...mis felicitaciones en breve te pedire ayuda ya que quuiero manejar un reproductor mp3.

9 de diciembre de 2013, 2:41

Gran tutorial y gran acabado, gracias por el aporte

9 de diciembre de 2013, 13:59

@Francisco Plaza Freire
Gracias, me alegro de que te haya gustado.

17 de diciembre de 2013, 17:21

Excelente, me gustaría saber si hay la posibilidad de que al oprimir un botón active un audio en especifico, por si quiero acceder a canciones de una forma rápida y sin tener que buscarlas.
Felicidades por el proyecto.

11 de enero de 2015, 20:55

Definitivamente impresionante, quiero felicitarte por tu gran trabajo. Estoy muy interesado en hacer algo similar utilizando la board VS1003B pero ajustando la programación para un PIC. Quisiera pedirte el favor, si es posible de detallar un poco mas la parte del modulo MP3 para ajustar las rutinas para la reproducción del MP3, ya tengo la parte de lectura de la memoria SD.

Saludos.

15 de mayo de 2015, 20:50

Hola y saludos me gusto tu proyecto, pero tengo el problema q no consigo el encoder rotary del modelo q pides, siempre me ofrecen el enconder q te trae 4 pines (VCC,GND,D0 y A0), intente solo ponerle push boton pero en ENC A funciona la lista va de arriba hacia abajo y el volumen lo sube, pero en ENC B no hace nada =(. me gustaria saber q tengo q cambiar en el codigo para q funcione el otro u otra solucion q me ayude

24 de mayo de 2015, 9:25

@Dariel H.Arroyo Gonzalez
Perdona pero no entiendo muy bien el problema. Puedes indicar el modelo de encoder que tienes (alguna referencia o la dirección dónde los has comprado).

24 de mayo de 2015, 19:18

@Arduino Guay

Saludo y gracias, lo que pasa es que soy de mexico y cuando voy a pedir el encoder de rotacion en las electronicas, me ofrecen el FC-03.El modelo que pides no lo encuentro en mi pais.

http://elkine.altervista.org/arduino/sensor/ir.html

Ahora la duda es si ese enconder me sirve, que tendria que hacer para unirlo con un potencioemtro,de cuantos ohms seria, que tendria que modificar para que funcione o sea equivalente al original y que tendria que mover en el cableado hacia el arduino.

24 de mayo de 2015, 21:50

@Dariel H.Arroyo Gonzalez

Se me olvido el modelo que pides no lo encuentro en mi pais ni ninguno parecido siempre me ofrecen el modelo que te puse y un link para que veas.

25 de mayo de 2015, 0:04

@Dariel H.Arroyo Gonzalez
Lo que se ve en el enlace es un encoder infrarrojo de los que se utilizan para controlar la velocidar de un motor, pero lo que hace falta es un encoder rotatativo (manual).
Te recomiendo que lo pidas por ebay, son baratos y sin gastos de envío desde algún pais asiático ..
Rotary encoder

25 de mayo de 2015, 0:12

@Dariel H.Arroyo Gonzalez
También lo puedes encontrar en multitud de tiendas on-line incluso en Amazon. ;-)

Publicar un comentario en la entrada

Buscar en el blog

Cargando...

¡Lo más visto!

English Version

English Version
Arduino is Cool!!

También en Facebook