یک ماژول کوچک با کلی قابلیت در اختیار شماست
به راحتی روی بردبرد مینشیند و کمی بزرگتر از یک کارت حافظه میکرو اس دی است.
تقویت کننده داخلی 3 وات دارد و خروجی مستقیم و تقویت شده و کلیدهای عملکردی و قابل اتصال به میکرو کنترولر.
اکولایزر و ولوم کنترول و خروجی استریو و حتی به پورت usb هم قابل اتصال است
بعله همه چیز دارد. مشخصات پینهای آن را در زیر میبینید
1 VCC Module power input 3. 3V—5V, 5V is recommended, do not exceed 5. 2V
2 RX UART serial data input
3 TX UART serial data output
4 DAC_R Audio output right channel Drive headphones, amplifier
5 DAC_L Audio output left channel Drive headphones, amplifier
6 SPK2 Connect small speaker Drive less than 3W speakers
7 GND Ground Power ground
8 SPK1 Connect small speaker Drive less than 3W speakers
9 IO1 Trigger port Default previous song (long press volume down)
10 GND Ground Power ground
11 IO2 Trigger port Default next song (long press volume plus)
12 ADKEY1 AD port 1 The first song when triggered (long press cycle first song)
13 ADKEY2 AD port 2 Fifth track when triggered (long press cycle fifth track)
14 USB+ USB+ DP Connect U disk or USB port of computer
15 USB- USB- DM Connect U disk or USB port of computer
16 Busy Playback status With audio, output low. No audio, output high
این ماژول یک کتابخانه اختصاصی هم برای خود دارد که کار با آن را برای میکرو کنترولر آردواینو ساده تر نیز کرده
مثال زیر نشان می دهد که چگونه میتوانید این ماژول را با آردواینو کنترول کنید.
همانند شکل زیر مدار و اتصالات بردها را تکمیل نمایید
Rx - D11
Tx - D10
VCC - 5v
Gnd - Gnd
برای اتصال از پینهای 10 و 11 و کتابخانه سریال که شبیه ساز سریال می باشد استفاده می کنیم.
با این کار نیازی به استفاده از پینهای 0 و 1 نیست. فایده این کار این است که از انجا که کامپیوتر هم از همین پینها برای ارتباط با اردواینو استفاده میکند تداخلی بین این دو پیش نخواهد امد.
/// MP3 PLAYER PROJECT
/// http://educ8s.tv/arduino-mp3-player/
//////////////////////////////////////////
#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 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW
int buttonNext = 2;
int buttonPause = 3;
int buttonPrevious = 4;
boolean isPlaying = false;
void setup () {
pinMode(buttonPause, INPUT);
digitalWrite(buttonPause,HIGH);
pinMode(buttonNext, INPUT);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT);
digitalWrite(buttonPrevious,HIGH);
mySerial.begin (9600);
delay(1000);
playFirst();
isPlaying = true;
}
void loop () {
if (digitalRead(buttonPause) == ACTIVATED)
{
if(isPlaying)
{
pause();
isPlaying = false;
}else
{
isPlaying = true;
play();
}
}
if (digitalRead(buttonNext) == ACTIVATED)
{
if(isPlaying)
{
playNext();
}
}
if (digitalRead(buttonPrevious) == ACTIVATED)
{
if(isPlaying)
{
playPrevious();
}
}
}
void playFirst()
{
execute_CMD(0x3F, 0, 0);
delay(500);
setVolume(20);
delay(500);
execute_CMD(0x11,0,1);
delay(500);
}
void pause()
{
execute_CMD(0x0E,0,0);
delay(500);
}
void play()
{
execute_CMD(0x0D,0,1);
delay(500);
}
void playNext()
{
execute_CMD(0x01,0,1);
delay(500);
}
void playPrevious()
{
execute_CMD(0x02,0,1);
delay(500);
}
void setVolume(int volume)
{
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
delay(2000);
}
void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
mySerial.write( Command_line[k]);
}
}