Mp3 Player χρησιμοποιώντας DF Player - Πλήρεις λεπτομέρειες σχεδίασης

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Σε αυτήν την ανάρτηση πρόκειται να κατασκευάσουμε ένα πρόγραμμα αναπαραγωγής Mp3 χρησιμοποιώντας το arduino και το DFPlayer. Το προτεινόμενο άρθρο έχει δύο σχέδια Mp3 player, ένα με το κουμπί ελέγχου και ένα άλλο με τηλεχειριστήριο IR. Θα ρίξουμε επίσης μια ματιά στο DFPlayer (μονάδα αναπαραγωγής Mp3) και τις προδιαγραφές του.

Όλοι αγαπάμε τη μουσική, θα θέλαμε να την ακούσουμε ενώ στο γυμναστήριο, διαβάζοντας, λίγες ώρες πριν κοιμηθούμε ή χαλαρώνοντας τον εαυτό μας μετά από μια κουραστική μέρα.



Η κατασκευή μιας συσκευής αναπαραγωγής μουσικής στο σπίτι πριν από μερικές δεκαετίες ήταν σχεδόν αδύνατη για έναν ενθουσιώδη των ηλεκτρονικών, λόγω της κατασκευαστικής πολυπλοκότητας λόγω των μηχανικών εξαρτημάτων.

Εκείνη την εποχή μόνο περιορισμένος αριθμός τραγουδιών μπορούσε να φιλοξενήσει μια κασέτα. Η αναπαραγωγή ενός τραγουδιού σε άλλη κασέτα ήταν επίσης εφιάλτης. Αλλά τώρα, χάρη στην πρόοδο στην ηλεκτρονική συσκευή, μπορείτε να δημιουργήσετε ένα Mp3 player από το μηδέν με τα χρήματα σας.



Τώρα ας προχωρήσουμε σε τεχνικές λεπτομέρειες του έργου.

Το επίκεντρο του έργου είναι το DFPlayer το οποίο είναι μια μικρή μονάδα αναπαραγωγής Mp3 που μπορεί να φιλοξενήσει κάρτα micro SD και μπορεί να ελεγχθεί χρησιμοποιώντας έναν μικροελεγκτή.

Εικόνα του DFPlayer:

DFPlayer

Έχει ενσωματωμένο ενισχυτή που μπορεί να οδηγήσει ηχεία 3 watt σε στερεοφωνικό ή μονοφωνικό. Έχει 24-bit ψηφιακό σε αναλογικό μετατροπέα (DAC) που είναι αρκετά καλό για τόσο χαμηλό κόστος και συμπαγή μονάδα.

Κάτω όψη του DFPlayer:

Κάτω όψη του DFPlayer

Υποστηρίζει αποκωδικοποίηση υλικού MP3 και WMV. Υποστηρίζει ρυθμό δειγματοληψίας
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Μπορεί να υποστηρίξει έως και 32 GB κάρτα micro SD. Υποστηρίζει έως και 100 φακέλους, σε κάθε φάκελο μπορεί να αντιστοιχιστεί έως και 1000 τραγούδια.

Διαθέτει 6 διαφορετικά επίπεδα ισοσταθμιστή και 30 επίπεδα ελέγχου ρύθμισης έντασης. Μπορεί να λειτουργεί από 3.2V έως 5V.

Καρφίτσωμα διαμόρφωσης του DFPlayer:

Καρφίτσωμα διαμόρφωσης του DFPlayer

Οι παραπάνω προδιαγραφές βασίζονται στο φύλλο δεδομένων του DFPlayer.

Μέχρι τώρα θα έχετε εξοικειωθεί με το DFPlayer και τις προδιαγραφές του. Μπορείτε να αγοράσετε αυτήν την ενότητα από ιστότοπους ηλεκτρονικού εμπορίου ή από την τοπική αγορά ηλεκτρονικών ειδών.

Τώρα ας περάσουμε στο σχηματικό διάγραμμα.

Σχεδίαση αναπαραγωγής Mp3 με κουμπιά:

Πρόγραμμα αναπαραγωγής Mp3 με χρήση του Arduino και του DFPlayer

