Hardware Requirements:


What we are Building

It uses the current ESP32-A2DP and Arduino Audio Tools approach. ESP32-A2DP receives SBC audio as 16-bit stereo PCM, and Audio Tools provides the I²S output layer.

Required Libraries

In Arduino IDE → Library Manager, install:

Select an original ESP32 board, such as ESP32 Dev Module. The ESP32-S3 and C3 are unsuitable because they do not support Bluetooth Classic A2DP.



Pinout

PCM5102AESP32
BCKGPIO 26
LCK, LRCK or WSGPIO 27
DINGPIO 25
SCKGND
GNDGND
VIN5 V


If exposed:

These pin assignments correspond to the established ESP32-A2DP PCM5102 setup.


Code

Using btAudio

#include <btAudio.h>

// Sets the name of the audio device
btAudio audio = btAudio("ESP_Speaker");

void setup() {
 
 // Streams audio data to the ESP32   
 audio.begin();
 
 // Re-connects to last connected device
 audio.reconnect();
 
 // Outputs the received data to an I2S DAC, e.g. https://www.adafruit.com/product/3678
 int bck = 26; 
 int ws = 27;
 int dout = 25;
 audio.I2S(bck, dout, ws);
}

void loop() {

}


References

ReferenceURL

ESP32-A2DP

https://github.com/pschatzmann/ESP32-A2DP

Arduino Audio Tools

https://github.com/pschatzmann/arduino-audio-tools
btAudiohttps://github.com/tierneytim/btAudio#c