DFPlayer Mini: 저렴하고 강력한 MP3 모듈 사용법

1. 가성비 끝판왕, 소리의 재미를 더하다
DFPlayer Mini는 저렴한 가격에 MP3 디코더와 앰프 기능을 모두 갖춘 놀라운 모듈입니다. 단순히 음악을 트는 것을 넘어, 안내 음성이나 효과음을 프로젝트에 입힐 수 있어 활용도가 무궁무진합니다.
2. ESP32-C3와 심플한 하드웨어 연결
연결은 매우 직관적입니다. ESP32-C3의 여유 핀 GPIO 5(TX)핀을 모듈의 RX에, GPIO 21(RX)핀을 모듈의 TX에 연결하면 됩니다. 이때 노이즈를 방지하고 모듈을 보호하기 위해 RX 라인에 1kΩ 저항을 하나 달아주는 것이 꿀팁입니다. 전원은 5V를 연결하고, 스피커 출력 단자(SPK1, SPK2)에 소형 스피커를 바로 연결하기만 하면 물리적인 준비는 끝납니다.
3. SD카드 설정과 파일 규칙
이 모듈을 사용할 때 가장 주의할 점은 SD카드의 파일 정리 방식입니다. SD카드는 반드시 FAT32 형식으로 포맷해야 하며, 파일 관리 방식은 크게 두 가지가 있습니다. 루트 폴더에 ‘0001.mp3‘,’0002.mp3‘… 로 음악파일을 넣거나, 더 체계적인 관리를 위해 ’01’, ’02’ 같은 이름의 폴더를 만들고 그 안에 ‘001.mp3’, ‘002.mp3’ 형식으로 파일을 넣는 방식입니다. 이렇게 폴더 형식(01/001.mp3)으로 구성하면 나중에 마이크로파이썬 코드에서 특정 폴더의 특정 곡을 지정해 재생하기 훨씬 수월해집니다.
4. 마이크로파이썬을 이용한 스마트 제어
복잡한 라이브러리 설치 없이 UART 통신을 통해 8바이트의 간단한 명령어로 제어할 수 있습니다. 볼륨 조절, 특정 트랙 재생, 일시 정지 등의 기능을 uart.write() 함수 한 줄로 실행할 수 있어 코드가 매우 간결해집니다.

5. mplayer.py : play(), stop(), set_volume()
from machine import UART, Pin
import time
# UART 설정 (TX: GPIO 5, RX: GPIO 21)
uart = UART(1, baudrate=9600, tx=5, rx=21)
def send_command(command, p1, p2):
"""표준 8바이트 명령어 전송"""
buf = bytearray([0x7E, 0xFF, 0x06, command, 0x00, p1, p2, 0xEF])
uart.write(buf)
time.sleep(0.1)
def play(folder, track):
"""특정 폴더의 트랙 재생 (명령어 0x0F)"""
print(f"{folder}번 폴더의 {track}번 곡 재생")
send_command(0x0F, folder, track)
def stop():
"""재생 중지 함수 (명령어 0x0E)"""
print("음악을 중지합니다.")
send_command(0x0E, 0x00, 0x00)
def set_volume(volume):
""" 볼륨 조절 (0~30) """
send_command(0x06, 0, volume)
def test():
try:
# 1번 폴더의 1번 곡 재생
play(1, 1)
set_volume(15)
time.sleep(5) # 5초간 재생
# 음악 중지!
stop()
except KeyboardInterrupt:
stop()
if __name__ == "__main__" :
test()



답글 남기기