راه اندازی ماژول پخش صوت DFPlayer

آموزش کامل راه اندازی ماژول DFPlayer Mini
نوشته شده توسط

سلام به همه شما مایکروالکامی ها. توی این مطلب قصد دارم آموزش راه اندزای ماژول پخش صوت یا آهنگ DFPlayer رو خدمت شما عزیزان ارائه بدم. پس با من تا انتهای این مطلب همراه باشید. 

شاید در پروژه ای نیاز پیدا کرده باشید که یک اعلان صوتی یا چیزی شبیه به این را پخش کنید و باعث ارتباط بیشتر بین دستگاه و کاربر باشید. یکی از ماژول های خوب و کاربردی که میشه ازش استفاده کرد در این خصوص، ماژول پخش صوت DFPlayer هست. این ماژول دارای سوکت مموری هم هست و راحت فایل های صوتی مد نظر خودتون رو روی اون ریخته و میتونید ازش استفاده کنید.

برای استفاده از این ماژول دو راه وجود داره، اول اینکه میتونید از این ماژول بدون نیاز به میکروکنترلر و برنامه نویسی استفاده کنید. دوم اینکه میتونید اون رو به میکروکنترلر مورد استفاده خودتون وصل کنید و هر وقت نیاز داشتید با استفاده از برنامه نویسی کاربرد خاص خودتون رو استفاده کنید.

مثلا میتونید با استفاده از برنامه نوسی براحتی به آهنگ بعدی یا قبلی برید. یا اهنگ را متوقف یا دوباره پخش کنید. یا حتی میزان بلندی صدای خروجی ماژول رو هم کنترل کنید. یا حتی میتونید حالت اکوالایزر اون رو نیز تغییر بدید.


وسایل مورد نیاز


معرفی ماژول DFPlayer

ماژول DFPlayer یک ماژول پخش آهنگ یا صوت از طریق رابط سریال هست که از سوکت مموری در طراحی اون استفاده شده است. پس براحتی میتونید مموری را بدون دردسر و کار اضافی به اون وصل کنید و از کار با این ماژول لذت ببرید.

نوع سوکت مموری ماژول DFPlayer از نوع Micro SD هست. این ماژول از مموری Micro SD تا 32 گیگابایت حافظه با فرمت FAT16 و FAT32 پشتیبانی میکند.

ویژگی های ماژول DFPlayer

  • ولتاژ کاری 3.2-5 ولت DC
  • مصرف جریان کم
  • قابلیت پخش صوت با فرمت های MP3 و WAV
  • سطح بندی ولوم صدای خروجی تا 30 سطح
  • دارای 10 حالت EQ یا Equalizer
  • پشتیبانی از 100 فولدر ذخیره شده در مموری
  • قابلیت ذخیره تا 1000 آهنگ در هر فولد ذخیره شده در مموری
  • پشتیبانی از Sampling Rate های 8KHz – 11.025KHz – 12KHz – 16KHz – 22.05KHz – 24KHz – 32KHz – 44.1KHz – 48KHz
  • داشتن DAC 24bit برای پخش صدای استریو
  • پشتیبانی از رابط سریال برای کنترل ماژول و باودریت 9600
  • پشتیبانی از مموری Micro SD تا 32 گیگابایت و فرمت های FAT16 و FAT32
  • دارای پین خروجی برروی برد برای نشان دادن پخش یا عدم پخش آهنگ

مد های کاری ماژول DFPlayer

  • Serial Mode
  • AD KEY Mode
  • I/O Mode

پایه های ماژول

مشخصات پایه های ماژول پخش صوت DFPlayer
مشخصات پایه های ماژول پخش صوت DFPlayer

مشخصات پایه های ماژول

مشخصات پایه های ماژول پخش آهنگ DFPlayer
مشخصات پایه های ماژول پخش آهنگ DFPlayer

پایه های ADKEY1 و ADKEY2

از این پایه ها برای استفاده در حالت کاری AD KEY Mode استفاده می‌شود. 

پایه های IO1 و IO2 

از این پایه ها برای استفاده در حالت کاری I/O Mode استفاده می‌شود. 

پایه های +USB و -USB

از این پایه ها برای اتصال فلش مموری به ماژول استفاده میکنیم. در این حالت ماژول DFPlayer ما نقش مموری ریدر را در حقیقت ایفا خواهد کرد. پایه های VCC و GND فلش را هم باید به پایه های VCC و GND ماژول متصل کرد.

پایه های SPK1 و SPK2

از این پایه های برای اتصال بلندگو 8 اهم به ماژول برای پخش صدا استفاده میکنیم.

پایه های DAC_R و DAC_L

در حقیقت این پایه ها همان DAC 24bit هستند و شما میتوانید با نصب 2 بلندگو به آنها، از پخش آهنگ به صورت استریو و با کیفیت بیشتر استفاده کنید. همینطور میتوانید از این پایه ها برای نصب جک هدفون بهشون استفاده کنید.

