ESP32 C3 Super Mini 미니 Mp3 플레이어

ESP32 C3 Super Mini는 오디오 프로젝트에 완벽한 컴팩트 3.3V 개발 보드입니다. 이 튜토리얼에서는 ESP32 C3 Super Mini 보드와 함께 DIYables Mini Mp3 Player 모듈을 사용하여 완전한 mp3 플레이어 시스템을 구축하는 방법을 배웁니다.

배우게 될 내용:

ESP32 C3 Super Mini 미니 mp3 플레이어

필요한 하드웨어

1×ESP32 C3 Super Mini 아마존
1×USB 타입-C 케이블 쿠팡 | 아마존
1×DIYables Mini Mp3 Player 모듈 아마존
1×마이크로 SD 카드 아마존
1×스피커 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼 와이어 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

Mini Mp3 Player 모듈에 대해

DIYables Mini Mp3 Player는 마이크로 SD 카드에서 내장 앰프를 통해 오디오 파일을 재생하는 YX5200-24SS mp3 디코더 모듈입니다.

주요 특성:

  • 3.3V–5V로 작동(ESP32 C3 Super Mini의 3.3V 로직에 완벽함)
  • 115200 보드에서 UART 시리얼을 통해 제어
  • 스피커를 직접 연결할 수 있는 내장 3W 앰프
  • 최대 255개의 트랙 및 99개의 폴더 지원
  • 31개의 볼륨 수준(0–30)
  • 6개의 이퀄라이저 사전 설정(Normal, Pop, Rock, Jazz, Classic, Bass)
  • 여러 반복 및 셔플 모드
  • 볼륨, 트랙 번호 및 재생 상태에 대한 상태 쿼리 기능
  • 외부 디코더 또는 앰프 IC 필요 없음
  • 간단한 시리얼 명령으로 초보자 친화적

핀아웃

Mini Mp3 Player 모듈은 전원, 통신, 오디오 출력 및 제어를 위한 11개의 핀을 가지고 있습니다.

  • VCC: 전원(3.2V–5.0V)
  • GND: 접지 연결
  • RX: UART 수신(ESP32 TX 핀에 연결)
  • TX: UART 전송(ESP32 RX 핀에 연결)
  • SPK_1: 스피커 양극(내장 3W 앰프)
  • SPK_2: 스피커 음극
  • DAC_R: 오른쪽 채널 라인 레벨 오디오 출력
  • DAC_L: 왼쪽 채널 라인 레벨 오디오 출력
  • BUSY: 상태 핀(재생 중 LOW, 유휴 시 HIGH)
  • IO_1: 버튼 입력(짧은 누름 = 이전, 길게 누름 = 볼륨 내림)
  • IO_2: 버튼 입력(짧은 누름 = 다음, 길게 누름 = 볼륨 올림)
mini mp3 player 핀아웃

배선도

하드웨어 Serial1을 사용하여 Mini Mp3 Player를 ESP32 C3 Super Mini에 연결하는 방법은 다음과 같습니다.

  • 중요: ESP32 C3 Super Mini는 3.3V 로직을 사용하며 모듈과 완벽하게 일치합니다. TX/RX 라인에는 저항이 필요하지 않습니다
  • Serial1 핀: TX1은 GPIO5(D5), RX1은 GPIO4(D4)
  • 전원 옵션: 스피커 요구사항에 따라 3.3V 핀 또는 5V(VBUS) 사용
Mini Mp3 Player ESP32 C3 Super Mini 참고
VCC 3.3V 모듈은 필요에 따라 VBUS에서 5V도 허용
GND GND 공통 접지
RX TX1 (D5) 직접 연결 - 저항 필요 없음
TX RX1 (D4) 직접 연결 - 3.3V 로직 호환
SPK_1 스피커 + 증폭 출력
SPK_2 스피커 − 증폭 출력
ESP32 C3 Super Mini mini mp3 player 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

SD 카드 설정

