Sencillo reproductor de audio

Hardware necesitado

1 Placa Arduino Due
1 Escudo Arduino con una tarjeta SD con CS CS 4 (como el escudo de Ethernet)
1 Altavoz de 8 ohmios
1 Circuito integrado LM386 (amplificador de audio de baja potencia)
1 Potenciómetro de 10 Kohm
1 Resistencia de 10 ohm
2 Condensadores de 10 uF
1 Condensador de 0,05 uF (o 0,1 uF)
1 Condensador de 250 uF


Circuito

El escudo se encuentra en la parte superior de la olaca Due con una tarjeta micro-SD en la ranura. Un archivo .wav llamado "test.wav" se encuentra en el directorio raíz de la tarjeta. Para una prueba simple se puede conectar un par de auriculares directamente a tierra y DAC0, respetando la polaridad.

Para conectar un altavoz a la placa que tiene agregar un circuito de amplificación conectado entre el pin DAC0 y el altavoz. El circuito de amplificación aumentará el volumen del altavoz. Hay muchos amplificadores de audio disponibles, uno de los más comunes es el LM386. El siguiente esquema muestra cómo construir el circuito con el LM386 y unos pocos componentes. Puede alimentar el LM386 conectando la clavija Vs a tensiones diferentes, como por ejemplo a +5 V en el pin 5 V del Arduino Due o a una batería de 9 V externa. La ganancia del amplificador está dada por el condensador conectado a los pines 1 y 8 del LM386. Con el condensador de 10 mF la ganancia se establece en 200, sin el condensador la ganancia es de 50. Con el potenciómetro se puede controlar el volumen del amplificador.

Advertencia: no conecte el altavoz directamente a los pines del Arduino Due.






Archivo de audio

El archivo de audio para almacenar en la tarjeta SD debe estar en formato .wav con 44100 Hz, calidad estéreo de 16 bits.

Código

/*
  Sencillo reproductor de Audio

 Demuestra el uso de la biblioteca Audio con el Arduino Due

 Hardware requrido :
 * Escudo Arduino con una tarjeta SD en CS4
 * Un archivo de sonido llamada "test.wav" en el directorio raóz de la tarjeta SD
 * Un amplificador de audio conectado entre el pin DAC0 y masa
 * Un altavoz conectado al amplificador de ausio

 Original por Massimo Banzi Septiembre 20, 2012
 Modificado por Scott Fitzgerald Octubre 19, 2012
 Modificado por Arturo Guadalupi Diciembre 18, 2015

 Este código es de dominio publico

 http://www.arduino.cc/en/Tutorial/SimpleAudioPlayer

*/


#include <SD.h>
#include <SPI.h>
#include <Audio.h>

void setup() {
  // configura la comunicacion serie a 9600 baud
  Serial.begin(9600);

  // inicializa la tarjeta SD
  Serial.print("Initializando la tarjeta SD...");
  if (!SD.begin(4)) {
    Serial.println(" fallo!");
    while(true);
  }
  Serial.println(" termnado.");
  // transferencia SPI de alta velocidad

  // Frecuencia de muestreo 44100kHz stereo => 88200
  // 100 mSec de pre buffer.
  Audio.begin(88200, 100);
}

void loop() {
  int count = 0;

  // abre el archivo de la tarjeta
  File myFile = SD.open("test.wav");
  if (!myFile) {
    // Si el archivo no se abre, imprimir un error y detener
    Serial.println("error abriendo test.wav");
    while (true);
  }

  const int S = 1024; // Numero de muestras a leer en un bloque
  short buffer[S];

  Serial.print("Reproduciendo");
  // hasta que el archivo se termine
  while (myFile.available()) {
    // lee desde el buffer
    myFile.read(buffer, sizeof(buffer));

    // Prepara muestras
    int volume = 1024;
    Audio.prepare(buffer, S, volume);
    // Muestras para el audio
    Audio.write(buffer, S);

    // Cada 100 bloques, imprimir '.'
    count++;
    if (count == 100) {
      Serial.print(".");
      count = 0;
    }
  }
  myFile.close();

  Serial.println("Fin de archivo. Gracias por escuchar!");
  while (true) ;
}

4 comentarios:

  1. Hola hay algo parecido con arduino uno o nano?desde ya gracias

    ResponderEliminar
  2. hola los archivos para leer la sd y audio las pueden incluir en el link
    gracias

    ResponderEliminar
  3. se podria cambiar la frecuencia en lugar del volumen_¿?

    ResponderEliminar
  4. El circuito esta incompleto, para publicar las cosas asi mejor no publiques nada!!

    ResponderEliminar