در صورتی که بخواید از ماژول بعنوان یک اسپیکر استفاده کنید (مود AUX) میتوانید از این دو پایه نیز استفاده کنید. برای استفاده از این حالت باید پایه های Right و Left جک هدفون رو به این دو پایه وصل کنید.

برای استفاده از این حالت باید اینگونه عمل کنید که پایه Right جک هدفون به پایه DAC_R و پایه Left جک هدفون به پایه DAC_L و بلندگو خود را به پایه های SPK1 و SPK2 وصل کنید.

مشخصات پایه جک هدفون 3 پین
مشخصات پایه جک هدفون 3 پین

برای دانلود دیتاشیت این ماژول میتوانید از این لینک استفاده کنید.


نام گذاری فایل و فولدر های روی مموری

همانطور که در ابتدای مطلب نیز ذکر شد، این ماژول قابلیت خواندن 100 فولدر و 1000 آهنگ در هر فولدر را دارد. برای اینکه ماژول بتواند فایل های روی مموری رو بخواند باید در فرمت صحیح و مد نظر ماژول آنها را ذخیره کنیم.


نام گذاری فولدر ها

نام هر فولدر باید تنها یک عدد دو رقمی بدون هیچ کارارکتر اضافی دیگری باشد. نحوه نام گذاری فولدر ها باید از 1 تا 99 به شکل 01، 02 …. 99 باشد. حتما هم باید از 01 شروع بشه.


نام گذاری فایل داخل هر فولدر

نام هر فایل ذخیره شده در فولدر باید تنها یک عدد 3 رقمی بدون هیچ کارارکتر اضافی دیگری باشد. نحوه نام گذاری فایل ها باید از 1 تا 999 به شکل 001، 002 …. 999 باشد. حتما هم باید از 001 شروع بشه.

نحوه صحیح نام گذاری فولدر ها و فایل ها
نحوه صحیح نام گذاری فولدر ها و فایل ها

حالت های کاری ماژول DFPlayer

این ماژول دارای 3 حالت کاری 1- I/O Mode -3 AD KEY Mode -2 Serial Mode می‌باشد.

حالت کاری Serial Mode

از این مد کاری برای ارتباط سریال غیر همزمان از طریق ارسال کامند های مربوطه از طریق پورت سریال با مشخصات زیر استفاده می‌شود.

Communication Standard: 9600 bps
Data bits: 1
Checkout: none
Flow Control: none

  • فرمت ارسال
حالت کاری سریال در ماژول DFPlayer
مشخصات ارسال داده در مد کاری سریال
  • کنترل از طریق ارسال کامند
کنترل ماژول از طریق کامند
کامند ها مورد نیاز
  • Serial Query Cmd
Serial Query Cmd
Serial Query Cmd

حالت کاری AD KEY Mode

در این حالت بجای استفاده از صفحه کلید های ماتریسی به پورت AD ماژول DFPlayer مستقیما برای هر فانکشن کاری ماژول یک پوش باتن را با سری کردن یک مقاومت به پایه ADKEY1  و ADKEY2 متصل میکنند. برای این حالت باید از مدار زیر برای اتصال کلید ها استفاده نمود.

اتصال کلید به پورت AD ماژول
اتصال کلید ها به پورت AD ماژول

برای آشنایی با نحوه و وظیفه هر کدام از کلید های K1 تا K20 به دیتاشیت این ماژول مراجعه نمایید.


حالت کاری I/O Mode

در این قسمت یک مدار ساده برای راه اندازی این ماژول آمده است.

مدار ساده راه اندازی ماژول
مدار ساده راه اندازی ماژول

شماتیک اتصلات ماژول DFPlayer

در هنگام اتصال و راه اندازی مدار، در عمل صدا دچار نویز بود و دچار قطعی میشد صدا که در در مدار زیر سر راه اتصال پایه Rx ماژول DFPlayer Mini به بورد آردوینو، یک مقاومت 1K سری شده است تا این مشکل حل شود. و حتما تمام پوش باتن ها رو اول به مدار متصل کنید و بعدا نسبت به راه اندازی و روشن کردن ماژول اقدام کنید. در غیر اینصورت ماژول مدام قطع میشه (برای من که اینجوری میشد).

شماتیک مدار
شماتیک مدار

کد نویسی

تا اینجای مطلب با نحوه راه اندازی و فراهم کردن سخت افزار مورد نیاز، ویژگی های ماژول DFPlayer آشنا شدیم. در این قسمت از کد های قرار داده شده زیر برای پخش آهنگ استفاده خواهیم کرد. 

برای راه اندازی این ماژول کتابخانه های آماده ای هم هست که براحتی بتونید از آنها استفاده کنید. ولی در این مطلب استفاده نشده.