Mini Mp3 Player는 마이크로 SD 카드에 올바르게 형식화되고 이름이 지정된 파일이 필요합니다.

형식화 요구사항:

  • 파일 시스템: FAT16 또는 FAT32
  • 카드 크기: 최대 32GB 권장

기본 파일 이름(루트 디렉토리):

/001.mp3 /002.mp3 /003.mp3

폴더 기반 이름(구성된 재생):

/01/001.mp3 /01/002.mp3 /02/001.mp3

중요한 명명 규칙:

  • 트랙 번호는 0이 아닌 1부터 시작
  • 루트 파일: 3자리 0으로 채워진 이름(001–255)
  • 폴더 이름: 2자리 0으로 채워진(01–99)
  • 폴더의 파일: 3자리 0으로 채워진(001–255)
  • 복사 순서가 중요: 모듈은 알파벳 이름이 아닌 파일이 복사된 순서에서 재생 순서를 결정
  • 모범 사례: 먼저 카드를 포맷한 다음 원하는 재생 순서대로 파일을 하나씩 복사

라이브러리 설치

DIYables_MiniMp3 라이브러리는 ESP32 C3 Super Mini 프로젝트에서 mp3 모듈 제어를 단순화합니다.

  • USB-C 케이블을 통해 ESP32 C3 Super Mini를 컴퓨터에 연결
  • Arduino IDE 열기
  • ESP32 C3 Super Mini를 보드로 선택
  • 올바른 COM 포트 선택
  • 왼쪽 사이드바의 Libraries 아이콘 클릭
  • "DIYables_MiniMp3"에 대해 검색
  • DIYables에서 라이브러리 찾기
  • Install 클릭
ESP32 C3 Super Mini mini mp3 player 라이브러리

라이브러리의 이점:

  • 외부 종속성 없음
  • 모든 재생 기능에 대한 간단한 명령 함수
  • ESP32 하드웨어 시리얼과 완벽하게 작동

ESP32 C3 Super Mini 코드 — 기본 설정

이 코드는 하드웨어 Serial1을 사용하여 Mini Mp3 Player를 ESP32 C3 Super Mini로 제어하기 위한 기본 템플릿을 보여줍니다.

이 코드가 하는 역할:

  • 115200 보드에서 mp3 모듈 통신을 위해 Serial1 초기화
  • Mp3 플레이어 객체 설정
  • 모듈 부팅 완료 대기
  • 초기 볼륨을 수준 25로 설정
#include <DIYables_MiniMp3.h> DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); Serial1.begin(115200); // mp3 모듈을 위한 하드웨어 시리얼 mp3.begin(Serial1); delay(1000); // 모듈이 부팅될 때까지 대기 mp3.setVolume(25); } void loop() { // 여기에 코드 작성 }

하드웨어 시리얼을 사용하는 이유는?

  • ESP32 C3 Super Mini는 전용 UART 하드웨어를 가지고 있음
  • 소프트웨어 시리얼보다 더 안정적
  • 115200 보드에서 타이밍 문제 없음
  • 디버깅을 위해 USB 시리얼을 비워둠

ESP32 C3 Super Mini 코드 — 단일 트랙 재생

/* * DIYables Mini Mp3 Player - Play One Track * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays track 001 once, then stops. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); mp3Serial.begin(115200); mp3.begin(mp3Serial); delay(1000); // Wait for the module to initialize mp3.setVolume(25); // Set volume (0 to 30) Serial.println("Playing track 1..."); mp3.play(1); // Play track 001.mp3 } void loop() { // Nothing to do here }

빠른 단계

  • ESP32 C3 Mini를 처음 사용하시나요? 개발 환경을 설정하려면 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하세요.
  • SD 카드 준비: FAT32로 포맷하고 001.mp3, 002.mp3 등의 이름으로 mp3 파일 복사
  • SD 카드 삽입: 마이크로 SD 카드를 모듈의 슬롯에 삽입
  • 배선 연결: 위의 배선도 따르기(VCC, GND, TX1, RX1, 스피커)
  • 스피커 연결: 스피커를 SPK_1 및 SPK_2 터미널에 연결
  • Arduino IDE 열기: 컴퓨터에서 IDE 실행
  • 보드 선택: 보드 메뉴에서 ESP32 C3 Super Mini 선택
  • 포트 선택: 보드의 올바른 COM 포트 선택
  • 코드 업로드: 위의 코드를 복사하여 ESP32 C3 Super Mini에 업로드
  • 청취: 트랙 001.mp3이 스피커를 통해 재생되어야 함
  • 전문가 팁: 소리가 들리지 않으면 SD 카드 형식 및 파일 이름을 확인하세요. 모듈은 명명 규칙에 매우 민감합니다

재생 명령

메서드 목적 예제
play(trackNum) 특정 트랙 시작 mp3.play(1)
playNext() 다음 트랙으로 이동 mp3.playNext()
playPrevious() 이전 트랙으로 이동 mp3.playPrevious()
pause() 활성 트랙 일시 중지 mp3.pause()
resume() 트랙 일시 중지 해제 mp3.resume()
stop() 재생 중지 mp3.stop()

ESP32 C3 Super Mini 코드 — 여러 트랙 재생

/* * DIYables Mini Mp3 Player - Play Multiple Tracks * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays tracks one after another with a delay between them. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, 003.mp3 */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; int currentTrack = 1; int totalTracks = 3; // Change this to match your SD card unsigned long lastTrackTime = 0; unsigned long trackDuration = 5000; // Wait 5 seconds between tracks (adjust as needed) void setup() { Serial.begin(115200); mp3Serial.begin(115200); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); Serial.println("Playing track 1..."); mp3.play(currentTrack); lastTrackTime = millis(); } void loop() { // After trackDuration, play the next track if (millis() - lastTrackTime >= trackDuration) { currentTrack++; if (currentTrack > totalTracks) currentTrack = 1; // Loop back to first track Serial.print("Playing track "); Serial.println(currentTrack); mp3.play(currentTrack); lastTrackTime = millis(); } }

빠른 단계

  • SD 카드 준비: 최소 3개의 001.mp3, 002.mp3, 003.mp3으로 이름이 지정된 mp3 파일이 있는지 확인
  • 와이어 모듈: 이전 예제와 동일한 배선 사용
  • 코드 업로드: 위의 스케치를 복사하고 업로드
  • 청취: 트랙이 5초마다 자동으로 회전
  • 시리얼 보기: 115200 보드에서 Serial Monitor를 열어 트랙 변경 확인
  • 전문가 팁: delay(5000) 값을 조정하여 각 트랙이 다음으로 이동하기 전에 얼마나 오래 재생되는지 변경

Serial Monitor 출력

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Playing track: 1 Playing track: 2 Playing track: 3 Playing track: 1 Playing track: 2 Playing track: 3
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini 코드 — 볼륨 제어

