본문 바로가기

아두이노우노 R4

DF Player Mini를 사용한 Arduino와 함께 오디오 플레이어 프로젝트

반응형

 

안녕하세요, 이 튜토리얼에 오신 것을 환영합니다. 오늘은 아두이노와 DF플레이어 미니 MP3 모듈을 사용하여 mp3 플레이어를 제작해 보겠습니다.DF플레이어 미니는 스피커나 이어폰 잭에 직접 연결할 수 있는 간단한 오디오 출력을 갖춘 작고 저렴한 mp3 모듈입니다.

 

이 모듈은 배터리, 스피커, 푸시 버튼이 부착된 독립형 모듈로 사용하거나 RX/TX(시리얼) 통신이 가능한 아두이노와 같은 마이크로 컨트롤러 또는 개발 보드와 함께 사용할 수 있으므로 간단한 시리얼 명령을 통해 음악을 재생하고 다음 및 이전 곡 재생, 셔플, 현재 재생 중인 곡 일시 정지 등과 같은 다른 기능을 수행할 수 있습니다. 

 

 

 

DF Player Mini 

 

 

DF 플레이어 미니의 일부 기능은 다음과 같습니다.8KHz, 11.025KHz, 12KHz, 16KHz, 22의 샘플링 속도 지원.05KHz, 최대 48KHz24비트 DAC 출력, 다이나믹 레인지 지원 90dB, SNR 지원 85dBFAT16, FAT32 파일 시스템 지원, 최대 지원 32GB TF 카드다양한 제어 모드, 직렬 모드, AD 키 제어 모드방송 언어 스팟 기능, 재생 중인 배경 음악 일시 중지 가능3W 앰프 내장 오디오 데이터는 폴더별로 정렬되며 최대 100개 폴더 지원, 각 폴더에 1000곡 가까이 할당 가능30단계 볼륨 조절 가능, 10단계 EQ 조절 가능입니다. 

 

 

Schmatics 

 

 

위에서 볼 수 있듯이 아두이노와 DF플레이어 미니의 연결은 VCC와 GND를 제외한 두 개의 핀만 연결하면 되기 때문에 매우 간단합니다. 모듈의 Rx 핀과 아두이노 사이에 추가된 1k 저항은 노이즈를 줄이기 위해 추가된 것이지만, 모듈 설정에 Rx 라인에 노이즈가 동반되지 않는 경우에는 필요하지 않습니다. 연결을 명확하게 하기 위해 아래에 설명되어 있습니다. 

 

코드 

 

#include "SoftwareSerial.h"
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW
int buttonNext = 2;
int buttonPause = 3;
int buttonPrevious = 4;
boolean isPlaying = false;
void setup () {
pinMode(buttonPause, INPUT);
digitalWrite(buttonPause,HIGH);
pinMode(buttonNext, INPUT);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT);
digitalWrite(buttonPrevious,HIGH);
mySerial.begin (9600);
delay(1000);
playFirst();
isPlaying = true;
}
void loop () {
if (digitalRead(buttonPause) == ACTIVATED)
{
if(isPlaying)
{
pause();
isPlaying = false;
}else
{
isPlaying = true;
play();
}
}
if (digitalRead(buttonNext) == ACTIVATED)
{
if(isPlaying)
{
playNext();
}
}
if (digitalRead(buttonPrevious) == ACTIVATED)
{
if(isPlaying)
{
playPrevious();
}
}
}
void playFirst()
{
execute_CMD(0x3F, 0, 0);
delay(500);
setVolume(20);
delay(500);
execute_CMD(0x11,0,1);
delay(500);
}
void pause()
{
execute_CMD(0x0E,0,0);
delay(500);
}
void play()
{
execute_CMD(0x0D,0,1);
delay(500);
}
void playNext()
{
execute_CMD(0x01,0,1);
delay(500);
}
void playPrevious()
{
execute_CMD(0x02,0,1);
delay(500);
}
void setVolume(int volume)
{
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
delay(2000);
}
void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
mySerial.write( Command_line[k]);
}
}

 

 

노래가 담긴 SD 카드를 불러와 DF플레이어 미니에 삽입한 다음 코드를 아두이노에 업로드하고 스피커의 전선을 DF플레이어 미니의 스피커 핀에 연결합니다. 연결된 스피커에서 노래가 스트리밍되기 시작하는 소리가 들릴 것입니다. 

 

 

반응형

캐어랩 고객 지원

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

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

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

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

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

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

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

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

카카오 채널 추가하기

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

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

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

캐어랩