DF 플레이어를 사용하는 MP3 플레이어 – 전체 디자인 세부 정보

문제를 제거하기 위해 도구를 사용해보십시오





이 게시물에서는 arduino와 DFPlayer를 사용하여 Mp3 플레이어를 구성 할 것입니다. 제안 된 기사에는 두 개의 Mp3 플레이어 디자인이 있는데, 하나는 푸시 버튼 컨트롤이고 다른 하나는 IR 리모컨입니다. 또한 DFPlayer (Mp3 플레이어 모듈) 및 사양을 살펴볼 것입니다.

우리는 모두 음악을 좋아합니다. 체육관, 독서, 잠자기 전 또는 힘든 하루 일과를 마치고 자신을 달래는 동안 음악을 듣고 싶습니다.



수십 년 전 집에서 음악 플레이어를 만드는 것은 기계 부품으로 인한 구조적 복잡성으로 인해 전자 애호가에게는 거의 불가능했습니다.

그 당시에는 제한된 수의 노래 만 카세트에 담을 수있었습니다. 노래를 다른 카세트로 복제하는 것도 악몽이었습니다. 그러나 이제는 전자 장치의 발전 덕분에 용돈으로 Mp3 플레이어를 처음부터 만들 수 있습니다.



이제 프로젝트의 기술적 세부 사항으로 이동하겠습니다.

프로젝트의 핵심은 마이크로 SD 카드를 수용 할 수 있고 마이크로 컨트롤러를 사용하여 제어 할 수있는 작은 Mp3 플레이어 모듈 인 DFPlayer입니다.

DFPlayer의 그림 :

DFPlayer

스테레오 또는 모노로 3 와트 라우드 스피커를 구동 할 수있는 내장형 앰프가 있습니다. 저비용 컴팩트 모듈에 매우 적합한 24 비트 DAC (디지털-아날로그 변환기)가 있습니다.

DFPlayer의 하단보기 :

DFPlayer의 하단보기

MP3 및 WMV 하드웨어 디코딩을 지원합니다. 샘플링 속도를 지원합니다.
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

최대 32GB 마이크로 SD 카드를 지원할 수 있습니다. 최대 100 개의 폴더를 지원하며 각 폴더는 최대 1000 개의 노래를 할당 할 수 있습니다.

6 가지 레벨의 이퀄라이저와 30 가지 레벨의 볼륨 조절 컨트롤이 있습니다. 3.2V ~ 5V에서 작동 할 수 있습니다.

DFPlayer의 핀 구성 :

DFPlayer의 핀 구성

위 사양은 DFPlayer의 데이터 시트를 기반으로합니다.

지금 쯤이면 DFPlayer와 그 사양에 익숙 할 것입니다. 이 모듈은 전자 상거래 사이트 또는 지역 전자 시장에서 구입할 수 있습니다.

이제 회로도를 살펴 보겠습니다.

푸시 버튼 Mp3 플레이어 디자인 :

Arduino 및 DFPlayer를 사용하는 Mp3 플레이어

위의 회로는 arduino가 노래를 제어하기 위해 DFPlayer 모듈에 명령을 보내는 매우 간단합니다. 사용자는 푸시 버튼을 통해 선택 사항을 입력 할 수 있습니다.

arduino의 내장 풀업 저항이 프로그램에서 활성화되었으므로 푸시 버튼에 물리적 저항을 연결할 필요가 없습니다.

DFPlayer가 매우 좋은 품질의 사운드를 제공 할 수있는 양질의 스피커를 사용하십시오.

더 높은 볼륨 레벨에서 사운드 왜곡이 발견되면 arduino와 DFPlayer 간의 공통 접지 연결을 사용하여 외부에서 5V DC에서 DFPlayer 모듈에 전원을 공급하십시오.

스테레오 사운드 설정을 원할 경우 스피커 중 하나를 DFPlayer의 SPK1에 연결하고 다른 스피커를 SPK2에 연결하고 나머지 스피커 선을 접지하십시오.

푸시 버튼 제어를위한 프로그램 :

//---------Developed by R.Girish------//
#include
SoftwareSerial mySerial(10, 11)
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
const int btnNext = A0
const int btnPause = A1
const int btnPrevious = A2
const int volumeUP = A3
const int volumeDOWN = A4
int volume = 15
boolean Playing = false
void setup ()
{
pinMode(btnPause, INPUT)
pinMode(btnNext, INPUT)
pinMode(btnPrevious, INPUT)
pinMode(volumeUP, INPUT)
pinMode(volumeDOWN, INPUT)
digitalWrite(btnPause, HIGH)
digitalWrite(btnNext, HIGH)
digitalWrite(btnPrevious, HIGH)
digitalWrite(volumeUP, HIGH)
digitalWrite(volumeDOWN, HIGH)
mySerial.begin(9600)
delay(1000)
playFirst()
Playing = true
}
void loop ()
{
if (digitalRead(btnPause) == LOW)
{
if(Playing)
{
pause()
Playing = false
}
else
{
Playing = true
play()
}
}
if (digitalRead(btnNext) == LOW)
{
if(Playing)
{
next()
}
}
if (digitalRead(btnPrevious) == LOW)
{
if(Playing)
{
previous()
}
}
if(digitalRead(volumeUP) == LOW)
{
volumeINC()
}
if(digitalRead(volumeDOWN) == LOW)
{
volumeDEC()
}
}
void playFirst()
{
exe_cmd(0x3F, 0, 0)
delay(500)
exe_cmd(0x06, 0, volume)
delay(500)
exe_cmd(0x11,0,1)
delay(500)
}
void pause()
{
exe_cmd(0x0E,0,0)
delay(500)
}
void play()
{
exe_cmd(0x0D,0,1)
delay(500)
}
void next()
{
exe_cmd(0x01,0,1)
delay(500)
}
void previous()
{
exe_cmd(0x02,0,1)
delay(500)
}
void volumeINC()
{
volume = volume+1
if(volume==31)
{
volume=30
}
exe_cmd(0x06, 0, volume)
delay(500)
}
void volumeDEC()
{
volume = volume-1
if(volume==-1)
{
volume=0
}
exe_cmd(0x06, 0, volume)
delay(500)
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2)
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}
for (byte x=0 x<10 x++)
{
mySerial.write(Command_line[x])
}
}
//---------Developed by R.Girish------//

