Arduino İle DFPlayer Mini Kullanımı

DFPlayer Mini arduino için bir mp3 oynatıcıdır, doğrudan hoparlöre basitleştirilmiş çıkışa sahip küçük ve düşük fiyatlı bir MP3 modülüdür. Modül, bağlı pil, hoparlör ve basma düğmeleri ile bağımsız bir modül olarak kullanılabilir veya bir Arduino UNO veya RX/TX özelliklerine sahip herhangi bir mikroişlemci ile birlikte kullanılabilir.

DFPlayer Mini
DFPlayer Mini

DFPlayer Mini Özellikleri

  • Desteklenen örnekleme oranları (kHz): 8/11.025/12/16/22.05/24/32/44.1/48
  • 24 bit DAC çıkışı, 90dB dinamik aralık desteği, 85dB SNR desteği.
  • FAT16, FAT32 dosya sistemini tamamen destekler, TF kartının maksimum 32 GB desteği, 32G U disk desteği, 64M bayt NORFLASH.
  • Çeşitli kontrol modları vardır; G/Ç kontrol modu, seri mod, AD düğmesi kontrol modu.
  • Reklam sesi bekleme işlevi, müzik askıya alınabilir. müzikte reklam bitince çalmaya devam edebilir.
  • Klasöre göre sıralanmış ses verileri, 100 klasöre kadar destekler, her klasör 255 şarkıyı kadar tutabilir.
  • 30 seviyeli ayarlanabilir ses seviyesi, 6 seviyeli EQ ayarlanabilir.

DFPlayer Mini’nin Kullanıldığı Yerler

  • Araba navigasyon sesli yayınlarında.
  • Karayolu taşımacılığı müfettişleri, gişe istasyonları sesli uyarıları.
  • Tren istasyonu, otobüs güvenlik denetimi sesli uyarıları.
  • Elektrik, iletişim, finansal iş salonu sesli komutları.
  • Kanala giren ve çıkan araç sesli komutlarında.
  • Çok kanallı acil anons veya ekipman çalıştırma kılavuzu olarak.
  • Elektrikli turist arabası güvenli sürüş sesli uyarılarında.
  • Elektromekanik ekipman arıza alarmlarında.
  • Yangın alarmı sesli komutlarında.

DFPlayer Pin Şeması

DFPlayer Mini Pin Şeması
DFPlayer Mini Pin Şeması
DFPlayer Mini Pinleri

DFPlayer İle Micro Sd Kattan Mp3 Oynatma

Gerekli Olan Malzemeler

İlk olarak aşağıdaki bağlantı şemamıza göre bağlantılarımızı kuralım.

Arduino DFPlayer Mini Bağlantı Şeması
Arduino DFPlayer Mini Bağlantı Şeması

Eğer bağlatı şemamızı kurduysak artık micro sd kartımıza mp3 dosyalarımızı atabiliriz. Burada ilk olarak micro sd kartımız FAT16 veya FAT32 formatında olması gerekmektedir. Eğer bu formatta değil ise micro sd kartımızı istenilen formatta biçimlendirelim.

Daha sonra atılacak olan müzikleri adlandırmamız lazım. Müziklerimiz “001” şeklinde adlandırmalıyız. Mesela 3 tane mp3 dosyamız var ise bunlar şu şekilde olmalıdır: 001,002,003

Eğer müzik adlandırmalarımızda tamam ise artık kodumuza geçebiliriz.

Arduino İle DFPlayer Miniden MP3 Oynatma Kodu

DFPlayer Miniyi kullanabilmemiz için 2 adet kütüphane gereklidir. SoftwareSerial kütüphanesi arduino ide ile beraber gelmektedir. DFPlayer mini kütüphanesini aşağıdan indirebilirsiniz.

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

static const uint8_t PIN_MP3_TX = 2; // DFPlayer modülünde RX  pinine
static const uint8_t PIN_MP3_RX = 3; // DFPlayer modülünde TX pinine
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);

// Oynatıcı objemizi Player adında oluşturuyoruz.
DFRobotDFPlayerMini player;

void setup() {

  // Seri haberleşmeyi başlatıyoruz
  Serial.begin(9600);
  // DFPlayer mini ile arduino arasındaki haberleşmeyi başlatıyoruz.
  softwareSerial.begin(9600);

  // Eğer arduino ile dfplayer arasında bağlantı kurulmuş ise OK yazıdırıyoruz
  if (player.begin(softwareSerial)) {
   Serial.println("OK");

    // Ses seviyesini belirliyoruz (0 to 30).
    player.volume(25);
    // sd karttaki ilk müziği oynatıyoruz.
    player.play(1);
  } else {
    // dfplayer ile bağlantının kurulamadığını yazdırıyoruz.
    Serial.println("Connecting to DFPlayer Mini failed!");

  }
}

void loop() {
}

Projemizin videosunu aşağıdan izleyebilirsiniz.

Arduino İle DFPlayer Mini Kullanımı

Şimdi müziğimizi oynatmayı başardıysak kütüphanemizin bize sağladığı bütün fonksiyonları inceleyebiliriz.

/***************************************************
 DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/product-1121.html>
 
 ***************************************************
 This example shows the all the function of library for DFPlayer.
 
 Created 2016-12-07
 By [Angelo qiao](Angelo.qiao@dfrobot.com)
 
 GNU Lesser General Public License.
 See <http://www.gnu.org/licenses/> for details.
 All above must be included in any redistribution
 ****************************************************/

/***********Notice and Trouble shooting***************
 1.Connection and Diagram can be found here
<https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram>
 2.This code is tested on Arduino Uno, Leonardo, Mega boards.
 ****************************************************/

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

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("DFPlayer baslatılıyor ... (3~5 saniye surebilir)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Mp3 ile iletişim kurmak için softwareSerial kullanın.
    Serial.println(F("baslatilamiyor:"));
    Serial.println(F("1. Lutfen baglantiyi tekrar kontrol edin!"));
    Serial.println(F("2. Lutfen SD karti takin!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.setTimeOut(500); //500ms seri iletişim zaman aşımını ayarla
  
  //----Ses seviyesini ayarla----
  myDFPlayer.volume(10);  //Ses seviyesi değerini ayarlayın (0~30).
  myDFPlayer.volumeUp(); //Sesi aç
  myDFPlayer.volumeDown(); //Sesi kıs
  
  //----Farklı EQ ayarla----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
//  myDFPlayer.EQ(DFPLAYER_EQ_POP);
//  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
//  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
//  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
//  myDFPlayer.EQ(DFPLAYER_EQ_BASS);
  
  //----SD kullandığımız cihazı varsayılan olarak ayarla----
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);
//  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);
  
  //----Mp3 Kontrol----
//  myDFPlayer.sleep();     //uyu
//  myDFPlayer.reset();     //Modülü sıfırlayın
//  myDFPlayer.enableDAC();  //Çipte DAC'yi Etkinleştir
//  myDFPlayer.disableDAC();  //Çipte DAC'yi devre dışı bırak
//  myDFPlayer.outputSetting(true, 15); //çıkış ayarı, çıkışı etkinleştirin ve kazancı 15'e ayarlayın
  
  //----Mp3 Oynatma----
  myDFPlayer.next();  //Sonraki mp3'ü çal
  delay(1000);
  myDFPlayer.previous();  //Önceki mp3'ü çal
  delay(1000);
  myDFPlayer.play(1);  //İlk mp3'ü çal
  delay(1000);
  myDFPlayer.loop(1);  //İlk mp3'ü döngüye al
  delay(1000);
  myDFPlayer.pause();  //mp3'ü duraklat
  delay(1000);
  myDFPlayer.start();  //mp3'ü duraklamadan başlat
  delay(1000);
  myDFPlayer.playFolder(15, 4);  //SD:/15/004.mp3'te belirli mp3 çal; Klasör Adı(1~99); Dosya Adı(1~255)
  delay(1000);
  myDFPlayer.enableLoopAll(); //tüm mp3 dosyalarını döngüye sokun.
  delay(1000);
  myDFPlayer.disableLoopAll(); //tüm mp3 dosyalarını döngüyü durdur.
  delay(1000);
  myDFPlayer.playMp3Folder(4); //SD:/MP3/0004.mp3'te belirli mp3 çal; Dosya Adı(0~65535)
  delay(1000);
  myDFPlayer.advertise(3); //SD:/ADVERT/0003.mp3'te belirli mp3'lerin reklamını yapın; Dosya Adı(0~65535)
  delay(1000);
  myDFPlayer.stopAdvertise(); //reklamı durdur
  delay(1000);
  myDFPlayer.playLargeFolder(2, 999); //SD:/02/004.mp3'te belirli mp3 çal; Klasör Adı(1~10); Dosya Adı(1~1000)
  delay(1000);
  myDFPlayer.loopFolder(5); //SD:/05 klasöründeki tüm mp3 dosyalarını döngüye sokun.
  delay(1000);
  myDFPlayer.randomAll(); //Rastgele tüm mp3 çal.
  delay(1000);
  myDFPlayer.enableLoop(); //döngüyü etkinleştir.
  delay(1000);
  myDFPlayer.disableLoop(); //döngüyü devre dışı bırak.
  delay(1000);

  //----Read imformation----
  Serial.println(myDFPlayer.readState()); //mp3 durumunu oku
  Serial.println(myDFPlayer.readVolume()); //mevcut hacmi oku
  Serial.println(myDFPlayer.readEQ()); //EQ ayarını oku
  Serial.println(myDFPlayer.readFileCounts()); //SD karttaki tüm dosya sayılarını oku
  Serial.println(myDFPlayer.readCurrentFileNumber()); //geçerli oynatma dosya numarasını oku
  Serial.println(myDFPlayer.readFileCountsInFolder(3)); //SD klasöründeki dosya sayılarını oku:/03
}

void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
    myDFPlayer.next();  //Her 3 saniyede bir sonraki mp3'ü çal.
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Farklı hataları ve durumları işlemek için DFPlayer'dan ayrıntı mesajını yazdırın.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Zaman asimi!"));
      break;
    case WrongStack:
      Serial.println(F("Yanlis Yigin!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Kart Takili!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Kart Kaldirildi!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Kart Cevrimici!"));
      break;
    case DFPlayerUSBInserted:
      Serial.println("USB Takili!");
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Kaldirildi!");
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Sayi:"));
      Serial.print(value);
      Serial.println(F(" Oynatma bitti!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerHatasi:"));
      switch (value) {
        case Busy:
          Serial.println(F("Kart bulunamadi"));
          break;
        case Sleeping:
          Serial.println(F("Uyuyor"));
          break;
        case SerialWrongStack:
          Serial.println(F("Yanlıs Yigin"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Kontrol Toplami Eslesmiyor"));
          break;
        case FileIndexOut:
          Serial.println(F("Dosya Dizini Sinir Disi"));
          break;
        case FileMismatch:
          Serial.println(F("Dosya bulunamadi"));
          break;
        case Advertise:
          Serial.println(F("Reklamda"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
  
}