Arduino ile DFPlayer Mini MP3 modülü kullanımı

👤 Yazar: ozcan 📅 Tarih: 20.07.2026 06:42 👁️ Görüntüleme: 23

Bu Arduino projesi, popüler DFRobot DFPlayer Mini MP3 modülünü projenize entegre etmeniz için gereken temel altyapıyı sunar. Kod yapısı, modülün donanımsal haberleşmesini başlatmanın yanı sıra SD kartın takılma/çıkarılma durumlarını, oynatma kararlılığını ve olası donanımsal arıza geri bildirimlerini seri port üzerinden anlık olarak yakalar.

Arduino DFPlayer Mini MP3 modülü kulaklıkla kullanım şeması

Donanım Notu: Arduino Uno gibi tek bir donanımsal seri porta (Hardware Serial) sahip kartlar kullanıyorsanız, kodun başındaki SoftwareSerial kütüphanesini ve pin tanımlamalarını (3. ve 2. pinler) aktif hale getirmelisiniz. ESP32, STM32 veya Arduino Mega gibi alternatif kartlarda ise doğrudan boşta olan bir donanımsal UART birimini (örneğin Serial1) kullanabilirsiniz. Arduino IDE ye DFRobotDFPlayerMini kütüphanesini eklemeyi unutmayın.

Arduino DFPlayer Mini MP3 modülü hoparlör ile kullanım şeması

Arduino Uygulama Kodları

#include "DFRobotDFPlayerMini.h"

//Uno için alttaki 2 satırı aktif edin. Baştaki // leri silin  ->
#include "SoftwareSerial.h"
SoftwareSerial Serial1(3, 2); //RX, TX

DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(9600);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  //Use softwareSerial to communicate with board
  if (!myDFPlayer.begin(Serial1)) {  
    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."));

  myDFPlayer.volume(0);
  delay(100);

  myDFPlayer.volume(15);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3. to loop, exchange 'play' for 'loop'
}

void loop()
{
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); 
  }
}

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;
  }
}

Kodun Çalışma Mantığı ve Hata Yönetimi

Taslak içerisinde yer alan printDetail fonksiyonu, modülden gelen UART veri paketlerini çözümleyerek geliştiriciye rehberlik eder. loop döngüsü içinde sürekli dinlenen veri akışı sayesinde şu durumlar gerçek zamanlı raporlanır:

  • İletişim Hataları: Zaman aşımı (TimeOut) veya hatalı veri yığını (WrongStack) durumları tespit edilir.
  • Depolama Durumu: MicroSD kartın yuvaya yerleştirildiği an (Card Inserted) veya çıkarıldığı an (Card Removed) anında yakalanır.
  • Oynatma Takibi: İlgili ses dosyasının çalınması bittiğinde (Play Finished) tetiklenen case bloğu ile sonraki şarkıya geçiş mantığı kurulabilir.
  • Hata Çözümleme: Hafıza kartının okunamaması (Busy), uyku modu (Sleeping) veya dizinde belirtilen dosya indeksinin sınırların dışında kalması (File Index Out of Bound) gibi kritik hatalar alt switch-case yapısıyla ayrıştırılır.

Modülün kararlı çalışabilmesi için yükleme yapıldıktan sonra Arduino Seri Monitör ekranının 115200 baud hızına ayarlanması gerekir. Açılış esnasında SD kart dosya yapısının taranması 3 ila 5 saniye sürebileceğinden, sistem hazır olana kadar myDFPlayer.begin(Serial1) doğrulaması döngü içerisinde bekletilmektedir.


Kaynak:DFPlayer Mini | Wiki | UAL Creative Computing Institute

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1