1. 아두이노IDE에 ESP32 개발환경 구축방법
1. 상단 메뉴에 File - Preference - Additional boards manager 에 아래 링크 추가
https://dl.espressif.com/dl/package_esp32_index.json
2. Boards Manager에 esp 검색하면 esp32에 최신버전(2025년도 5월7일 기준 3.2.0) Install, 인스톨 시간 10분이상 필요
3. Board - ESP32 Dev Module 선택한다.

개발환경 구축이 완료되었는데, 간단한 LED점멸 예제를 업로드하여 잘 작동하는지 확인해보자.
ESP-WROOM-32의 내부 LED는 GPIO 2번핀에 연결되어 있다.
2. ESP-WROOM-32 내부 LED 점멸 예제
int LED_BUILTIN = 2;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
3. ESP WROOM 32 블루투스 스피커 라이브러리 추가
라이브러리 : https://github.com/pschatzmann/ESP32-A2DP
GitHub - pschatzmann/ESP32-A2DP: A Simple ESP32 Bluetooth A2DP Library (to implement a Music Receiver or Sender) that supports A
A Simple ESP32 Bluetooth A2DP Library (to implement a Music Receiver or Sender) that supports Arduino, PlatformIO and Espressif IDF - pschatzmann/ESP32-A2DP
github.com
에 들어가서 CODE -> Download ZIP 을 눌러 라이브러리 다운로드
ESP32 A2DP(Advanced Audio Distribution Profile) Library
위 라이브러리ZIP파일을 다운받는것도 가능하지만 깃허브에 들어가서 다운로드 받는 것을 권장한다.
아두이노IDE 에서 Sketch - Include Library - Add .ZIP Library 에서 ESP32-A2DP 라이브러리를 추가한다.

4. 준비물
1. ESP-WROOM-32 개발 보드
2. MAX98357A
3. 3W 8옴 스피커 유닛
4. 브레드보드 및 점퍼 와이어
5. (Opt.) 리튬폴리배터리
6. (Opt.) 리튬폴리배터리 충전모듈 (TP4056)
const uint8_t I2S_SCK = 5; /* Audio data bit clock */ const uint8_t I2S_WS = 25; /* Audio data left and right clock */ const uint8_t I2S_SDOUT = 26; /* ESP32 audio data output (to speakers) */
5. ESP-WROOM-32 블루투스 스피커 테스트 회로
| ESP-WROOM-32 | MAX98357A | |
| Audio data bit clock | GPIO5 | BCK |
| Audio data left and right clock | GPIO25 | LRCK |
| audio data output | GPIO26 | DIN |
| Operating Voltage | 3.3V | Vin |
| Ground | GND | GND |

6. ESP-WROOM-32 블루투스 스피커 기본 예제
#include "ESP_I2S.h"
#include "BluetoothA2DPSink.h"
const uint8_t I2S_SCK = 5; /* Audio data bit clock */
const uint8_t I2S_WS = 25; /* Audio data left and right clock */
const uint8_t I2S_SDOUT = 26; /* ESP32 audio data output (to speakers) */
I2SClass i2s;
BluetoothA2DPSink a2dp_sink(i2s);
void setup() {
i2s.setPins(I2S_SCK, I2S_WS, I2S_SDOUT);
if (!i2s.begin(I2S_MODE_STD, 44100, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO, I2S_STD_SLOT_BOTH)) {
Serial.println("Failed to initialize I2S!");
while (1); // do nothing
}
a2dp_sink.start("NewtleKimSpeaker");
a2dp_sink.set_volume(127);
}
void loop() {
}
이대로 컴파일을 하면된다. ESP-WROOM-32 사용할 때는 Tools 에서 아래와 같은 설정으로 업로드하였다.


업로드가 완료되면 위와 같이 블루투스 디바이스 추가에서 스피커가 잡히는 것을 볼 수 있다.
