sábado, 2 de junio de 2018

Proyectos con ESP32 #1: Reproducir Audio Usando el DAC


Este es el primer video de una nueva sección en la que voy a subir proyectos usando los conocimientos que vamos adquiriendo en la serie “ESP32 desde Cero”. En este primer proyecto explico como reproducir el audio de un archivo WAV utilizando uno de los DAC. Todos esto lo logramos con sólo 6 líneas de código.


Código Fuente:

void setup() {
}
void loop() { 
  for (int i = 0; i < 22000; ++i){
    dacWrite(25, rawData[i]);
    delayMicroseconds(38); // ((1/22050)*1000000) - 7
  }
}


12 comentarios:

  1. Gracias, me ha gustado mucho tu video. Sencillo y funcional y muy bien explicado

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Hay un problema: los datos se cargan en RAM y el ESP32 está limitado en RAM. Aconsejo cargar los datos en Flash, que es enorme. Bajar el retardo en uSec porque es una memoria más lenta:

    void playSound(float volumen) {
    for (int i = 0; i < sizeof (SineWave); i++) {
    dac_output_voltage(DAC_CHANNEL_2, (uint8_t)((volumen/100)*(float)pgm_read_word(&(SineWave[i]))));
    delayMicroseconds(10);
    }

    y los datos así:


    unsigned char SineWave[] PROGMEM = {
    0x52, 0x49, 0x46, 0x46, 0xEE, 0xD6, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45,
    0x66, 0x6D, 0x74, 0x20, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,....

    ResponderEliminar
    Respuestas
    1. Muy buen dato. Gracias Germán.

      Eliminar
    2. Hola buen día, estoy muy interesado en hacer un reproductor de audio de 30 seg de duración con esp32, porfavor alguien me podria ayudar a hacerlo de antemano gracias este es mi numero de whatsapp en México 2721671023

      Eliminar
    3. Yo no entiendo como es que se hizo el cambio de memoria RAM a Flash, supongo que debe ser el lugar en donde declaras el arreglo de datos, pero en tu ejemplo no lo veo, sera que es adentro de la funcion playSound?????

      Eliminar
  5. hola, excelente practica, se puede aplicar con NODEMCU ESP8266

    ResponderEliminar
    Respuestas
    1. Hola Roberto. ESP8266 no tiene DAC. Podés hacer algo parecido usando PWM y un filtro. Saludos.

      Eliminar
  6. Se puede aplicar para esp32 battery oled

    ResponderEliminar