By | 26/12/2020

DFPlayer Mp3 Mini merupakan modul decoder yang dapat membaca file mp3 dari sd card kemudian bisa langsung menjalankan file nya berupa suara. Mengakses DFplayer Mp3 Mini dengan ESP32 sangat mudah sama halnya dengan menggunakan ESP8266 seperti NodeMCU atau Wemos D1 mini.

Namun saya pribadi awalnya kebingungan karena ESP32 tidak bisa menggunakan softwareserial, setelah saya melihat struktur pin pada esp32 ternyata esp32 memiliki hardwareserial lebih dari satu.

Tutorial ESP32 Memulai Mengakses DFplayer Mp3 100% Work !

Penerapan Tutorial ESP32 dan DFplayer Mp3 mini

Banyak sekali penerapan yang bisa kalian gunakan dengan esp32 dan dfplayer mp3, antara lain

  1. Mesin Antrian Otomatis Berbasis IoT dan Suara Mp3
  2. Mesin Parkir IoT dengan Suara Mp3
  3. Alat Alarm Cerdas dengan Suara Mp3
  4. dan masih banya yang lainya.

lihat contoh berikut ini dimana ESP32 dan DFplayer Mp3 saya gunakan sebagai alarm cerdas yang dapat menyimpan banyak jadwal.

Langkah Tutorial Mengakses Dfplayer Mp3 Dengan ESP32

  1. Siapkan Modul ESP32 Wemos D1 Mini Beli Disini
  2. Siapkan Modul Dfplayer Mp3 Mini
  3. Siapkan Speaker 8 Ohm
  4. Siapkan Kabel Jumper Secukupnya
  5. Buat rangkaian seperti pada gambar diatas
  6. Download Library Dfplayer Disini
  7. Siapkan SD-card Modul
  8. Format nya dibuat FAT32
  9. Simpan Setiap File Dengan Nama 0001.mp3 – 9999.mp3
  10. Upload program berikut ini.

Program Arduino IDE ESP32 Mengakses DFplayer Mp3 Mini

#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"

DFRobotDFPlayerMini mp3;
void printDetail(uint8_t type, int value);

void setup()
{
  Serial2.begin(9600);
  Serial.begin(9600);
  delay(100);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!mp3.begin(Serial2)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
  
  mp3.setTimeOut(500); //Set serial communictaion time out 500ms
  
  //----Set volume----
  mp3.volume(20);  //Set volume value (0~30).
  mp3.volumeUp(); //Volume Up
  mp3.volumeDown(); //Volume Down
  
  //----Set different EQ----
  mp3.EQ(DFPLAYER_EQ_NORMAL);
//  mp3.EQ(DFPLAYER_EQ_POP);
//  mp3.EQ(DFPLAYER_EQ_ROCK);
//  mp3.EQ(DFPLAYER_EQ_JAZZ);
//  mp3.EQ(DFPLAYER_EQ_CLASSIC);
//  mp3.EQ(DFPLAYER_EQ_BASS);
  
  //----Set device we use SD as default----
//  mp3.outputDevice(DFPLAYER_DEVICE_U_DISK);
  mp3.outputDevice(DFPLAYER_DEVICE_SD);
//  mp3.outputDevice(DFPLAYER_DEVICE_AUX);
//  mp3.outputDevice(DFPLAYER_DEVICE_SLEEP);
//  mp3.outputDevice(DFPLAYER_DEVICE_FLASH);
  
  //----Mp3 control----
//  mp3.sleep();     //sleep
//  mp3.reset();     //Reset the module
//  mp3.enableDAC();  //Enable On-chip DAC
//  mp3.disableDAC();  //Disable On-chip DAC
//  mp3.outputSetting(true, 15); //output setting, enable the output and set the gain to 15
  
  //----Mp3 play----
  mp3.next();  //Play next mp3
  delay(1000);
  mp3.previous();  //Play previous mp3
  delay(1000);
  mp3.play(1);  //Play the first mp3
  delay(1000);
  mp3.loop(1);  //Loop the first mp3
  delay(1000);
  mp3.pause();  //pause the mp3
  delay(1000);
  mp3.start();  //start the mp3 from the pause
  delay(1000);
  mp3.playFolder(15, 4);  //play specific mp3 in SD:/15/004.mp3; Folder Name(1~99); File Name(1~255)
  delay(1000);
  mp3.enableLoopAll(); //loop all mp3 files.
  delay(1000);
  mp3.disableLoopAll(); //stop loop all mp3 files.
  delay(1000);
  mp3.playMp3Folder(4); //play specific mp3 in SD:/MP3/0004.mp3; File Name(0~65535)
  delay(1000);
  mp3.advertise(3); //advertise specific mp3 in SD:/ADVERT/0003.mp3; File Name(0~65535)
  delay(1000);
  mp3.stopAdvertise(); //stop advertise
  delay(1000);
  mp3.playLargeFolder(2, 999); //play specific mp3 in SD:/02/004.mp3; Folder Name(1~10); File Name(1~1000)
  delay(1000);
  mp3.loopFolder(5); //loop all mp3 files in folder SD:/05.
  delay(1000);
  mp3.randomAll(); //Random play all the mp3.
  delay(1000);
  mp3.enableLoop(); //enable loop.
  delay(1000);
  mp3.disableLoop(); //disable loop.
  delay(1000);

  //----Read imformation----
  Serial.println(mp3.readState()); //read mp3 state
  Serial.println(mp3.readVolume()); //read current volume
  Serial.println(mp3.readEQ()); //read EQ setting
  Serial.println(mp3.readFileCounts()); //read all file counts in SD card
  Serial.println(mp3.readCurrentFileNumber()); //read current play file number
  Serial.println(mp3.readFileCountsInFolder(3)); //read fill counts in folder SD:/03
}

void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
    mp3.next();  //Play next mp3 every 3 second.
  }
  
  if (mp3.available()) {
    printDetail(mp3.readType(), mp3.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}

Serial2 pada ESP32 terdapat pada pin GPIO17 sebagai TX dan GPIO16 sebagai RX, dan setelah program pengaktifan Serial2.begin(9600) dibutuhkan waktu delay supaya serial dapat bekerja normal, jika tidak di tambahkan delay, maka saat program pengecekan respon dari DFplayer belum bisa di baca, sehingga akan menyebabkan gagal pemutaran suara Mp3 Modul DFplayer Mini

Itulah tutorial Mengakses Modul DFplayer dengan ESP32 dari anakkendali.com, semoga bermanfaat artikel nya. salam

Keyword

  1. ESP32 DFplayer Mp3,
  2. ESP32 DFplayer,
  3. Tutorial ESP32 DFplayer,
  4. Belajar ESP32 DFplayer,
  5. Mp3 Musik ESP32,
  6. Error ESP32 Dfplayer,
  7. Alarm ESP32 Dfplayer,

One Reply to “Tutorial ESP32 Memulai Mengakses DFplayer Mp3 100% Work !”

  1. usman

    Assalamualaikum Pak .. bisakah Program Arduino IDE ESP32 Mengakses DFplayer Mp3 Mini selain GPIO 16 DAN 17, mohon arahan dan bantuannya, trima kasih sebelumnya

    Reply

Leave a Reply

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