본문 바로가기

ESP32 Project

ESP32 블루투스 이어폰 연결

반응형

ESP32를 블루투스 이어폰에 연결하려면 ESP32가 A2DP 소스(오디오 송신기) 역할을 해야 하고, 이어폰은 A2DP 싱크(오디오 수신기) 역할을 해야 합니다. [1] 이를 위해서는 블루투스 클래식(Bluetooth Classic)을 지원하는 오리지널 ESP32 칩이 필요합니다. ESP32-S3나 C6 같은 최신 모델은 주로 BLE(블루투스 저전력)만 지원하여 A2DP 오디오 직접 페어링이 불가능할 수 있습니다. 

 

핵심 요구사항
 
  • 하드웨어: 오리지널 ESP-WROOM-32 개발 보드를 사용해야 합니다.
  • 프로토콜: 음악이나 소리를 스트리밍하려면 A2DP(Advanced Audio Distribution Profile) 프로토콜이 필수입니다. [1]
  • 소프트웨어 툴: 보드를 가장 쉽게 프로그래밍할 수 있는 Arduino IDE를 사용합니다.
 
단계별 연결 과정
 
  1. A2DP 라이브러리 설치
    Arduino IDE를 열고 스케치 > 라이브러리 포함하기 > 라이브러리 관리로 이동합니다. Phil Schatzmann이 제작한 ESP32-A2DP를 검색하여 설치합니다. 이 라이브러리가 복잡한 오디오 스트리밍 규칙을 자동으로 처리해 줍니다. [1]
  2. 코드 작성
    ESP32가 특정 블루투스 기기 이름을 검색하고 연결하도록 코드를 작성합니다. 또한 ESP32가 어떤 오디오(예: 저장된 MP3 파일)를 전송할지 지정해야 합니다. 최소 기능으로 구성된 코드 예시는 ESP32-A2DP GitHub 저장소에서 직접 확인할 수 있습니다. [1]
  3. 기기 페어링
    블루투스 이어폰을 페어링 모드로 전환합니다(보통 LED 불빛이 깜빡일 때까지 케이스 버튼이나 이어폰을 길게 누름). 그다음 ESP32의 전원을 켭니다. 업로드한 코드가 이어폰의 MAC 주소나 이름을 검색하여 자동으로 페어링을 완료합니다. [1]
만약 ESP32를 이어폰 송신기가 아닌 블루투스 스피커(수신기)로 사용하려는 경우 설정 방법이 약간 달라집니다. [1]
추가 진행을 위해 아래 내용을 알려주시면 더 자세히 도와드릴 수 있습니다:
  • ESP32가 이어폰으로 오디오를 보내는 역할인가요, 아니면 폰에서 오디오를 받는 역할인가요?
  • 가지고 계신 ESP32 보드의 정확한 모델명은 무엇인가요?
  • 어떤 오디오 소스(예: SD 카드, text-to-speech 등)를 사용하실 예정인가요?
답변 주시면 상황에 맞는 정확한 라이브러리 선택과 코드 작성을 도와드리겠습니다.

단어 학습기에서 블루투스 이어폰으로 오디오를 보내려면 SD 카드 모듈에 단어 오디오 파일(.raw 또는 .wav)을 저장한 후, ESP32가 이를 읽어 블루투스로 송출(A2DP Source)하도록 구현해야 합니다. [1, 2]
구현을 위한 핵심 하드웨어 구성과 아두이노 코드 가이드는 다음과 같습니다.

 


 
1. 하드웨어 준비 및 회로 연결
 
오리지널 ESP32(ESP-WROOM-32) 보드와 SPI 방식의 Micro SD 카드 모듈을 준비합니다.
SD 카드 모듈 핀ESP32 연결 핀 (기본 SPI)

 

 

VCC 5V 또는 3.3V
GND GND
MISO GPIO 19
MOSI GPIO 23
SCK GPIO 18
CS (SS) GPIO 5
💡 중요 (오디오 파일 포맷): ESP32 블루투스 라이브러리는 일반 MP3를 실시간 디코딩하면 연산 부하가 커 끊길 수 있습니다. Audacity 같은 프로그램을 사용해 오디오 파일을 RAW(또는 WAV) / Signed 16-bit PCM / Stereo / 44100Hz 포맷으로 변환한 뒤 SD 카드에 저장하는 것이 가장 안정적입니다. 예: apple.raw, banana.raw [1, 2, 3]

2. 아두이노 라이브러리 설치
 
