아두이노 나노 미니 Mp3 플레이어
이 가이드는 DIYables 미니 Mp3 플레이어 모듈을 Arduino Nano와 함께 작동시키는 데 필요한 모든 것을 안내합니다. 마지막에는 다음을 알 수 있습니다:
- 미니 Mp3 플레이어를 브레드보드에서 Arduino Nano에 배선하기.
- Mp3 트랙 재생, 일시 정지, 재개, 중지하기.
- 물리적 버튼이나 시리얼 명령으로 볼륨 제어하기.
- 트랙을 앞뒤로 건너뛰기.
- 개별 트랙 반복, 전체 반복, 셔플 재생하기.
- 번호가 매겨진 폴더에서 트랙 구성 및 재생하기.
- 현재 볼륨, 트랙 번호, 재생 상태 읽기.

필요한 하드웨어
| 1 | × | 아두이노 나노 | 쿠팡 | 아마존 | |
| 1 | × | USB A to Mini-B USB 케이블 | 쿠팡 | 아마존 | |
| 1 | × | DIYables Mini Mp3 Player module | 아마존 | |
| 1 | × | 마이크로 SD 카드 | 아마존 | |
| 1 | × | Speaker | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 브레이크아웃 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 전원 분배기 | 쿠팡 | 아마존 |
미니 Mp3 플레이어 모듈 개요
DIYables 미니 Mp3 플레이어 모듈은 YX5200-24SS 디코더 칩을 소형 보드에 탑재했습니다. mp3 파일이 담긴 마이크로 SD 카드를 삽입하고 스피커를 연결하면 Arduino Nano가 간단한 시리얼 연결로 제어하는 독립형 오디오 플레이어가 됩니다.
모듈의 기능:
- 재생 제어: 재생, 일시 정지, 재개, 중지, 다음, 이전
- 볼륨: 0(무음)에서 30(최대)까지 조절 가능
- EQ 프리셋: Normal, Pop, Rock, Jazz, Classic, Bass
- 반복 모드: 한 트랙 반복, 폴더 반복, 전체 반복, 셔플
- 폴더: 번호가 매겨진 폴더에 트랙 정리하여 쉽게 선택
- 광고: 현재 트랙을 중단했다가 중단된 지점에서 계속
- 상태 조회: 재생 중인 트랙, 현재 볼륨 등 모듈에 질의
모든 통신은 9600 보드레이트 UART로 이루어집니다 — TX와 RX 두 개의 선 및 전원만 필요합니다.
핀 레퍼런스
| 핀 | 기능 | ||
|---|---|---|---|
| VCC | 전원 입력(3.2V ~ 5.0V) | ||
| GND | 그라운드 연결 | ||
| RX | Nano에서 시리얼 명령 수신(1K 저항을 통해) | ||
| TX | Nano로 시리얼 데이터 전송 | ||
| SPK_1 | 스피커 양극 단자(내장 3W 앰프) | ||
| SPK_2 | 스피커 음극 단자 | ||
| DAC_R | 우측 오디오 라인 출력(외부 앰프용) | ||
| DAC_L | 좌측 오디오 라인 출력(외부 앰프용) | ||
| BUSY | 재생 중 LOW, 대기 중 HIGH(선택 사항) | ||
| IO_1 | 짧게 누르기 | 이전 트랙, 길게 누르기 | 볼륨 감소 |
| IO_2 | 짧게 누르기 | 다음 트랙, 길게 누르기 | 볼륨 증가 |

