본문 바로가기
블루투스 스피커 DIY프로젝트

블루투스 스피커 프로젝트 with ESP-WROOM-32

by Newtle Kim 2025. 6. 3.


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-main.zip
0.73MB

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 에서 아래와 같은 설정으로 업로드하였다.

 

 

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

 

3D프린팅 된 ESP32 스피커