이제 IR 원격 기반 설계로 넘어가겠습니다.

IR 제어 Mp3 플레이어의 회로도 :


위의 디자인은 푸시 버튼을 기반으로 한 유일한 차이점은 푸시 버튼을 제거하고 TSOP 1738 IR 수신기를 포함하는 것이므로 간단합니다. IR 리모컨에서 수신 된 신호는 arduino의 A0 핀으로 공급됩니다.

이제이 Mp3 플레이어를 제어하려면 여분의 TV 또는 정크 박스에 놓일 수있는 기타 IR 기반 리모컨이 필요합니다. 재생 및 일시 중지 등과 같은 기능을 제어하기위한 버튼을 결정해야합니다.

6 가지 기능이 있습니다.

1) 재생 및 일시 중지
2) 다음 곡
3) 이전 노래
4) 볼륨 증가
5) 볼륨 감소
6) 사운드 이퀄라이저 (Normal / Pop / Rock / Jazz / Classic / Base)

리모컨에서 버튼을 선택하고 리모컨에서 전송할 버튼의 16 진수 코드를 찾아야합니다. 16 진수 코드를 찾으려면 IR 라이브러리를 다운로드하십시오.

github.com/z3t0/Arduino-IRremote

라이브러리를 arduino 소프트웨어에 추가하고 File> Examples> IRremote> IRrecvDemo로 이동하여 하드웨어 설정이 완료된 코드를 업로드하십시오.

직렬 모니터를 열고 리모컨의 버튼을 누르면 16 진수 코드가 표시됩니다. 종이에 해당 버튼을 적어 둡니다.

아래 주어진 프로그램에 16 진수 코드를 입력해야합니다. 주어진 프로그램에 16 진수 코드를 입력했으면 업로드하십시오. 리모컨으로 노래를 제어 할 준비가되었습니다.

IR 원격 기반 설계를위한 프로그램 :

//---Developed by R.Girish--//
#include
#include
SoftwareSerial mySerial(10,11)
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
//--------------------------------------------------------//
# define pause_play 0x2FD08F7
# define next_song 0x2FDD827
# define prev_song 0x2FDF807 //REPLACE THESE HEX CODE WITH YOUR REMOTE BUTTON CODE STARTS “0x”
# define vol_inc 0x2FD58A7
# define vol_dec 0x2FD7887
# define sound_equalizer 0x2FD30CF
//-------------------------------------------------------//
const int receive = A0
IRrecv irrecv(receive)
decode_results dec
int volume = 15
int eqset = 0
boolean Playing = false
void setup ()
{
irrecv.enableIRIn()
mySerial.begin(9600)
delay(1000)
playFirst()
Playing = true
}
void loop ()
{
if(irrecv.decode(&dec))
{
if (dec.value==pause_play)
{
if(Playing)
{
pause()
Playing = false
}
else
{
Playing = true
play()
}
}
if (dec.value==next_song)
{
if(Playing)
{
next()
}
}
if (dec.value==prev_song)
{
if(Playing)
{
previous()
}
}
if(dec.value==vol_inc)
{
volumeINC()
}
if(dec.value==vol_dec)
{
volumeDEC()
}
if(dec.value==sound_equalizer)
{
equalizer()
}
irrecv.resume()
}
}
void playFirst()
{
exe_cmd(0x3F, 0, 0)
delay(100)
exe_cmd(0x06, 0, volume)
delay(100)
exe_cmd(0x11,0,1)
delay(100)
}
void pause()
{
exe_cmd(0x0E,0,0)
delay(100)
}
void play()
{
exe_cmd(0x0D,0,1)
delay(100)
}
void next()
{
exe_cmd(0x01,0,1)
delay(100)
}
void previous()
{
exe_cmd(0x02,0,1)
delay(100)
}
void volumeINC()
{
volume = volume+1
if(volume == 31)
{
volume = 30
}
exe_cmd(0x06, 0, volume)
delay(100)
}
void volumeDEC()
{
volume = volume-1
if(volume == -1)
{
volume = 0
}
exe_cmd(0x06, 0, volume)
delay(100)
}
void equalizer()
{
eqset = eqset+1
if(eqset == 6)
{
eqset = 0
}
exe_cmd(0x07, 0 ,eqset)
delay(100)
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2)
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}
for (byte x=0 x<10 x++)
{
mySerial.write(Command_line[x])
}
}
//---------Developed by R.Girish------//

참고 1 : 컴파일하는 동안 프로그램에 경고가 표시 될 수 있습니다. 무시하십시오.

참고 2 : 모든 노래를 폴더없이 SD 카드에 넣으십시오.

저자의 프로토 타입 :




이전 : LiFi 인터넷 송신기 회로 – LED를 통한 USB 신호 전송 다음 : 7W LED 드라이버 SMPS 회로 – 전류 제어