<< 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]
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)
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
Sencillamente impresionante...mis felicitaciones en breve te pedire ayuda ya que quuiero manejar un reproductor mp3.
ResponderEliminarGran tutorial y gran acabado, gracias por el aporte
ResponderEliminar@Francisco Plaza Freire
ResponderEliminarGracias, me alegro de que te haya gustado.
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.
ResponderEliminarFelicidades por el proyecto.
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.
ResponderEliminarSaludos.
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola 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
ResponderEliminar@Dariel H.Arroyo Gonzalez
ResponderEliminarPerdona 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).
@Arduino Guay
ResponderEliminarSaludo 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.
@Dariel H.Arroyo Gonzalez
ResponderEliminarSe 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.
@Dariel H.Arroyo Gonzalez
ResponderEliminarLo 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
Este comentario ha sido eliminado por el autor.
ResponderEliminar@Dariel H.Arroyo Gonzalez
ResponderEliminarTambién lo puedes encontrar en multitud de tiendas on-line incluso en Amazon. ;-)
Hola,
ResponderEliminar¿Conoces algún modulo MP3 que pueda almacenar una marca de reproducción? La idea es un reproductor para invidentes. Antes de apagarlo que guarde un punto de reproducción y al encenderlo que continúe desde ahí.
Gracias de antemano
Este comentario ha sido eliminado por el autor.
ResponderEliminar@Anónimo
ResponderEliminarHay pocos módulos de mp3 que conozca, casi todos incluyen chips VLSI y se suelen controlar desde un micro.
Lo que quieres deberás implementarlo tu directamente guardando la posición en EPROM por ejemplo para evitar la pérdida.
Excelente trabajo, voy a tratar de reproducirlo felicidades, para que funcione como lector de mp3 desde una memoria USB , me puedes orientar? saludos
ResponderEliminar@Anónimo
ResponderEliminarPor desgracia el Arduino no tiene capacidad para actuar como host USB, al menos los más simples (uno, pro mini, atmega, ...) y otros como el DUE tienen alguna capacidad pero limitada.
La única opción 'sencilla' al menos teóricamente es utilizar una shield USB como la de sparkfun
SparkFun USB Host Shield
Olá Guay, Gostaria de saber como fazer o SD Card funcionar com a estrutura proposta. Não entendi porque as pastas com os txt´s dentro. Tenho que colocar as musicas dentro dessas pastas seguindo o FAT32 format?
ResponderEliminarExiste alguma forma de usar o IDTag do mp3 para mostrar o nome e não precisar usar essa montagem do cartão SD?
ResponderEliminarhola, voy a hacer exactamente este proyecto pero me prodrian hacer el favor decirme como va toda la conexión y tambien como iniciar programar la tarjete arduino, es que intente y puse el codigo en el programa y decia error de tarjeta arduino . espero pronta respuesta
ResponderEliminarCan't seem to download anything from Google drive, do you have the sketch etc zipped besides google drive that we can download? If so, where?
ResponderEliminar@Unknown
ResponderEliminarReady!
Lo mas parecido a lo que quiero hacer! GuayGracias!
ResponderEliminarEl zip de sd... Está mal o es que hay que meterlo en la sd tal cual?
Jerry