배선도
미니 Mp3 플레이어 모듈을 Arduino Nano에 다음과 같이 연결합니다:
| 미니 Mp3 핀 | Arduino Nano 핀 | 참고 |
|---|---|---|
| VCC | 5V | |
| GND | GND | |
| RX | 핀 11 | 반드시 1K 저항을 직렬로 사용해야 합니다(모듈은 3.3V 로직) |
| TX | 핀 10 | |
| SPK_1 | 스피커+ | 직접 스피커 연결(최대 3W) |
| SPK_2 | 스피커- | 직접 스피커 연결(최대 3W) |
중요: RX 핀의 1K 저항은 5V Arduino Nano를 사용할 때 필수입니다. 모듈의 3.3V 로직 입력을 보호합니다. 없으면 모듈이 작동하지 않거나 손상될 수 있습니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Arduino Nano와 기타 부품에 전원을 공급하는 가장 효과적인 방법은 다음 링크를 참조하세요: 아두이노 나노 전원 공급 방법.
SD 카드 준비
사용 전에 마이크로 SD 카드를 FAT16 또는 FAT32로 포맷합니다. 앞자리 0이 붙은 번호로 mp3 파일을 SD 카드 루트에 복사합니다:
중요: 트랙 번호는 1부터 시작합니다(0이 아닌). 모듈은 파일명이 아닌 SD 카드에 파일이 복사된 순서를 기준으로 트랙 번호를 지정합니다. 먼저 SD 카드를 포맷한 후 순서대로 파일을 하나씩 복사합니다.
폴더 재생의 경우 번호가 매겨진 폴더에 번호가 매겨진 파일을 만듭니다:
폴더 이름은 2자리 앞자리 0이 붙어야 합니다(01-99). 폴더 내 트랙 이름은 3자리 앞자리 0이 붙어야 합니다(001-255).
라이브러리 설치
- USB 케이블로 Arduino Nano를 컴퓨터에 연결합니다.
- Arduino IDE를 열고 올바른 보드와 포트를 선택합니다.
- Arduino IDE 왼쪽 바의 Libraries 아이콘으로 이동합니다.
- "DIYables_MiniMp3"를 검색하고 DIYables의 DIYables_MiniMp3 라이브러리를 찾습니다.
- Install 버튼을 클릭하여 최신 버전의 라이브러리를 설치합니다.