#include "SoftwareSerial.h"

SoftwareSerial mySerial(10, 11);

# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW

int buttonNext = 2;
int buttonPause = 3;
int buttonPrevious = 4;
int buttonVolUp = 5;
int buttonVolDown = 6;
int buttonMute = 7;

boolean isPlaying = false;
boolean isMute = false;
int nowVol = 15;

void setup () {

  Serial.begin(9600);

  pinMode(buttonPause, INPUT);
  pinMode(buttonNext, INPUT);
  pinMode(buttonPrevious, INPUT);
  pinMode(buttonVolUp, INPUT);
  pinMode(buttonVolDown, INPUT);
  pinMode(buttonMute, INPUT);

  digitalWrite(buttonPause, HIGH);
  digitalWrite(buttonNext, HIGH);
  digitalWrite(buttonPrevious, HIGH);
  digitalWrite(buttonVolUp, HIGH);
  digitalWrite(buttonVolDown, HIGH);
  digitalWrite(buttonMute, HIGH);

  mySerial.begin (9600);
  delay(1000);

  playFirst();
  isPlaying = true;

}


void loop () {

  if (digitalRead(buttonPause) == ACTIVATED) {
    if (isPlaying) {
      pause();
      isPlaying = false;
    } else {
      isPlaying = true;
      play();
    }
  }


  if (digitalRead(buttonNext) == ACTIVATED) {
    if (isPlaying) {
      playNext();
    }
  }


  if (digitalRead(buttonPrevious) == ACTIVATED) {
    if (isPlaying) {
      playPrevious();
    }
  }


  if (digitalRead(buttonVolUp) == ACTIVATED) {
    if (isPlaying) {
      if (nowVol < 30) {
        nowVol = nowVol + 1;
        execute_CMD(0x04, 0, nowVol);
        delay(500);
      }
    }
  }


  if (digitalRead(buttonVolDown) == ACTIVATED) {
    if (isPlaying) {
      if (nowVol > 0) {
        nowVol = nowVol - 1;
        execute_CMD(0x05, 0, nowVol);
        delay(500);
      }
    }
  }


  if (digitalRead(buttonMute) == ACTIVATED) {
    if (isPlaying) {
      if (!isMute) {
        execute_CMD(0x06, 0, 0);
        isMute = true;
        delay(1000);
      } else {
        execute_CMD(0x06, 0, nowVol);
        isMute = false;
        delay(1000);
      }
    }
  }

}

void playFirst() {
  execute_CMD(0x3F, 0, 0);
  delay(500);
  setVolume(15);
  delay(500);
  execute_CMD(0x11, 0, 1);
  delay(500);
}

void pause() {
  execute_CMD(0x0E, 0, 0);
  delay(500);
}

void play() {
  execute_CMD(0x0D, 0, 1);
  delay(500);
}

void playNext() {
  execute_CMD(0x01, 0, 1);
  delay(500);
}

void playPrevious() {
  execute_CMD(0x02, 0, 1);
  delay(500);
}

void setVolume(int volume) {
  execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
  delay(2000);
}

void execute_CMD(byte CMD, byte Par1, byte Par2) {  // Excecute the command and parameters

  // Calculate the checksum (2 bytes)
  word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);

  // Build the command line
  byte Command_line[10] = {
    Start_Byte,
    Version_Byte,
    Command_Length,
    CMD,
    Acknowledge,
    Par1,
    Par2,
    highByte(checksum),
    lowByte(checksum),
    End_Byte
  };

  //Send the command line to the module
  for (byte k = 0; k < 10; k++) {
    mySerial.write( Command_line[k]);
  }
}

مدار مونتاژ شده

مدار مونتاژ شده
مدار مونتاژ شده

همچنین شما میتونید نحوه عملکرد ماژول DFPlayer را در زیر مشاهده کنید.

امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.

۷ دیدگاه برای “راه اندازی ماژول پخش صوت DFPlayer

  1. سلام برای استوپ و پاس کردن موزیک و تغییر مد اکلایزر از طریق i/o مد راهی وجود داره ایا؟کدوم پایه ها رو اتصال بدم این اتفاق ها می افته؟

  2. سلام من یک بلندگو ۴ اهم ۱۵ وات رو به df player وصل کردم و این ماژول خیلی خیلی داغ میکنه
    صدا رو هم روی آخرین حد گذاشتم
    فکر می‌کنید مشکل از کجاست؟

    1. مشکل اینجاس که شما داری فشار زیادی رو روی ماژول قرار میدی، بهتره از یک آمپلی فایر برای اینکار استفاده کنید.
      توان بلندگو زیاده و توان خروجی df player محدود، علاوه بر این باید به امپدانس خروجی ماژول هم دقت کنید که با بلندگو برابر باشه تا حداکثر انتقال توان انجام بشه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.