Publicado el

Reproductor MP3/WAV/MIDI/OGG VS1053 con Ranura MicroSD

mp3 nano
Este tablero es el compañero ideal para el chip VLSI códec VS1053B DSP. El VS1053 puede decodificar una amplia variedad de formatos de audio tales como MP3, AAC, Ogg Vorbis, WMA, MIDI, WAV, FLAC (PCM y ADPCM), también se puede utilizar para grabar audio tanto en PCM (WAV) y comprimido. Puedes hacer todo tipo de cosas con el audio, así como el bajo ajuste, los agudos, y el volumen de forma digital.
Existen dos versiones del Mp3, la primera versión necesita conectarse a unos capacitores extra.
adafruit_products_1381_LRG
En la segunda versión, viene mejorada, ya incluye los capacitores dentro del circuito.
mp2
Las dos versiones funcionan de la misma forma, no tienes que preocuparte de nada.

Dispone de 8 pines GPIO que se pueden usar para cosas como la iluminación de pequeños LED o la lectura de botones. Toda esta funcionalidad se implementa en una interfaz SPI; por lo que casi cualquier microcontrolador puede reproducir audio desde una tarjeta SD. También hay un modo MIDI especial que se puede arrancar el chip en que leerá los datos ‘clásicos’  a 31250Kb MIDI en un perno UART y actuar como una tablero sintetizador , incluye tambor incorporado y docenas de efectos de muestra.
mp1
Ideal para su uso con un Arduino pero también es bueno para otros microcontroladores que simplemente no tienen la capacidad de cálculo para decodificar archivos MP3. Hay 3.3 V y reguladores de 1.8 V, filtrado analógico para la salida analógica de calidad. Hay un puerto de entrada de micrófono que se puede cablear, una entrada de línea o micrófono y grabar audio comprimido. Los 8 GPIO se han construido en 100K ohms, sólo tiene que conectar el botón del pin GPIO a 3.3V para una conexión activa a alta. Es probable que quieras reproducir música desde una tarjeta micro SD por lo que hemos añadido un soporte.
mp
Ya que la mayoría utilizan los microcontroladores 5V como el Arduino, que hicieron los pines de interfaz compatibles con palancas de cambios de nivel para que puedas utilizar el chip a 3V o 5V, Todas las placas de la primera versión, vienen con dos condensadores electrolíticos de 100uF de acoplamiento de salida de nivel de línea,  en la segunda versión tienen los condensadores integrados en el PCB. Todos los kits del reproductor MP3, vienen con un conector para auriculares estéreo, que será útil cuando quieras conectar los auriculares en el.
mp2 - copia
[nextpage title=»Armando nuestro MP3″]
Soldemos los pines largo-corto, al MP3.
Cortar las tiras de pines si es necesario y coloca los pines largos hacia abajo en el tablero.mp3

Ensamblando el MP3
Debes colocar el MP3 arriba de los pines largo-corto y a soldar.
adafruit_products_2013_07_21_IMG_2051-1024
Introducción al Software  vs1053

Para comenzar con la programación VS1053 (cualquier versión) primero tendrás que descargar la Biblioteca VS1053 Adafruit:

https://github.com/adafruit/Adafruit_VS1053_Library/archive/master.zip
Y tienes que guardar la biblioteca en la carpeta de Arduino.
[nextpage title=»Conectando un reproductor de audio»]
El VS1053 se puede configurar como un reproductor de audio sencillo bajo el control de Arduino. El Arduino lee los datos de la tarjeta SD, después la reproduce a través del CODEC través de la interfaz SPI. Estos pasos son idénticos para ambas versiones de códecs, incluso si las juntas se ven un poco diferente.
Conectando el reproductor de MP3
adafruit_products_2013_07_25_IMG_2066-1024
Añade el conector de auriculares, y conectalo tal como se muestra en la imagen.

  • VCC -> 5v
  • GND -> GND

Conectando el SPI y Reset
Añadir jumper dupont para:
adafruit_products_2013_07_25_IMG_2065-1024

  • CLK -> Arduino # 13 (Mega 52)
  • MISO -> Arduino # 12 (Mega 50)
  • MOSI -> Arduino # 11 (Mega 51)
  • CS -> Arduino # 10
  • RST -> Arduino # 9

Conectando el resto de pines digitales
Añadir jumper dupont para:
adafruit_products_2013_07_25_IMG_2064-1024

  • XDCS-> Arduino # 8
  • SDCS -> Arduino # 4
  • DREQ -> Arduino # 3

Conectando el auricular 
Este paso será un poco diferente dependiendo de la versión que tengas. Si tu reproductor esla versión 2 y tiene los condensadores, añade los puentes para:

  • GND -> «tierra»
  • LOUT-> Pin izquierdo
  • ROUT -> Pin derecho

