Hola chicos, para mi proyecto necesito usar tanto el bluetooth del ESP32 como usar audio de mi micro SD para reproducirlos.
Uso un MAX98357A, un modulo mini SD (3.3V - CS - MOSI -CLK - MISO -GND)
No necesito que se reproduzca al mismo tiempo pero si necesito que el bluetooth esté siempre conectado al esp32 para reproducir un sonido (son cortos ej la vocal "a" y por otro lado cuando presiono ciertos botones reproduce los audios guardados en la SD (son cortos ej la vocal "a").
Mi problema es que hace interferencia al usar el mismo canal I2S, en el mismo código no hace las dos cosas, por ejemplo: reproduce desde la SD y me aparece poder conectar el bluetooth pero no me permite.
También probé usando 2 amplificadores, uno para SD y otro para bluetooth pero solo hace uno.
No se si alguien más tiene este problema y pudo solucionarlo, me pueden ayudar por favor, adjunto código;
// Include required libraries
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
#include "BluetoothA2DPSink.h"
// microSD Card Reader connections
#define SD_CS 5
#define SPI_MOSI 23
#define SPI_MISO 19
#define SPI_SCK 18
// I2S Connections
#define I2S_DOUT 25
#define I2S_BCLK 26
#define I2S_LRC 27
// Create Audio and Bluetooth objects
Audio audio;
BluetoothA2DPSink bluetooth;
void setup() {
// Set microSD Card CS as OUTPUT and set HIGH
pinMode(SD_CS, OUTPUT);
digitalWrite(SD_CS, HIGH);
// Initialize SPI bus for microSD Card
SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
// Start Serial Port
Serial.begin(115200);
// Start microSD Card
if (!SD.begin(SD_CS)) {
Serial.println("Error accessing microSD card!");
while (true);
}
// Setup I2S
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
// Set Volume
audio.setVolume(30);
// Open music file
audio.connecttoFS(SD, "/granja.mp3");
// Start Bluetooth
i2s_pin_config_t configBT = {
.mck_io_num = I2S_PIN_NO_CHANGE,
.bck_io_num = I2S_BCLK,
.ws_io_num = I2S_LRC,
.data_out_num = I2S_DOUT,
.data_in_num = I2S_PIN_NO_CHANGE
};
bluetooth.set_pin_config(configBT);
bluetooth.start("ESP32_Audio");
}
void loop() {
audio.loop();
}