참고: 이 라이브러리는 외부 의존성 없이 자급자족합니다.
기본 구조
미니 Mp3 플레이어를 사용하는 모든 스케치는 다음 기본 구조를 따릅니다:
mp3.begin(mp3Serial)은 모듈과의 통신을 초기화합니다. delay(1000)은 모듈이 부팅될 시간을 줍니다. 기본 볼륨이 0일 수 있으므로 재생 전에 볼륨을 설정해야 합니다.
Arduino Nano 코드 - 트랙 재생
빠른 단계
- Mp3 파일(001.mp3, 002.mp3 등)로 SD 카드를 준비합니다.
- SD 카드를 미니 Mp3 플레이어 모듈에 삽입합니다.
- 배선도에 표시된 대로 모듈을 Arduino Nano에 연결합니다.
- USB 케이블로 Arduino Nano를 컴퓨터에 연결합니다.
- Arduino IDE를 열고 올바른 보드와 포트를 선택합니다.
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
스피커를 통해 트랙 001.mp3가 재생되는 소리가 들립니다.
재생 API 요약
| 메서드 | 설명 | 예시 |
|---|---|---|
| play(trackNum) | 번호로 트랙 재생 | mp3.play(1) |
| playNext() | 다음 트랙 재생 | mp3.playNext() |
| playPrevious() | 이전 트랙 재생 | mp3.playPrevious() |
| pause() | 재생 일시 정지 | mp3.pause() |
| resume() | 재생 재개 | mp3.resume() |
| stop() | 재생 중지 | mp3.stop() |
Arduino Nano 코드 - 여러 트랙 재생
빠른 단계
- SD 카드에 mp3 트랙이 최소 3개(001.mp3, 002.mp3, 003.mp3) 있는지 확인합니다.
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
Arduino Nano 코드 - 볼륨 제어
빠른 단계
- 코드 주석에 표시된 대로 모듈과 두 개의 버튼을 Arduino Nano에 연결합니다.
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
볼륨 API 요약
| 메서드 | 설명 | 예시 |
|---|---|---|
| setVolume(vol) | 볼륨 설정(0-30) | mp3.setVolume(25) |
| volumeUp() | 볼륨 1 증가 | mp3.volumeUp() |
| volumeDown() | 볼륨 1 감소 | mp3.volumeDown() |
| getVolume() | 현재 볼륨 가져오기 | mp3.getVolume() |
Arduino Nano 코드 - 버튼으로 다음/이전
빠른 단계
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
- NEXT 또는 PREV 버튼을 눌러 트랙을 변경합니다.
Arduino Nano 코드 - 일시 정지 및 재개
빠른 단계
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
Arduino Nano 코드 - 트랙 반복
빠른 단계
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
반복 및 셔플 API 요약
| 메서드 | 설명 | 예시 |
|---|---|---|
| loopTrack(trackNum) | 특정 트랙 반복 | mp3.loopTrack(1) |
| loopFolder(folder) | 폴더의 모든 트랙 반복 | mp3.loopFolder(1) |
| loopAll() | 모든 트랙 반복 | mp3.loopAll() |
| stopLoop() | 반복 중지 | mp3.stopLoop() |
| shuffle() | 모든 트랙 무작위 재생 | mp3.shuffle() |
Arduino Nano 코드 - 폴더에서 재생
빠른 단계
- 번호가 매겨진 mp3 파일(001.mp3, 002.mp3)이 포함된 폴더(01, 02)로 SD 카드를 준비합니다.
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
폴더 재생 API 요약
| 메서드 | 설명 | 예시 |
|---|---|---|
| playFolder(folder, track) | 폴더에서 트랙 재생(최대 99개 폴더, 255개 트랙) | mp3.playFolder(1, 1) |
| playLargeFolder(folder, track) | 폴더에서 재생(최대 15개 폴더, 3000개 트랙) | mp3.playLargeFolder(1, 1500) |
| playFromMP3Folder(trackNum) | /mp3 폴더에서 재생 | mp3.playFromMP3Folder(1) |
Arduino Nano 코드 - 시리얼 모니터 제어
빠른 단계
- 위 코드를 복사하여 Arduino IDE 편집기에 붙여넣습니다.
- Arduino IDE의 Upload 버튼을 클릭하여 Arduino Nano에 코드를 업로드합니다.
- 시리얼 모니터를 엽니다(보드레이트 9600).
- 명령을 입력하고 Enter 키를 누릅니다:
| 명령 | 동작 |
|---|---|
| 1-9 | 트랙 1~9 재생 |
| + | 볼륨 올리기 |
| * | 볼륨 내리기 |
| p | 일시 정지 |
| r | 재개 |
| s | 중지 |
| n | 다음 트랙 |
| b | 이전 트랙 |
| ? | 현재 상태 표시 |
이퀄라이저 설정
모듈은 6가지 EQ 모드를 지원합니다:
| 상수 | 값 | 설명 |
|---|---|---|
| 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 | 베이스 부스트 |
예시:
상태 조회
| 메서드 | 반환 | 설명 |
|---|---|---|
| isPlaying() | bool | 트랙이 현재 재생 중이면 true |
| getVolume() | int16_t | 현재 볼륨(0-30) |
| getEQ() | int16_t | 현재 EQ 설정(0-5) |
| getTrackCount() | int16_t | SD 카드의 총 트랙 수 |
| getCurrentTrack() | int16_t | 현재 재생 중인 트랙 번호 |
| getFolderCount() | int16_t | SD 카드의 폴더 수 |
| getTrackCountInFolder(folder) | int16_t | 폴더 내 트랙 수 |
플랫폼 지원
이 라이브러리는 모든 Arduino 플랫폼(architectures=*)을 지원합니다. Stream 호환 시리얼 포트를 제공하는 모든 보드에서 작동합니다.