아두이노 IDE의 라이브러리 관리자에서 아래 라이브러리를 설치합니다.
 
  • ESP32-A2DP (by Phil Schatzmann) — 블루투스 오디오 송신용
  • ezButton (선택) — 단어 넘김 버튼 제어용 [1, 2]

3. 단어 학습기 핵심 코드 예시
 
버튼을 누를 때마다 SD 카드에서 해당하는 단어 음성 파일(apple.raw)을 열어 블루투스 이어폰으로 재생하는 기본 구조입니다. [1, 2]

 

 

#include "BluetoothA2DPSource.h"
#include <SPI.h>
#include <SD.h>

// 블루투스 오디오 소스 설정 및 SD 카드 핀 정의
BluetoothA2DPSource a2dp_source;
File sound_file;
const int SD_CS_PIN = 5; 
const int BUTTON_PIN = 4; 

// {Link: 깃허브 토론 https://github.com/pschatzmann/ESP32-A2DP/discussions/603} 및 {Link: 블로그 포스트 https://www.pschatzmann.ch/home/2021/04/29/bluetooth-a2dp-streaming-from-files-on-a-sd-card/}를 참고한 SD 카드 파일 재생 예시

// SD 카드의 raw 데이터를 블루투스 버퍼로 전송하는 콜백 함수
int32_t get_sound_data(Channels* data, int32_t len) {
  if (!sound_file || !sound_file.available()) return 0;
  // 16비트 스테레오 데이터를 읽어 샘플 수 반환
  return sound_file.read((uint8_t*)data, len * 4) / 4; 
}

void setup() {
  Serial.begin(115200);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  
  // SD 카드 초기화 및 블루투스 이어폰 연결 시작
  if (!SD.begin(SD_CS_PIN)) Serial.println("SD Init Failed");
  a2dp_source.start("MyBuds", get_sound_data); 
}

void loop() {
  // 버튼 클릭 시 오디오 파일 재생
  if (digitalRead(BUTTON_PIN) == LOW) {
    if (sound_file) sound_file.close();
    sound_file = SD.open("/apple.raw", FILE_READ); 
    delay(500); 
  }
}

 

 

대답에 문제가 발생했지만 가장 관련성이 높은 결과는 다음과 같습니다.
Connecting ESP32 to Bluetooth Headphones/Earbuds - Reddit
You got ESP32 plain, that can do bluetooth classic and thus A2DP (advanced audio distrobution protocol). There are examples for that. you want a source, the ...
 
Connecting esp32 to wireless headset - Arduino Forum
Copy the error message text in Arduino IDE. · Open a forum reply here by clicking the "Reply" button. · Click the icon on the post composer toolbar.
Turn an ESP32 Into a Headphone Player #esp32 #tutorial - YouTube
In this video I show how to play audio on an ESP32 using wired headphones with I2S, a PCM5102A DAC and a TPA6132 headphone amplifier.
Sending Sound from an ESP32 to a Bluetooth Sink (e.g. Bluetooth ...
No, the ESP32 still does not provide any audio functionality with BLE… Reply. Joel Leon · 6. October 2022 at 23:06. All ...
 
ESP32 Bluetooth Audio - OceanLabz
What You'll Learn · Basics of Bluetooth A2DP audio streaming with ESP32 · Setting up I2S output on the ESP32 · Connecting and using an external DAC (like CJMCU1334) ...
ESP32 Forum·https://esp32.com
 
ESP32 as Bluetooth headset
You should be able to satisfy all your audio headset needs using the two I2S peripherals in the ESP32. But you will need to use an external DAC and ADC if you ...
How to connect your ESP32 to a Bluetooth speaker (A2DP Tutorial)
In this video, I'll walk you step-by-step through connecting your ESP32 to a Bluetooth speaker using the A2DP library. We'll cover how to upload audio files ...
ESP32-S3 as a USB Audio Device - by Chris Greening - atomic14
My first thought: make it into a Bluetooth audio device. Unfortunately, the ESP32-S3 only supports Bluetooth Low Energy, not Bluetooth Classic – and BLE doesn't ...
 
Building a hearing assistance headset with ESP32 and Arduino
Although there isn't a direct discussion on configuring the ES8388, a related post mentions using the ESP32-audioI2S-master library for audio output with ...
Record & Playback Audio on ESP32 SD Card: Step-by-Step Guide ...
Learn how to use the ESP32 to record and play WAVE files to and from an SD Card with ease, using the Arduino framework.

 

 

 

이미지 출처 https://electropeak.com/learn/esp32-setup-wifi-connection-using-bluetooth/

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