به نام خدا
ساخت ۳ MP پلیر با استفاده از آدوینو و DFP پلیر
در این پست قصد داریم تا یک پخش کننده ی موزیک MP3 با استفاده از آردوینو و DFP PLAYER بسازیم. این پست دارای دو طراحی پخش کننده می باشد.یکی با میکروسوئیچ و دیگری با استفاده از سوئیچ مادون قرمز کنترل می شود.
تصویر DFPlayer:
این ماژول یک امپلیفایر است که می تواند اسپیکر های سه واتی را در حالت مونو ویا استریو راه اندازیی کند.یک مبدل آنالوگ به دیجیتال ۲۴ بیتی دارد.
تصویر از زیر DFPlayer:
این ماژول از فرمت های MP3 و WMV پشتیبانی می کند که دارای فرکانس های ۸KHz,11.025KHz, 12KHz,1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz باشند. این ماژول از کارت حافظه ی ۳۲ گیگا بایتی میکرو اس دی پشتیبانی می کند. و تاژ کارکرد ان نیز ۳٫۲ تا ۵ ولت است.
توضیح پین های DFPlayer:
شماتیک بالا اتصالات مداری پخش کننده ی موسیقی با استفاده کنترل میکروسوئیچ را نشان می دهد.
اگر که حالت استریو را مد نظر دارید باید اسپیکر اولی را به SPK1 و دومی را بع SPK2 متصل کنید و بقیه سیم ها را زمین کنید.
//———Developed by R.Girish——//
#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
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——//
Now let’s move on to IR remote based design.
شماتیک مدار پخش کننده با کنترل مادون قرمز:
شماتیک بالا اتصالات پخش کننده ی موسیقی با کنترل مادون قرمز را به ما نشان می دهد که مشابه قصمت قبل یعنی کنترل با میکرو سوئیچ بوده است اما در قسمت کنترل به جای میکرو سوئیچ از یکی سوئیچ مادون قرمز استفاده شده است. این ماژول ، دریافت کننده ی TSOP 1738 IR نام دارد. سیگنال ورودی این ماژول به پین A0 آردوینو متصل شده است.
اکنون برای کنترل این پخش کننده به یک ریموت کنترل مادون قرمز نیاز داریم مانند کنترل تلویزیون. با استفاده از آن می توان از اماکانات آن برخوردار بود.
- پخش و توقف کردن
- موسیقی بعدی
- موسیقی قبلی
- افزایش صدا
- کاهش صدا
- تنظیم صدا
برای انتخاب کلید های کنترل شما نیا دارید تا کد ها هگزادسیمالی که از ریموت کنترل ارسال می شوند را پیدا کنید که می توانید. آن ها را می توانید با دانلود کردن کتابخانه ی زیر انجام دهید.
https://github.com/z3t0/Arduino-IRremote
کتابخانه را به نرم افزار آردوینو انتقال دهد :
File> Examples> IRremote > IRrecvDemo and upload the code with completed hardware setup
و سپس کد را بعد از انجام اتصالات مدار آپلود کنید .
سریال مانیتور را باز کنید و یک دکمه از کنترل را فشار دهید. یک کد هگزادسیمال مشاهده می کنید آن را یادداشت کنید. سپس آن را در کد زیر وارد کنید.
کد برنامه ی پخش کننده با کنترل مادون قرمز:
//—Developed by R.Girish–//
#include <SoftwareSerial.h>
#include <IRremote.h>
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 “۰x”
# 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]);
}
}
دیدگاهها (0)