Tutorial arduino mengakses mp3 player uart

Cara membuat mp3 player menggunakan Arduino

Modul UART MP3 Player adalah perangkat MP3 player sederhana yang berbasis pada chip audio MP3 berkualitas tinggi yang menggunakan IC YX5300.

Hal ini dapat mendukung pemutaran audio pada frekuensi 8kHz ~ 48kHz dengan format file yaitu MP3 dan WAV.

Terdapat soket micro SD Card, sebagai tempat penyimpanan file audio yang akan diputar pada module ini.

Pada mikrokontroller dapat mengendalikan status pemutaran MP3 dengan mengirimkan perintah ke module melalui port UART seperti perintah next song, mengubah volume, mode putar dan pause dan lain sebagainya.

Selain itu, anda juga bisa melakukan debug modul via USB ke modul UART, dan ini kompatibel dengan Arduino / AVR / ARM / PIC.

Berikut module mp3 player UART

mp3 player uart

Fitur – fitur yang dimiliki antara lain :

  1. Mendukung frekuensi sampling (kHz): 8 / 11.025 / 12/16 / 22.05 / 24/32 / 44.1 / 48
  2. Mendukung format file MP3 / WAV
  3. Mendukung Micro SD card, Micro SDHC Card
  4. Level volume yaitu maksimal 30 yang disesuaikan
  5. UART TTL mode pemutaran kontrol serial, baud rate adalah 9600bps
  6. Power supply bisa 3.2 ~ 5.2Vdc
  7. Control logic interface can be 3.3V/5V TTL
  8. Compatible with Arduino UNO/Leonardo/ Mega2560/ DUE

Untuk konektifitas dengan mikrokontroler yaitu menggunakan komunikasi serial (TX dan RX), dan untuk pemrograman hanya menggunakan library default dari Softtware IDE Arduino yaitu SoftwareSerial.h.

Tutorial mengakses module MP3 DFPlayer Mini


Tutorial Kontrol mp3 player UART via serial monitor

Bahan yang perlu dipersiapkan antara lain :

  1. Arduino Uno
  2. Module Mp3 Player UART YX5300
  3. Kabel jumper
  4. Speaker dengan jack audio atau headset
  5. Micro Sd Card 8Gb
  6. Komputer + software IDE Arduino

Rangkaian seperti gambar dibawah ini

Rangkaian arduino dengan mp3 player UART

Pada micro SD, file diberikan nama 001_xxx, 002_xxx, dan seterusnya. Contohnya yaitu misal judul mp3nya “bagaimana belajar mp3player.mp3”, pada judul mp3 tersebut dimodifikasi “001_bagaimana belajar mp3player.mp3″.

Sedangkan pada program yang dibawah ini buatlah 5 folder dengan nama 001, 002, 003, 004, dan 005, dengan nama 1 saja contoh mp3 per folder tersebut.

Kode Program (tanpa adanya library tambahan)

#include <SoftwareSerial.h> //library yang digunakan

#define RX_Mikro 5  //RX Arduino >> TX Module MP3 player
#define TX_Mikro 6  //TX Arduino >> RX Module MP3 player

SoftwareSerial mp3module(RX_Mikro, TX_Mikro);

static int8_t buff_send[8] = {0}; //buffer untuk pengiriman perintah

/************ Command byte **************************/
#define lagu_berikutnya     0X01
#define lagu_sebelumnya    0X02
#define volume_naik     0X04
#define volume_turun   0X05

#define reset_mp3         0X0C
#define mainkan         0X0D
#define pause_mp3         0X0E
#define mainkan_folder 0X0F

#define SEL_DEV        0X09
#define DEV_TF            0X02

void setup()
{
  Serial.begin(9600);
  mp3module.begin(9600);
  delay(500);

  kirimperintah(SEL_DEV, DEV_TF);
  delay(500);
}

void sendMP3Command(char c) {
  switch (c) {
    case 'h':
    case '?':
      Serial.println("ini instruksinya!");
      Serial.println(" m = mainkan");
      Serial.println(" b = Pause");
      Serial.println(" n = Lagu selanjutnya");
      Serial.println(" p = Lagu sebelumnya");
      Serial.println(" + = Volume naik");
      Serial.println(" - = Volume turun");
      Serial.println(" 1 = Play folder 1");
      Serial.println(" 2 = Play folder 2");
      Serial.println(" 3 = Play folder 3");
      Serial.println(" 4 = Play folder 4");
      Serial.println(" 5 = Play folder 5");
      Serial.println(" r = Reset_mp3");
      break;

    case 'm':
      Serial.println("Putar Lagu");
      kirimperintah(mainkan, 0);
      break;

    case 'b':
      Serial.println("Lagu Berhenti");
      kirimperintah(pause_mp3, 0);
      break;

    case 'n':
      Serial.println("Lagu berikutnya");
      kirimperintah(lagu_berikutnya, 0);
      break;

    case 'p':
      Serial.println("Lagu sebelumnya");
      kirimperintah(lagu_sebelumnya, 0);
      break;

    case '+':
      Serial.println("Volume Naik");
      kirimperintah(volume_naik, 0);
      break;

    case '-':
      Serial.println("Volume Turun");
      kirimperintah(volume_turun, 0);
      break;

    case '1':
      Serial.println("Masuk ke folder 1");
      kirimperintah(mainkan_folder, 0x0101);
      break;

    case '2':
      Serial.println("Masuk ke folder 2");
      kirimperintah(mainkan_folder, 0x0201);
      break;

    case '3':
      Serial.println("Masuk ke folder 3");
      kirimperintah(mainkan_folder, 0x0301);
      break;

    case '4':
      Serial.println("Masuk ke folder 4");
      kirimperintah(mainkan_folder, 0x0401);
      break;

    case '5':
      Serial.println("Masuk ke folder 5");
      kirimperintah(mainkan_folder, 0x0501);
      break;

    case 'r':
      Serial.println("Reset settingan");
      kirimperintah(reset_mp3, 0x00);
      break;

  }
}

void kirimperintah(int8_t command, int16_t dat)
{
  delay(20);
  buff_send[0] = 0x7e;
  buff_send[1] = 0xff;
  buff_send[2] = 0x06;
  buff_send[3] = command;
  buff_send[4] = 0x00;   // 0x00 NO, 0x01 feedback
  buff_send[5] = (int8_t)(dat >> 8);
  buff_send[6] = (int8_t)(dat);
  buff_send[7] = 0xef;

  for (uint8_t i = 0; i < 8; i++)
  {
    mp3module.write(buff_send[i]) ;
  }
  Serial.println();
}

void loop()
{
  char c = ' ';

  if ( Serial.available() )
  {
    c = Serial.read();
    sendMP3Command(c);
  }

  delay(100);
}

Hasil dari program diatas

serial monitor mp3 player

10 Comments

  1. Alim

    Bang Kalo buat module suara yg tiap suara ada tombol khusus,yg kalol Di klik mengeluarkan suara yg Berbeda gimana ya

  2. risnu

    bro… mp3 YX5300 ini noise nga ya?. seperti df player mini mp3

Leave a Reply

Your email address will not be published. Required fields are marked *