/* * DIYables Mini Mp3 Player - Volume Control * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Use two buttons to increase/decrease the volume. * Press button on pin 2 to volume up, pin 3 to volume down. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button UP -> Pin 2 (other leg to GND) * Button DOWN -> Pin 3 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_VOL_UP = 2; const int BUTTON_VOL_DOWN = 3; int volume = 15; // Start at half volume void setup() { Serial.begin(115200); mp3Serial.begin(115200); pinMode(BUTTON_VOL_UP, INPUT_PULLUP); pinMode(BUTTON_VOL_DOWN, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(volume); mp3.loopTrack(1); // Play track 1 on repeat Serial.print("Volume: "); Serial.println(volume); } void loop() { // Volume Up button (pressed = LOW because of INPUT_PULLUP) if (digitalRead(BUTTON_VOL_UP) == LOW) { if (volume < 30) { volume++; mp3.setVolume(volume); Serial.print("Volume: "); Serial.println(volume); } delay(200); // Simple debounce } // Volume Down button if (digitalRead(BUTTON_VOL_DOWN) == LOW) { if (volume > 0) { volume--; mp3.setVolume(volume); Serial.print("Volume: "); Serial.println(volume); } delay(200); // Simple debounce } }

빠른 단계

  • 버튼 추가: 두 개의 버튼을 GPIO6 및 GPIO7(+GND)에 연결
  • 코드 업로드: 위의 스케치를 Arduino IDE에 복사하고 업로드
  • 버튼 테스트: 음악 재생 중 버튼을 눌러 볼륨 조정
  • 시리얼 보기: Serial Monitor는 현재 볼륨 수준을 표시
  • 전문가 팁: 볼륨 범위는 0–30이며, 대부분의 스피커에 15가 좋은 시작점

볼륨 명령

메서드 목적 예제
setVolume(v) 특정 볼륨 수준으로 이동 mp3.setVolume(20)
volumeUp() 1단계 증가 mp3.volumeUp()
volumeDown() 1단계 감소 mp3.volumeDown()
getVolume() 현재 수준 쿼리 mp3.getVolume()

Serial Monitor 출력

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Volume: 25 Volume: 26 Volume: 25 Volume: 24 Volume: 23
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini 코드 — 다음/이전 버튼

/* * DIYables Mini Mp3 Player - Next/Previous with Buttons * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Use two buttons to play next/previous tracks. * Displays the current track number on the Serial Monitor. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button NEXT -> Pin 2 (other leg to GND) * Button PREV -> Pin 3 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_NEXT = 2; const int BUTTON_PREV = 3; void setup() { Serial.begin(115200); mp3Serial.begin(115200); pinMode(BUTTON_NEXT, INPUT_PULLUP); pinMode(BUTTON_PREV, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); mp3.play(1); // Start with track 1 Serial.println("Press NEXT or PREV button to change track"); } void loop() { if (digitalRead(BUTTON_NEXT) == LOW) { Serial.println("Next track"); mp3.playNext(); delay(300); // Simple debounce } if (digitalRead(BUTTON_PREV) == LOW) { Serial.println("Previous track"); mp3.playPrevious(); delay(300); // Simple debounce } }

빠른 단계

  • 버튼 와이어: NEXT 버튼을 GPIO6에, PREV 버튼을 GPIO7에 연결
  • 접지 연결: 다른 버튼 터미널을 GND에 와이어
  • 스케치 업로드: 위의 코드를 ESP32 C3 Super Mini에 로드
  • 탐색 테스트: 버튼을 눌러 트랙을 앞뒤로 건너뛰기
  • 모니터 출력: Serial Monitor는 현재 트랙 번호를 표시
  • 전문가 팁: 소음이 많은 환경에서 더 안정적인 버튼 작동을 위해 풀업 저항(10kΩ) 사용

Serial Monitor 출력

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Current track: 1 Current track: 2 Current track: 3 Current track: 2 Current track: 1
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini 코드 — 일시 중지/재개 토글

/* * DIYables Mini Mp3 Player - Pause and Resume * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Demonstrates pausing and resuming playback using a single button. * Press the button to toggle between pause and resume. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * Button -> Pin 2 (other leg to GND) * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; const int BUTTON_PIN = 2; bool paused = false; void setup() { Serial.begin(115200); mp3Serial.begin(115200); pinMode(BUTTON_PIN, INPUT_PULLUP); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); mp3.play(1); Serial.println("Playing. Press button to pause/resume."); } void loop() { if (digitalRead(BUTTON_PIN) == LOW) { if (paused) { mp3.resume(); Serial.println("Resumed"); } else { mp3.pause(); Serial.println("Paused"); } paused = !paused; delay(300); // Simple debounce } }

빠른 단계

  • 버튼 와이어: 일시 중지/재개 버튼을 GPIO6 및 GND에 연결
  • 코드 업로드: 스케치를 보드에 로드
  • 재생 시작: 음악이 자동으로 시작
  • 일시 중지 토글: 버튼을 눌러 일시 중지하고 다시 눌러 재개
  • 상태 확인: Serial Monitor는 재생 상태 표시
  • 전문가 팁: 모듈의 BUSY 핀은 LED를 사용한 시각적 피드백으로 재생/일시 중지 상태를 나타낼 수도 있음

Serial Monitor 출력

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Playing track 1 Music paused Music resumed Music paused Music resumed
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini 코드 — 트랙 루핑

/* * DIYables Mini Mp3 Player - Loop Track * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Loops (repeats) a track continuously with EQ setting. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card file structure: * /001.mp3 * /002.mp3 * ... */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); mp3Serial.begin(115200); mp3.begin(mp3Serial); delay(1000); // Wait for the module to initialize mp3.setVolume(25); // Volume: 0 to 30 mp3.setEQ(DIYables_MiniMp3::EQ_NORMAL); Serial.println("Playing track 1 on loop..."); mp3.loopTrack(1); } void loop() { // Your code here }

빠른 단계

  • 스케치 업로드: 위의 코드 로드
  • 청취: 트랙 1이 계속 반복
  • 전문가 팁: 지속적인 재생이 필요한 배경 음악 프로젝트에 loopAll() 사용

반복 및 셔플 명령

메서드 목적 예제
loopTrack(t) 한 트랙을 계속 재생 mp3.loopTrack(1)
loopFolder(f) 폴더의 모든 트랙 재생 mp3.loopFolder(1)
loopAll() 카드의 모든 항목 재생 mp3.loopAll()
stopLoop() 현재 반복 모드 종료 mp3.stopLoop()
shuffle() 재생 순서 무작위 mp3.shuffle()

ESP32 C3 Super Mini 코드 — 폴더에서 재생

/* * DIYables Mini Mp3 Player - Play from Folder * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Plays tracks from specific folders on the SD card. * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card file structure: * /01/001.mp3 <- playFolder(1, 1) * /01/002.mp3 <- playFolder(1, 2) * /02/001.mp3 <- playFolder(2, 1) * /02/002.mp3 <- playFolder(2, 2) * * IMPORTANT: * - Numbering starts from 1, NOT 0 * - Folder names must be 2-digit zero-padded (01-99) * - Track names must be 3-digit zero-padded (001-255) * - Format SD card as FAT32, then copy files one by one in order * - Track order is determined by the order files were copied, * NOT by filename. So copy them in the correct sequence. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); mp3Serial.begin(115200); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); // Play track 1 from folder 01 Serial.println("Playing folder 01, track 001..."); mp3.playFolder(1, 1); delay(5000); // Play track 2 from folder 01 Serial.println("Playing folder 01, track 002..."); mp3.playFolder(1, 2); delay(5000); // Play track 1 from folder 02 Serial.println("Playing folder 02, track 001..."); mp3.playFolder(2, 1); } void loop() { // Nothing to do here }

빠른 단계

  • 폴더 생성: SD 카드에서 01, 02 등의 이름이 지정된 폴더 생성
  • 파일 추가: 각 폴더에 mp3 파일 배치(001.mp3, 002.mp3 등)
  • 코드 업로드: 스케치를 ESP32 C3 Super Mini에 로드
  • 재생 테스트: 코드는 폴더 01의 첫 번째 트랙을 재생
  • 전문가 팁: 음 효과, 음악 장르 또는 언어를 별도 폴더로 구성하여 쉬운 프로젝트 구성

폴더 메서드

메서드 목적 예제
playFolder(f, t) 폴더 f에서 트랙 t 선택 mp3.playFolder(1, 1)
playLargeFolder(f, t) 대용량 폴더 모드(최대 3000개 트랙) mp3.playLargeFolder(1, 1500)
playFromMP3Folder(t) 특수 /mp3 폴더 액세스 mp3.playFromMP3Folder(1)

ESP32 C3 Super Mini 코드 — Serial Monitor 제어

/* * DIYables Mini Mp3 Player - Serial Command Control * * Product: DIYables Mini Mp3 Player Module * https://diyables.io/products/mini-mp3-player-module * * Control the Mp3 player by typing commands in the Serial Monitor. * Great for testing all functions without extra hardware. * * Commands (type in Serial Monitor, then press Enter): * 1-9 Play track 1 to 9 * + Volume up * - Volume down * p Pause * r Resume * s Stop * n Next track * b Previous track (back) * ? Show current status * * Wiring Table: * Mini Mp3 RX -> Arduino Pin 11 * Mini Mp3 TX -> Arduino Pin 10 * Mini Mp3 VCC -> Vbus * Mini Mp3 GND -> GND * Speaker connected to SPK_1 and SPK_2 pins * * SD Card: Put mp3 files in root, named 001.mp3, 002.mp3, etc. */ #include <DIYables_MiniMp3.h> #include <SoftwareSerial.h> SoftwareSerial mp3Serial (10, 11); // RX, TX DIYables_MiniMp3 mp3; void setup() { Serial.begin(115200); mp3Serial.begin(115200); mp3.begin(mp3Serial); delay(1000); mp3.setVolume(20); Serial.println("=== DIYables Mini Mp3 Player ==="); Serial.println("Commands:"); Serial.println(" 1-9 Play track number"); Serial.println(" + Volume up"); Serial.println(" - Volume down"); Serial.println(" p Pause"); Serial.println(" r Resume"); Serial.println(" s Stop"); Serial.println(" n Next track"); Serial.println(" b Previous track"); Serial.println(" ? Show status"); Serial.println("================================"); } void loop() { if (Serial.available()) { char cmd = Serial.read(); switch (cmd) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': Serial.print("Playing track "); Serial.println(cmd - '0'); mp3.play(cmd - '0'); break; case '+': Serial.println("Volume up"); mp3.volumeUp(); break; case '-': Serial.println("Volume down"); mp3.volumeDown(); break; case 'p': Serial.println("Paused"); mp3.pause(); break; case 'r': Serial.println("Resumed"); mp3.resume(); break; case 's': Serial.println("Stopped"); mp3.stop(); break; case 'n': Serial.println("Next track"); mp3.playNext(); break; case 'b': Serial.println("Previous track"); mp3.playPrevious(); break; case '?': { Serial.println("--- Status ---"); int16_t vol = mp3.getVolume(); Serial.print("Volume: "); Serial.println(vol); int16_t track = mp3.getCurrentTrack(); Serial.print("Current track: "); Serial.println(track); bool playing = mp3.isPlaying(); Serial.print("Playing: "); Serial.println(playing ? "Yes" : "No"); int16_t total = mp3.getTrackCount(); Serial.print("Total tracks: "); Serial.println(total); Serial.println("--------------"); break; } default: break; } } }

빠른 단계

  • 코드 업로드: 스케치를 ESP32 C3 Super Mini에 로드
  • Serial Monitor 열기: 보드 레이트를 115200으로 설정
  • 명령 보내기: 아래 표의 명령 입력
  • 재생 제어: 키보드를 사용하여 모든 mp3 플레이어 기능 테스트
  • 전문가 팁: 이것은 더 큰 프로젝트에 구축하기 전에 mp3 모듈을 테스트하는 데 완벽합니다

시리얼 명령

입력 결과
1–9 해당 트랙 재생
+ / − 볼륨 올림/내림
p 일시 중지
r 재개
s 중지
n 다음 트랙
b 이전 트랙
? 상태 표시

Serial Monitor 출력

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Mp3 Player Control Menu: 1-9: Play track, +/-: Volume, p: Pause, r: Resume, s: Stop, n: Next, b: Previous, ?: Status Command: 1 Playing track 1 Command: + Volume increased Command: n Next track
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

이퀄라이저 사전 설정

Mini Mp3 Player는 다양한 음악 장르에 대한 오디오 품질을 향상시키기 위해 6개의 내장 이퀄라이저 모드를 제공합니다.

사용 가능한 EQ 사전 설정:

상수 ID
DIYables_MiniMp3::EQ_NORMAL 0 중립
DIYables_MiniMp3::EQ_POP 1
DIYables_MiniMp3::EQ_ROCK 2
DIYables_MiniMp3::EQ_JAZZ 3 재즈
DIYables_MiniMp3::EQ_CLASSIC 4 클래식
DIYables_MiniMp3::EQ_BASS 5 베이스 부스트

사용 예제:

mp3.setEQ(DIYables_MiniMp3::EQ_POP);

팁:

  • EQ_NORMAL은 음성 녹음 및 팟캐스트에 잘 작동합니다
  • EQ_BASS는 낮은 주파수 응답이 제한된 작은 스피커를 강화합니다
  • 다양한 사전 설정을 시도하여 스피커 특성에 맞춥니다

상태 쿼리 함수

라이브러리는 Mini Mp3 Player 모듈의 현재 상태를 실시간으로 읽을 수 있는 함수를 제공합니다.

중요 사항:

  • 각 쿼리는 최대 100밀리초 동안 실행을 차단합니다
  • 타임아웃 또는 통신 오류 시 함수는 −1을 반환합니다
  • 시간 중요 응용 프로그램에서 이를 드물게 사용하세요

사용 가능한 상태 함수:

메서드 반환 정보
isPlaying() bool 트랙이 활성화되어 있는지 여부
getVolume() int16_t 볼륨(0–30)
getEQ() int16_t EQ 사전 설정(0–5)
getTrackCount() int16_t 카드의 총 트랙
getCurrentTrack() int16_t 현재 재생 중인 트랙
getFolderCount() int16_t 폴더 수
getTrackCountInFolder(f) int16_t 폴더 f의 트랙

예제 코드:

if (mp3.isPlaying()) { int currentTrack = mp3.getCurrentTrack(); int currentVolume = mp3.getVolume(); Serial.print("Playing track "); Serial.print(currentTrack); Serial.print(" at volume "); Serial.println(currentVolume); }

응용 프로그램 및 프로젝트 아이디어

ESP32 C3 Super Mini를 Mini Mp3 Player 모듈과 함께 프로젝트에 사용하는 창의적인 방법은 다음과 같습니다.

  • WiFi 제어 홈 오디오 플레이어를 웹 인터페이스와 함께 구축
  • 예약된 공지사항이 있는 음성 알람시계 생성
  • 자동 오디오 설명이 있는 박물관 전시 안내서 설계
  • 센서로 트리거되는 음향 효과가 있는 대화형 장난감 만들기
  • 폴더로 구성된 수업이 있는 언어 학습 기기 구축
  • 사용자 정의 가능한 mp3 차임이 있는 초인종 생성
  • 배경 음악 및 음성 프롬프트가 있는 명상 타이머 설계
  • 반복적인 광고 오디오가 있는 소매 제품 데모 구축

비디오 튜토리얼

아래 비디오를 시청하여 이 프로젝트의 시각적 안내를 받으세요.

직접 도전하기

이러한 점진적으로 어려운 ESP32 C3 Super Mini mp3 플레이어 수정으로 기술을 테스트하세요.

  • 쉬움: BUSY 핀을 사용하여 음악이 재생 중일 때 켜지는 LED 추가
  • 쉬움: 3버튼 주크박스 생성(트랙 1, 2 또는 3 재생)
  • 중간: WiFi를 통해 재생을 제어하는 웹 인터페이스 구축
  • 중간: 현재 트랙 이름 및 볼륨을 표시하는 LCD 디스플레이 추가
  • 고급: 마이크로폰 모듈을 사용하여 음성 활성화 mp3 플레이어 생성
  • 고급: WiFi를 통해 동기화된 여러 ESP32 보드가 있는 멀티룸 오디오 시스템 구축

관련 튜토리얼