(estos se encuentran en la esquina)
Si tu reproductor es v1, los pines serán etiquetados así:

  • GBUF -> Pin «tierra»
  • LOUT -> Pin izquierdo
  • ROUT -> Pin derecho

Para v1, no utilices este cableado para los altavoces amplificados o una línea de conexión a un ordenador / estéreo. Sólo para auriculares.Para v2, puedes utilizar este tipo de conexión para cualquier tipo de conexión sin preocupación.
[nextpage title=»Cargar algunos archivos MP3″]
Copiar archivos MP3 a una tarjeta micro SD y nombrarlos track001.mp3 y track002.mp3 (esto es sólo para la prueba, se puede cambiar el nombre de ellos más adelante). A continuación, instalar la tarjeta en la ranura de nuestro reproductor VS1053.
mp

Asegúrate de que tengas una tarjeta SD de buena calidad, algunas tarjetas SD baratos no funcionan.[nextpage title=»Sketch simple del reproductor de audio»]
Conectar el Arduino al ordenador y conecta los auriculares en el conector.
Seleccione Archivo-> Examples-> Adafruit_VS1053_Codec-> player_simple para cargar el código de ejemplo.
Debes escuchar tus archivos MP3 en los auriculares.También puedes ejecutar Archivo-> Examples->> Adafruit_VS1053_Codec- player_interrupts. Este ejemplo demuestra la reproducción de archivos en segundo plano el uso de las interrupciones. Esto te permite hacer otras cosas en el sketch mientras que la música suena.
Con ambos ejemplos, puedes cambiar los nombres de archivo en el código para reproducir diferentes archivos o incluso ampliar el código para buscar la tarjeta SD.
 
[nextpage title=»Probando con Arduino nano»]
 Como ya sabemos que el Arduino UNO es muy espacioso, te ayudaremos a reducir éso con el Arduino NANO.
adafruit_products_Micro
Frank Cohen ha presentado un diagrama de cableado para el ejemplo FilePlayer en un micro. Véase su código escrito aquí también: http://votsh.files.wordpress.com/2014/02/vs1053-arduino-micro-connections.pdf
Nota:  Para los sonidos en el fondo usando interrupciones, conecta DREQ al pin 3 y modificar el código para que coincida.

[nextpage title=»Conectando el Audio con altavoces»]
Tanto la versión 1 del VS1053 y la versión 2 puedes conducir un par de auriculares directamente. Sólo tienes que conectar los pines LOUT y ROUT  a los  auriculares. El pin de tierra debe estar conectada a GBUF.
adafruit_products_2013_07_26_IMG_2069

Tanto v1 y v2 también puede conducir directamente dispositivos de audio con entradas diferenciales tales como nuestro 3,7 vatios estéreo amplificador de clase D. Conectar LOUT y L + R + y los pines del amplificador. Conectar L y R al pin GND.
mp16
Si tienes la versión 1, se puede conectar a altavoces con alimentación / estéreo pero debes utilizar los condensadores incluidos.
Para los dispositivos de audio de entrada que requieren un nivel de línea, utiliza los condensadores incluidos. Estos son los condensadores electrolíticos polarizados, por lo que es importante saber qué manera de conectarlos. Conecte el positivo a los pines de Lout y Rout, y los cables negativos a los terminales L y R de auriculares o entradas derecha e izquierda del dispositivo de audio. El pin de tierra de el audicular de audio debe ser conectado al pin AGND.
adafruit_products_2013_07_26_IMG_2070-1024
Si tienes la versión 2, estos condensadores pueden ser omitidos, ya que se incluyen en el propio tablero.
[nextpage title=»Conexiones MIDI»]

Con algunas conexiones de puentes, la junta se iniciará en el modo MIDI que se leen los datos de ‘clásicos’ 31250Kbaud MIDI en un perno UART y actuar como una máquina sintetizador / tambor – hay de tambor incorporado y efectos de muestra docenas.
mp18

Configurar para el funcionamiento MIDI
Añadir los jumper dupont de la siguiente manera:

  • GPIO-0 -> GND
  • GPIO-1 -> 3.3v
  • Rx -> Arduino Digital # 2
  • RST -> Arduino digital # 9

mp19

Conectar el auricular 
Lo mismo que las pruebas anteriores, añadir los jumper dupont para:

  • AGND (v2) o GBUF (v1) -> Tierra
  • LOUT -> pin izquierdo
  • ROUT -> pin derecho

mp20

Ejemplo Midi Bosquejo
Conectar el Arduino al ordenador y conecta los auriculares en el conector de auriculares. Seleccione Archivo-> Examples-> Adafruit_VS1053_Codec-> player_miditest para cargar el código de ejemplo para el funcionamiento MIDI. Deberas oír una serie repetida de tonos ascendentes desde el reproductor MIDI.
[nextpage title=»Pines GPIO»]

El VS1053 tiene 8 pines GPIO que pueden ser leídos o escritos mediante la biblioteca. El sketch player_gpiotest muestra cómo hacer esto.
Comenzar con el cableado básico
mp22
Usar la simple reproductor de audio cableado desde el enlace de la izquierda.
Agrega unos LEDs
Añadir un puente desde la barra de tierra a la izquierda de la barra de tierra a la derecha de la placa.
mp23
A continuación, añadir algunos LED de los pines GPIO a tierra. Asegúrese de conectar los largos (ánodo) al pin GPOI y la ejecución corto (cátodo) a tierra. Y te preguntaras;¿Qué? No hay resistencias limitadoras de corriente?

Estrictamente hablando, la mejor práctica es utilizar una resistencia limitadora de corriente cuando se enciende un LED de un pin GPIO. En este caso, el bosquejo ejemplo impulsos de cada LED sólo brevemente, por lo que no hay peligro de daño. Para un uso más general, se debe seleccionar una adecuada resistencia para el LED que está utilizando.
Ejecutar el boceto player_gpiotest
Conectar el Arduino al ordenador , seleccione Archivo-> Examples-> Adafruit_VS1053-> player_gpiotest para cargar el código de ejemplo.
Si tienes los auriculares, se oirá un pitido en el inicio para indicar que el boceto se está ejecutando. A continuación, deberías ver los LEDs parpadeando en secuencia.
Si abre el monitor de serie, se puede ver los valores que se escriben y leer desde cada pin GPIO.
Ten en cuenta que los pines GPIO NO están 5V seguro. No conectes a tensiones o voltajes superiores a 3,3 v.

[nextpage title=»Grabación con el VS1053″]

El ejemplo boceto record_ogg convierte el reproductor VS1053 en un dispositivo de grabación que genera archivos codificados OGG en la tarjeta SD en tiempo real.

mp24
Cableado para el boceto record_ogg es el siguiente: alimentación y de tierra:
  • VCC -> 5v
  • GND -> GND

Conexiones básicas SPI:

  • SCLK -> Arduino # 13
  • MOSI -> Arduino # 11
  • MISO -> Arduino # 12
  • CS -> Arduino # 10

Señales de control adicionales:

  • SDCS -> Arduino A0
  • XDCS -> Arduino # 8
  • RST -> Arduino # 9
  • DREQ -> Arduino A1

Botón Start / Stop (momentáneo):

  • de Arduino # 7 a GND

Micrófono electret Circuito:
adafruit_products_Microphone_Circuit_schem
El circuito del micrófono se deriva del diseño de referencia se muestra en  VS1053B Hoja de datos . Ten en cuenta que las conexiones a tierra que se muestran son de tierra analógica (AGND).

 

Una nota acerca de los circuitos de micrófono:

ELECTREC1

Micrófonos, por su naturaleza, son dispositivos muy sensibles. Son propensos a recoger todo tipo de ruidos (tanto eléctricas y acústicas), además de lo que está intentando grabar. Un circuito de micrófono incorporado en un circuito no es probable que suene bien en absoluto. Para un buen sonido, tendrá que revisar las recomendaciones hoja de especificaciones y construir esto sobre una placa de circuito de buena calidad.
Scketch de grabación:
Conectar el Arduino al ordenador con un cable USB y conecte sus auriculares en el conector de auriculares. Seleccione Archivo-> Examples-> Adafruit_VS1053_Codec-> record_ogg para cargar el código de ejemplo.
Plug-ins
El sketch ejemplo record_ogg demuestra una potente característica del reproductor VS1053: Plug-ins.capacidad de grabación de OGG no es compatible de forma nativa en el propio chip, sino a través de un módulo de código de plug-in. Un archivo binario que contiene la imagen de código del plug-in se carga desde la tarjeta SD en el inicio. Una vez cargado, el VS1053 se convierte en un dispositivo de grabación OGG.
Para registrar:
Presione el botón de inicio para iniciar la grabación. Presione una vez más para detener.Cada grabación se almacena en un archivo separado .OGG en la tarjeta SD.
Para la reproducción:
Utiliza cualquier reproductor de audio OGG en tu ordenador – o reproduce a través del VS1053 utilizando la configuración simple reproductor de audio.

[nextpage title=»Referencia de la biblioteca»]

Adafruit_VS1053_FilePlayer

La clase Adafruit_VS1053_FilePlayer se deriva de la clase Adafruit_VS1053 y proporciona funciones de alto nivel para la reproducción de archivos almacenados en el lector de tarjetas SC VS1053 ruptura.
Los métodos comunes:

Adafruit_VS1053_FilePlayer (uint8_t MOSI, uint8_t miso, CLK uint8_t, primer uint8_t, uint8_t cs, DCS uint8_t, dreq uint8_t, uint8_t cardCS) – constructor de software de SPI. Utiliza software de SPI, lo que debe especificar todos los pines SPI.

Adafruit_VS1053_FilePlayer (uint8_t primera, uint8_t cs, DCS uint8_t, dreq uint8_t, uint8_t cardCS) – Hardware SPI constructor. Utiliza hardware SPI y asume los pines SPI por defecto.

Boolean begin (void) – Inicializar la comunicación y restablecer el chip. UseInterrupt booleano (tipo uint8_t) – Especifica la interrupción de utilizar para la reproducción por interrupciones.Los argumentos válidos son:

  • VS1053_FILEPLAYER_TIMER0_INT
  • VS1053_FILEPLAYER_PIN_INT

booleano startPlayingFile (char * trackname) – Comenzar a reproducir el archivo especificado desde la tarjeta SD usando la reproducción por interrupciones. Esto permite que su programa para realizar otras tareas que el archivo está jugando.

PlayFullFile booleano (char * trackname)– Reproduce el archivo completo. Esta función no volverá hasta que la reproducción es completa.

Las variables miembro públicas:

CurrentTrack Archivo – archivo actualmente en reproducción playingMusic booleano – Verdadero si la reproducción en curso

Adafruit_VS1053
La clase Adafruit_VS1053 implementa una interfaz para la funcionalidad básica VS1053. Para más detalles sobre el funcionamiento del chip VS1053, por favor refiérase a la documentación en la página de descargas.
Los métodos comunes:

Adafruit_VS1053 (uint8_t MOSI, uint8_t miso, CLK uint8_t, primer uint8_t, uint8_t cs, DCS uint8_t, uint8_t dreq) – Software SPI constructor – debe especificar todos los pines.

(Primera uint8_t, uint8_t cs, uint8_t DCS, uint8_t dreq) Adafruit_VS1053 – Hardware SPI constructor – asume hardware pines SPI.

uint8_t begin (void) -. inicializar la comunicación SPI y (duro) restablecer el chip

void reset (void) – Realiza un restablecimiento del chip. anular SoftReset (void) – los intentos de un restablecimiento automático de la viruta.

uint16_t sciRead (uint8_t addr) -. Lecturas del registro especificado en el chip

anular (direc uint8_t, uint16_t datos) sciWrite – escribe en el registro especificado en el chip.

anulará sineTest (uint8_t n, uint16_t ms) – Generar una condición sine señal de onda * prueba.

void spiwrite (uint8_t d) – bajo nivel de operación de escritura SPI.

uint8_t spiread (void) – bajo nivel de SPI operación de lectura. uint16_t decodeTime (void) -. lee el registro DECODETIME desde el chip

setVolume vacío (uint8_t izquierda, uint8_t derecha) – Ajuste el volumen de salida para el chip.

dumpRegs (void) -. Imprime el contenido de la modalidad, ESTADO, CLOCKF y el volumen de registros

void playData (uint8_t * buffer, uint8_t buffsiz) – Decodificar y reproducir el contenido del tampón suministrado.

readyForData booleanos (void) – Prueba si estuviera listo para más datos.

void applyPatch (const uint16_t * parche, patchsize uint16_t) – Aplicar un parche para el código (Ver ficha técnica para más detalles).

uint16_t LoadPlugin (char * fn) – carga . el plug-in especificado

sin efecto GPIO_digitalWrite (uint8_t i, uint8_t val)– Escribir a un pin GPIO.

anular GPIO_digitalWrite (uint8_t i) – Escribir a los 8 pines GPIO a la vez.

uint16_t GPIO_digitalRead (void) – Leer los 8 pines GPIO en una vez.

GPIO_digitalRead booleano (uint8_t i) – Leer un único pin GPIO.

GPIO_pinMode vacío (uint8_t i, uint8_t dir) -. Establecer la modalidad de alfileres (entrada / salida) para un pasador GPIO

prepareRecordOgg booleano (char * plugin) – Inicializar chip para grabación de OGG.

anulará startRecordOgg (mic booleano) – Comienza la grabación (micrófono = true para entrada de micrófono). void stopRecordOgg (void) – Detener la grabación.

uint16_t recordedWordsWaiting (void) -. Devuelve el número de palabras registradas

uint16_t recordedReadWord (void) – lee la siguiente palabra de la memoria intermedia de palabras registradas. uint16_t recordedReadWord (void) – lee la siguiente palabra de la memoria intermedia de palabras registradas.

Compartir ahora:
Deja una respuesta