Το παραπάνω κύκλωμα είναι πολύ απλό το arduino στέλνει εντολές στη μονάδα DFPlayer για τον έλεγχο των τραγουδιών. Ο χρήστης μπορεί να εισαγάγει την επιλογή του μέσω μπουτόν.

Η ενσωματωμένη pull-up αντίσταση του arduino έχει ενεργοποιηθεί στο πρόγραμμα, οπότε δεν χρειάζεται να συνδέσουμε μια φυσική αντίσταση στα κουμπιά.

Προσπαθήστε να χρησιμοποιήσετε ηχεία καλής ποιότητας, το DFPlayer μπορεί να προσφέρει ήχο πολύ καλής ποιότητας.

Εάν εντοπίσετε παραμόρφωση στον ήχο σε υψηλότερα επίπεδα έντασης, τροφοδοτήστε τη μονάδα DFPlayer εξωτερικά σε 5V DC με κοινή σύνδεση γείωσης μεταξύ arduino και DFPlayer.

Εάν θέλετε ρύθμιση στερεοφωνικού ήχου, συνδέστε ένα από τα ηχεία στο SPK1 του DFPlayer και ένα άλλο ηχείο στο 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.

Σχηματικό πρόγραμμα αναπαραγωγής Mp3 ελεγχόμενο από IR:


Η παραπάνω σχεδίαση είναι απλή, καθώς το πλήκτρο βασίζεται στη μόνη διαφορά είναι η αφαίρεση των πλήκτρων και η συμπερίληψη του δέκτη TSOP 1738 IR. Το ληφθέν σήμα από το τηλεχειριστήριο IR τροφοδοτείται σε ακίδα A0 του arduino.

Τώρα για να ελέγξετε αυτό το πρόγραμμα αναπαραγωγής Mp3 χρειάζεστε μια εφεδρική τηλεόραση ή οποιοδήποτε άλλο τηλεχειριστήριο με βάση το IR που μπορεί να βρίσκεται στο άχρηστο κουτί. Πρέπει να αποφασίσετε ποια κουμπιά για τον έλεγχο των λειτουργιών, όπως αναπαραγωγή & παύση κ.λπ.

Υπάρχουν 6 λειτουργίες:

1) Αναπαραγωγή και παύση
2) Επόμενο τραγούδι
3) Προηγούμενο τραγούδι
4) Αύξηση όγκου
5) Μείωση όγκου
6) Ισοσταθμιστής ήχου (Normal / Pop / Rock / Jazz / Classic / Base)

Πρέπει να επιλέξετε τα κουμπιά στο τηλεχειριστήριο και να βρείτε τους δεκαεξαδικούς κωδικούς αυτών των κουμπιών που θα μεταδοθούν από το τηλεχειριστήριο. Για να βρείτε τον δεκαεξαδικό κώδικα, πραγματοποιήστε λήψη της βιβλιοθήκης υπερύθρων εάν δεν το κάνετε.

github.com/z3t0/Arduino-IRremote

Προσθέστε τη βιβλιοθήκη στο λογισμικό arduino και μεταβείτε στο Αρχείο> Παραδείγματα> IRremote> IRrecvDemo και ανεβάστε τον κώδικα με ολοκληρωμένη εγκατάσταση υλικού.

Ανοίξτε τη σειριακή οθόνη και πατήστε τα κουμπιά στο τηλεχειριστήριο, θα δείτε τους δεκαεξαδικούς κωδικούς, σημειώστε το στο αντίστοιχο κουμπί σε κομμάτι χαρτί.

Πρέπει να εισαγάγετε τον δεκαεξαδικό κωδικό στο πρόγραμμα που δίνεται παρακάτω. Μόλις εισαγάγετε τους δεκαεξαδικούς κωδικούς στο συγκεκριμένο πρόγραμμα, ανεβάστε τον. Είστε έτοιμοι να ελέγξετε τα τραγούδια σας από το τηλεχειριστήριό σας.

Πρόγραμμα για απομακρυσμένη σχεδίαση βάσει 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 Internet Transmitter Circuit - Μεταφορά σήματος USB μέσω LED Επόμενο: Κύκλωμα SMPS οδηγού LED 7 Watt - Ελεγχόμενο ρεύμα