UART Serial MP3 Music Player not working

Before I start, let me just say that I am new to Arduino stuff and don’t know much about computers/electronics. Please dumb your answers down for me. (:

SO, I recently purchased a UART Serial MP3 Music Player, purchased at this website. I downloaded the libraries provided in the specs of the shield (from this Google folder.) It’s the one called RedMP3.

When I plug my Uno in, all I get is static from the speaker, even when I run the ‘simple test’ code. (I can’t remember where I downloaded it from, sorry.) Here it is:

#include <SoftwareSerial.h>

#define ARDUINO_RX 0//should connect to TX of the Serial MP3 Player module
#define ARDUINO_TX 1//connect to RX of the module
SoftwareSerial myMP3(ARDUINO_RX, ARDUINO_TX);

static int8_t Send_buf[6] = {0} ;
/************Command byte**************************/
/*basic commands*/
#define CMD_PLAY  0X01
#define CMD_PAUSE 0X02
#define CMD_NEXT_SONG 0X03
#define CMD_PREV_SONG 0X04
#define CMD_VOLUME_UP   0X05
#define CMD_VOLUME_DOWN 0X06
#define CMD_FORWARD 0X0A // >>
#define CMD_REWIND  0X0B // <<
#define CMD_STOP 0X0E
#define CMD_STOP_INJECT 0X0F//stop interruptting with a song, just stop the interlude

/*5 bytes commands*/
#define CMD_SEL_DEV 0X35
  #define DEV_TF 0X01
#define CMD_IC_MODE 0X35
  #define CMD_SLEEP   0X03
  #define CMD_WAKE_UP 0X02
  #define CMD_RESET   0X05

/*6 bytes commands*/  
#define CMD_PLAY_W_INDEX   0X41
#define CMD_PLAY_FILE_NAME 0X42
#define CMD_INJECT_W_INDEX 0X43

/*Special commands*/
#define CMD_SET_VOLUME 0X31
#define CMD_PLAY_W_VOL 0X31

#define CMD_SET_PLAY_MODE 0X33
  #define ALL_CYCLE 0X00
  #define SINGLE_CYCLE 0X01

#define CMD_PLAY_COMBINE 0X45//can play combination up to 15 songs

void sendCommand(int8_t command, int16_t dat );


void setup() 
{
	myMP3.begin(9600);
	delay(500);//Wait chip initialization is complete
    sendCommand(CMD_SEL_DEV, DEV_TF);//select the TF card  
	delay(200);//wait for 200ms
	playWithVolume(0X0F01);//play the first song with volume 15(0x0F) class
}
void loop() 
{
  
}

void setVolume(int8_t vol)
{
  mp3_5bytes(CMD_SET_VOLUME, vol);
}
void playWithVolume(int16_t dat)
{
  mp3_6bytes(CMD_PLAY_W_VOL, dat);
}

/*cycle play with an index*/
void cyclePlay(int16_t index)
{
  mp3_6bytes(CMD_SET_PLAY_MODE,index);
}

void setCyleMode(int8_t AllSingle)
{
  mp3_5bytes(CMD_SET_PLAY_MODE,AllSingle);
}


void playCombine(int8_t song[][2], int8_t number)
{
  if(number > 15) return;//number of songs combined can not be more than 15
  uint8_t nbytes;//the number of bytes of the command with starting byte and ending byte
  nbytes = 2*number + 4;
  int8_t Send_buf[nbytes];
  Send_buf[0] = 0x7e; //starting byte
  Send_buf[1] = nbytes - 2; //the number of bytes of the command without starting byte and ending byte
  Send_buf[2] = CMD_PLAY_COMBINE; 
  for(uint8_t i=0; i < number; i++)//
  {
    Send_buf[i*2+3] = song[i][0];
	Send_buf[i*2+4] = song[i][1];
  }
  Send_buf[nbytes - 1] = 0xef;
  sendBytes(nbytes);
}


void sendCommand(int8_t command, int16_t dat = 0)
{
  delay(20);
  if((command == CMD_PLAY_W_VOL)||(command == CMD_SET_PLAY_MODE)||(command == CMD_PLAY_COMBINE))
  	return;
  else if(command < 0x10) 
  {
	mp3Basic(command);
  }
  else if(command < 0x40)
  { 
	mp3_5bytes(command, dat);
  }
  else if(command < 0x50)
  { 
	mp3_6bytes(command, dat);
  }
  else return;
 
}

void mp3Basic(int8_t command)
{
  Send_buf[0] = 0x7e; //starting byte
  Send_buf[1] = 0x02; //the number of bytes of the command without starting byte and ending byte
  Send_buf[2] = command; 
  Send_buf[3] = 0xef; //
  sendBytes(4);
}
void mp3_5bytes(int8_t command, uint8_t dat)
{
  Send_buf[0] = 0x7e; //starting byte
  Send_buf[1] = 0x03; //the number of bytes of the command without starting byte and ending byte
  Send_buf[2] = command; 
  Send_buf[3] = dat; //
  Send_buf[4] = 0xef; //
  sendBytes(5);
}
void mp3_6bytes(int8_t command, int16_t dat)
{
  Send_buf[0] = 0x7e; //starting byte
  Send_buf[1] = 0x04; //the number of bytes of the command without starting byte and ending byte
  Send_buf[2] = command; 
  Send_buf[3] = (int8_t)(dat >> 8);//datah
  Send_buf[4] = (int8_t)(dat); //datal
  Send_buf[5] = 0xef; //
  sendBytes(6);
}
void sendBytes(uint8_t nbytes)
{
  for(uint8_t i=0; i < nbytes; i++)//
  {
    myMP3.write(Send_buf[i]) ;
  }
}

As the manual from the Google Drive suggests, I run a Serial Debug Assistant (found here) and either receive no response or '7E 03 35 01 EF 7E 04 31 0F 01 EF '. I have no idea what a serial debug assistant even is, to be honest, and I’m getting very flustered because I can’t figure out why my shield isn’t working.

Please, if you have any advice or ideas, let me know. Thank you so much!

Sorry but that code was written by an idiot. They use the Arduino hardware serial pins for the software serial. Make the start of the code

#define ARDUINO_RX 2//should connect to TX of the Serial MP3 Player module
#define ARDUINO_TX 3//connect to RX of the module

And wire pins 2 & 3 to your player not 0&1 and try again.

Thank you, but now all I get is a clicking noise. I guess that's better than nothing, though! lol

Most if the time when people have this sort of problem it turns out to be the file name being too long.

Grumpy_Mike: Most if the time when people have this sort of problem it turns out to be the file name being too long.

I have the files saved as 001.mp3, 002.mp3, etc

The only other thing I can think of is the SD card is it less that 2G and formatted as a fat16?

You need an oscilloscope to see if the signals are getting to your MP3 card and you are getting replies.

Otherwise I am fresh out of ideas other than a faulty SD card or MP3 module.

Wow, I feel like an idiot. Mine was Fat32 and 14GB. Reformatted and it seems to run perfectly. Thank you so much! <3

Wow, I didn’t think I could pull that one out of the fire. Thanks for getting back. :slight_smile: