נגן MP3 באמצעות נגן DF - פרטי עיצוב מלאים

נסה את הכלי שלנו לביטול בעיות





בפוסט זה אנו הולכים לבנות נגן MP3 באמצעות ארדואינו ו- DFPlayer. המאמר המוצע כולל שני עיצובים של נגני MP3, אחד עם שליטה על כפתור הלחץ ושני עם שלט רחוק. אנו נסתכל גם על DFPlayer (מודול נגן MP3) ומפרטיו.

כולנו אוהבים מוסיקה, היינו רוצים לשמוע אותה בזמן כושר, קריאה, רגעים לפני שינה או בזמן הרגעת העצמי לאחר יום עבודה קשה.



בניית נגן מוסיקה בבית כמה עשורים אחורה הייתה כמעט בלתי אפשרית עבור חובב אלקטרוניקה בגלל מורכבות קונסטרוקטיבית בגלל רכיבים מכניים.

באותם ימים ניתן היה להכניס רק מספר מוגבל של שירים בקלטת. גם העתקת שיר לקלטת אחרת הייתה סיוט. אבל עכשיו, בזכות ההתקדמות בתחום האלקטרוניקה ניתן להכין נגן MP3 מאפס עם דמי הכיס שלך.



עכשיו בואו נעבור לפרטים הטכניים של הפרויקט.

לב הפרויקט הוא DFPlayer שהוא מודול נגן MP3 קטן שיכול להכיל כרטיס מיקרו SD וניתן לשלוט בו באמצעות מיקרו-בקר.

איור של DFPlayer:

DFPlayer

יש לו מגבר מובנה שיכול לנהוג ברמקולים של 3 וואט בסטריאו או מונו. יש לו 24-bit ממיר דיגיטלי לאנלוגי (DAC) וזה די טוב עבור מודול בעלות נמוכה וקומפקטית כזו.

מבט תחתון של DFPlayer:

מבט תחתון של ה- DFPlayer

הוא תומך בפענוח חומרה MP3 ו- WMV. הוא תומך בקצב הדגימה של
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

זה יכול לתמוך בכרטיס מיקרו SD של עד 32GB. הוא תומך בעד 100 תיקיות, לכל תיקיה ניתן להקצות עד 1000 שירים.

יש לו 6 רמות שונות של אקולייזר ו -30 רמות שליטה בכוונון עוצמת הקול. זה יכול לפעול מ 3.2V ל 5V.

תצורת סיכה של DFPlayer:

תצורת סיכה של DFPlayer

המפרט לעיל מבוסס על גיליון הנתונים של DFPlayer.

עד עכשיו היית מכיר את DFPlayer ואת המפרט שלו. תוכלו לרכוש מודול זה מאתרי סחר אלקטרוני או משוק אלקטרוניקה מקומי.

עכשיו בואו נקפוץ לתרשים הסכמטי.

עיצוב נגן MP3 בלחצן:

נגן MP3 באמצעות Arduino ו- DFPlayer

המעגל הנ'ל פשוט מאוד. הארדואינו שולח פקודות למודול DFPlayer כדי לשלוט בשירים. המשתמש יכול להזין את בחירתו באמצעות לחצני כפתור.

הנגד המושך המובנה של הארדואינו הופעל בתוכנית, כך שלא נצטרך לחבר נגד פיזי ללחצנים.

נסה להשתמש ברמקולים באיכות טובה שה- 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:


העיצוב שלעיל הוא פשוט מכיוון שללחצן הלחיצה מבוסס ההבדל היחיד הוא הסרת כפתורי לחיצה והכללת מקלט IR TSOP 1738. האות שהתקבל משלט ה- IR מוזן לסיכה A0 של ארדואינו.

עכשיו כדי לשלוט בנגן ה- MP3 הזה אתה זקוק לטלוויזיה רזרבית או לכל שלט אחר מבוסס IR שעשוי להיות מונח על תיבת הזבל שלך. אתה צריך להחליט אילו כפתורים לשליטה בפונקציות כמו play & pause וכו '.

ישנן 6 פונקציות:

1) הפעל והשהה
2) השיר הבא
3) שיר קודם
4) עליית נפח
5) ירידת נפח
6) אקולייזר סאונד (רגיל / פופ / רוק / ג'אז / קלאסי / בסיס)

עליכם לבחור את הכפתורים בשלט ולמצוא את קודי ההקסדצימלי של אותם לחצנים אשר יועברו על ידי השלט. כדי למצוא את הקוד ההקסדצימלי, הורד את ספריית ה- IR אם לא נעשה זאת.

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 - העברת אות USB באמצעות נורית LED הבא: מעגל SMPS של מנהל התקן 7 ואט LED - מבוקר זרם