MP3-Player mit DF-Player - Vollständige Designdetails

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Beitrag werden wir einen MP3-Player mit Arduino und DFPlayer erstellen. Der vorgeschlagene Artikel enthält zwei MP3-Player-Designs, eines mit Druckknopfsteuerung und eines mit IR-Fernbedienung. Wir werden uns auch den DFPlayer (MP3-Player-Modul) und seine Spezifikationen ansehen.

Wir alle lieben Musik, wir möchten sie gerne im Fitnessstudio, beim Lesen, kurz vor dem Schlafengehen oder während wir uns nach einem anstrengenden Arbeitstag beruhigen.



Der Bau eines Musik-Players zu Hause vor einigen Jahrzehnten war für einen Elektronik-Enthusiasten aufgrund der konstruktiven Komplexität aufgrund mechanischer Komponenten nahezu unmöglich.

In jenen Tagen konnte nur eine begrenzte Anzahl von Liedern in einer Kassette untergebracht werden. Das Replizieren eines Songs auf eine andere Kassette war ebenfalls ein Albtraum. Dank der Fortschritte in der Elektronik kann ein MP3-Player jetzt mit Ihrem Taschengeld von Grund auf neu erstellt werden.



Kommen wir nun zu den technischen Details des Projekts.

Das Herzstück des Projekts ist DFPlayer, ein kleines MP3-Player-Modul, das Micro-SD-Karten aufnehmen und mit einem Mikrocontroller gesteuert werden kann.

Abbildung der DFPlayer:

DFPlayer

Es verfügt über einen eingebauten Verstärker, der 3-Watt-Lautsprecher in Stereo oder Mono betreiben kann. Es verfügt über einen 24-Bit-Digital-Analog-Wandler (DAC), der für solch kostengünstige und kompakte Module ziemlich gut geeignet ist.

Unteransicht der DFPlayer:

Unteransicht der DFPlayer

Es unterstützt die Dekodierung von MP3- und WMV-Hardware. Es unterstützt die Abtastrate von
8 kHz, 11,025 kHz, 12 kHz, 1 6 kHz, 22,05 kHz, 24 kHz, 32 kHz, 44,1 kHz, 48 kHz.

Es kann bis zu 32 GB Micro-SD-Karte unterstützen. Es unterstützt bis zu 100 Ordner, jedem Ordner können bis zu 1000 Titel zugewiesen werden.

Es verfügt über 6 verschiedene Stufen des Equalizers und 30 Stufen der Lautstärkeregelung. Es kann von 3,2 V bis 5 V betrieben werden.

Pin-Konfiguration der DFPlayer:

Pin-Konfiguration der DFPlayer

Die obigen Spezifikationen basieren auf dem Datenblatt von DFPlayer.

Inzwischen sind Sie mit DFPlayer und seiner Spezifikation vertraut. Sie können dieses Modul auf E-Commerce-Websites oder auf dem lokalen Elektronikmarkt erwerben.

Lassen Sie uns nun in das schematische Diagramm springen.

Mp3-Player-Design mit Druckknopf:

MP3-Player mit Arduino und DFPlayer

Die obige Schaltung ist sehr einfach. Das Arduino sendet Befehle an das DFPlayer-Modul, um die Songs zu steuern. Der Benutzer kann seine Wahl über Drucktasten eingeben.

Der eingebaute Pull-Up-Widerstand des Arduino wurde im Programm aktiviert, sodass wir keinen physischen Widerstand zum Drücken von Tasten anbringen müssen.

Versuchen Sie, Lautsprecher von guter Qualität zu verwenden. Der DFPlayer kann einen Klang von sehr guter Qualität liefern.

Wenn Sie bei höheren Lautstärken Klangverzerrungen feststellen, versorgen Sie das DFPlayer-Modul extern mit 5 V DC und einer gemeinsamen Erdungsverbindung zwischen Arduino und DFPlayer.

Wenn Sie Stereo-Sound einrichten möchten, schließen Sie einen der Lautsprecher an SPK1 des DFPlayer und einen anderen Lautsprecher an SPK2 an und erden Sie die verbleibenden Lautsprecherkabel.

Programm zur Druckknopfsteuerung:

//---------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------//

Kommen wir nun zum ferngesteuerten IR-Design.

Schema für IR-gesteuerten MP3-Player:


Das obige Design ist einfach, da der Druckknopf den einzigen Unterschied darin besteht, dass die Druckknöpfe entfernt und der TSOP 1738 IR-Empfänger eingebaut werden. Das von der IR-Fernbedienung empfangene Signal wird dem A0-Pin des Arduino zugeführt.

Um diesen MP3-Player zu steuern, benötigen Sie einen Ersatzfernseher oder eine andere IR-basierte Fernbedienung, die möglicherweise auf Ihrer Junk-Box liegt. Sie müssen entscheiden, welche Tasten zur Steuerung der Funktionen wie Wiedergabe & Pause usw. verwendet werden sollen.

Es gibt 6 Funktionen:

1) Spielen und pausieren
2) Nächstes Lied
3) Vorheriges Lied
4) Lautstärke erhöhen
5) Lautstärke verringern
6) Sound Equalizer (Normal / Pop / Rock / Jazz / Classic / Base)

Sie müssen die Tasten auf der Fernbedienung auswählen und die Hexadezimalcodes der Tasten ermitteln, die von der Fernbedienung übertragen werden. Laden Sie die IR-Bibliothek herunter, um den Hexadezimalcode zu ermitteln, falls dies nicht der Fall ist.

github.com/z3t0/Arduino-IRremote

Fügen Sie die Bibliothek zur Arduino-Software hinzu, navigieren Sie zu Datei> Beispiele> IRremote> IRrecvDemo und laden Sie den Code mit abgeschlossenem Hardware-Setup hoch.

Öffnen Sie den seriellen Monitor und drücken Sie die Tasten auf der Fernbedienung. Sie sehen die Hexadezimalcodes. Notieren Sie sie auf der entsprechenden Taste auf dem Blatt Papier.

Sie müssen den Hexadezimalcode in das unten angegebene Programm eingeben. Sobald Sie die Hexadezimalcodes im angegebenen Programm eingegeben haben, laden Sie sie hoch. Sie können Ihre Songs von Ihrer Fernbedienung aus steuern.

Programm für IR Remote Remote Design:

//---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------//

HINWEIS 1: Während des Kompilierens wird möglicherweise eine Warnung im Programm angezeigt. Bitte ignorieren Sie diese.

HINWEIS 2: Versuchen Sie, alle Ihre Songs ohne Ordner auf eine SD-Karte zu legen.

Prototyp des Autors:




Zurück: LiFi Internet Transmitter Circuit - USB-Signalübertragung über LED Weiter: 7 Watt LED-Treiber SMPS-Schaltung - Stromgesteuert