تحلیل کتابخانه

تحلیل و بررسی کتابخانه DFPlayerMini.h

نوشته شده توسط معین صابری

ماژول پخش صدای DFMINI، یکی از ماژول های کاربردی جهت پخش صدا و آهنگ از طریق کارت SD است. به کمک این ماژول می توانید به سادگی هرچه تمام تر، فایل های صوتی ذخیره شده در کارت SD را با اتصال بلندگو به ماژول، پخش کنید. پیش از این با استفاده از ماژول DFPlayer، پروژه های مختلفی را اجرا کرده ایم. به عنوان مثال، در آموزشی، به طراحی و پیاده سازی یک سیستم نوبت دهی بانکی با پخش صدای نوبت از طریق این ماژول پرداخته ایم. برای مطالعه این آموزش، می توانید بر روی این لینک، کلیک کنید. در آموزشی دیگر، یک سیستم اعلام حریق و دزدگیر با قابلیت پخش صدای ضبط شده در حین تماس تلفنی، طراحی و پیاده سازی کرده ایم. این آموزش را هم در این لینک می توانید دنبال کنید. همچنین، با کلیک بر روی این لینک، می توانید آموزش کنترل رله از طریق DTMF و دریافت گزارش صوتی وضعیت رله هنگام تماس را مطالعه نمایید. برای راه اندازی و کار با ماژول DFPLAYER، کتابخانه تحت آردوینو به نام کتابخانه DFPlayerMini.h توسعه یافته است. این کتابخانه دارای توابع بسیاری جهت پخش، تنظیم نوع پخش، افزایش/کاهش صدا و…. است. در این آموزش به تحلیل و بررسی این کتابخانه می پردازیم. طبق رویه معمول آموزش های تحلیل کتابخانه، ابتدا نحوه نصب مورد بررسی قرار می گیرد. پس از این مرحله به بررسی بردهای مورد پشتیبانی و الزامات فنی پرداخته و در ادامه به ارائه و تحلیل توابع کاربردی این کتابخانه اشاره می شود. در نهایت با ارائه مثالی از کاربرد، به آموزش خاتمه می دهیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


نصب کتابخانه DFPlayerMini


به منظور استفاده از کتابخانه DFPlayerMini.h، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.

Analysis of DFPlayerMini.h library

 

مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت DFRobotDFPlayerMini را تایپ کنید. پس از چند لحظه کتابخانه مورد نظر نمایش داده می شود. با کلیک بر  روی گزینه install، این کتابخانه را نصب کنید.

نصب کتابخانه DFPlayerMini.h در آردوینو - دیجی اسپارک

 

پس از نصب کتابخانه، نوبت به تحلیل و بررسی آن می رسد. بنابراین در قسمت بعدی به الزمات فنی ماژول DF PLAYER MINI و بردهای مورد پشتیبانی آن، می پردازیم.

توجه: ورژن کتابخانه مورد بررسی در این آموزش، ۱٫۰٫۵ است.

 


بردهای مورد پشتیبانی و نکات فنی


در این قسمت به بررسی بردهای مورد پشتیبانی کتابخانه DFPlayerMini می پردازیم. از آنجاییکه این ماژول دارای پورت سریال UART جهت دریافت فرامین است، لذا این کتابخانه نیز فرامین پخش، توقف، تنظیم صدا و…. را از طریق پورت سریال به ماژول ارسال می کند. برای ایجاد ارتباط بین برد میکروکنترلری و این ماژول، می بایست از پورت سریال UART برد خود استفاده کنید. البته، برای کار با ماژول DFPLAYER، این امکان وجود دارد که از پورت سریال نرم افزاری(کتابخانه SoftwareSerial) نیز استفاده کرده و ارتباط بین ماژول و برد خود را فراهم سازید. این کتابخانه از بردهای آردوینو UNO، MEGA، LEONARDO پشتیبانی می کند. با توجه به پروتکل ارتباطی سریال و قابلیت تعریف سریال نرم افزاری، انتظار می رود که از این کتابخانه در بردهای دیگر نظیر ESP بتوان بهره برد. اما در نظر داشته باشید که جهت ارتباط با برد ESP، الزامات مربوط به سطح منطقی ولتاژ ماژول و برد ESP را رعایت نمایید. با توجه به ولتاژ کاری ماژول DFPLAYER که بین ۳٫۲ الی ۵ ولت قرار می گیرد، می توان انتظار داشت که این ماژول با ESP، راه اندازی شود. جهت اطلاعات بیشتر در رابطه با سطح منطقی ولتاژ، آموزش آن را با کیلک بر روی این لینک، مطالعه نمایید.

روش استفاده از کتابخانه DFPlayerMini در برد آردوینو - دیجی اسپارک

 


توابع کلیدی کتابخانه


در این قسمت به بررسی توابع کلیدی کتابخانه DFPlayerMini ماژول افزاینده GPIO با نام DFRobotDFPlayerMini می پردازیم. در رابطه با توابع، در نظر بگیرید که ورودی ها از سمت چپ به راست، به ترتیب شماره های یک، دو، سه و… را به خود اختصاص می دهند. به عبارت دیگر، منظور از ورودی اول سمت چپ ترین ورودی بوده و سایر ورودی ها از ۲ به بعد، به خود شماره اختصاص می دهند.

تابع ورودی شرح
bool begin(Stream& stream) ورودی از نوع کلاس stream( پورت سریال) به کمک این تابع، متابخانه راه اندازی شده و با ماژول DF ارتباط برقرار می کند. در ورودی این تابع، می بایست پورت سریال(سخت افزاری/نرم افزاری) را تعیین کنید.
void setTimeOut(unsigned long timeOutDuration) ورودی از نوع بدون علامت long به کمک این تابع می توانید مدت زمان انتظار برای دریافت پاسخ از ماژول را تعیین کنید. این مدت زمان بر حسب میلی ثانیه است.
void next() بدون ورودی به کمک این تابع می توانید آهنگ بعدی که در دایرکتوری / قرار دارد را پخش کنید.
void previous() بدون ورودی به کمک این تابع می توانید آهنگ قبلی که در دایرکتوری / قرار دارد را پخش کنید.
  void play(int fileNumber=1) ورودی از نوع صحیح به کمک این تابع می توانید آهنگی که در دایرکتوری / قرار دارد را پخش کنید. ورودی این تابع شماره آهنگ را تعیین می کند. می توانید ورودی این تابع را خالی بگذارید، در این صرت اولین آهنگ پخش خواهد شد.
void volumeUp() بدون ورودی به کمک این تابع شدت صدای خروجی یک واحد افزایش می یابد
void volumeDown() بدون ورودی به کمک این تابع شدت صدای خروجی یک واحد کاهش می یابد
void volume(uint8_t volume) ورودی از نوع بدون علامت ۸ بیتی به کمک این تابع می توانید میزان شدت صدای خروجی را تنظیم کنید. این مقدار بین ۰ الی ۳۰ (به ترتیب کمترین الی بیشترین) قابل قبول خواهد بود.
void EQ(uint8_t eq); ورودی از نوع بدون علامت ۸ بیتی به کمک این تابع می توانید نوع اکولایزر پخش صدا را تعیین کنید. برای این مورد، نوع اکولایزر در ورودی قرار می گیرد. برای تعیین نوع اکولایزر، ثوابتی تعریف شده، این ثوابت به همراه عدد معادل آن عبارتند از:

DFPLAYER_EQ_POP 1
DFPLAYER_EQ_ROCK 2
DFPLAYER_EQ_JAZZ 3
DFPLAYER_EQ_CLASSIC 4
DFPLAYER_EQ_BASS 5

 

 

 

 

 

 

  void loop(int fileNumber) ورودی از نوع صحیح به کمک این تابع می توانید یک آهنگ را به طور مداوم پخش کنید. شماره آهنگ در ورودی قرار می گیرد. این آهنگ از دایرکتوری / پخش خواهد شد.
void outputDevice(uint8_t device)  ورودی از نوع بدون علامت ۸ بیتی به کمک این تابع نوع کارت SD تعیین می شود. برای این منظور، نوع کارت SD می بایست در ورودی تابع قرار گیرد. برای تعیین نوع اکولایزر، ثوابتی تعریف شده، این ثوابت به همراه عدد معادل آن عبارتند از:

DFPLAYER_DEVICE_U_DISK 1

DFPLAYER_DEVICE_SD 2

DFPLAYER_DEVICE_AUX 3

DFPLAYER_DEVICE_SLEEP 4

DFPLAYER_DEVICE_FLASH 5

 

  void pause() بدون ورودی به کمک این تابع می توانید آهنگ در حال پخش را متوقف کنید.
void start() بدون ورودی به کمک این تابع می توانید آهنگ متوقف شده را مجددا پخش کنید.
void sleep() بدون ورودی به کمک این تابع ماژول در حالت کم مصرف قرار می گیرد.
void reset() بدون ورودی این تابع ماژول را ریست می کند. به کمک این تابع می توان از مد کم مصرف خارج شد و ماژول را مجددا راه اندازی نمود.
void playFolder(uint8_t folderNumber, uint8_t fileNumber) ورودی اول از نوع بدون علامت ۸ بیتی برای نام فولدر

ورودی دوم از نوع بدون علامت ۸ بیتی برای نام فایل

به کمک این تابع می توانید یک فایل از یک فولدر را اجرا کنید. توجه داشته باشید که نام فایل و فولدر باید به صورت عدد باشند. در این تابع نام فولدر در ورودی اول و نام فایل در ورودی دوم قرار می گیرد.
void playLargeFolder(uint8_t folderNumber, uint16_t fileNumber) ورودی اول از نوع بدون علامت ۸ بیتی برای نام فولدر

ورودی دوم از نوع بدون علامت ۸ بیتی برای نام فایل

به کمک این تابع می توانید یک فایل از یک فولدر حجیم را اجرا کنید.  این ماژول می تواند تا ۱۰۰ فولدر و در هر فولدر تا ۱۰۰۰ آهنگ را شناسایی و اجرا کند. چنانچه فولدر شما فایل های زیادی دارد، توصیه می شود از این تابع استفاده کنید. توجه داشته باشید که نام فایل و فولدر باید به صورت عدد باشند. در این تابع نام فولدر در ورودی اول و نام فایل در ورودی دوم قرار می گیرد.
void loopFolder(int folderNumber) ورودی از نوع صحیح به کمک این تابع می توانید فایل های یک  فولدر را به صورت مکرر(repeat) اجرا کنید. برای این مورد، می بایست نام فولدر در ورودی قرار گیرد.
void disableLoop() بدون ورودی این تابع اجرای تکرار آهنگ ها را متوقف می نماید.
void enableDAC() بدون وردی این تابع مد DAC جهت اتصال هدفون را فعال می کند.
void disableDAC() بدون ورودی این تابع مد DAC را غیر فعال می کند.

توجه: برای پخش آهنگ درون فولدر، نام فولدر می بایست به صورت عدد از ۱ شروع شود. اما نام فایل ها به صورت ۳ رقمی می باست تعیین شده باشند. به عوان مثال، فایل شماره یک به صورت ۰۰۱ و با پسنود فایل در ادامه شماره، تعیین می گردد.

 


اجرای یک نمونه برنامه


پس از معرفی توابع کلیدی کتابخانه DFPlayerMini، نوبت به بررسی یک نمونه برنامه می رسد. برنامه زیر امکانات مختل این کتابخانه، نظیر تعیین ولوم صدا، افزایش و کاهش صدا، پخش موزیک و… را اجرا می کند.

#include <SoftwareSerial.h>  //کتابخانه سریال نرم افزاری جهت ارتباط با ماژول mp3
#include "DFRobotDFPlayerMini.h"  // فراخوانی کتابخانه DF
SoftwareSerial mySoftwareSerial(10, 11); // انتخاب پایه های ۱۰ و ۱۱ جهت ارتباط سریال
DFRobotDFPlayerMini myDFPlayer;     //انتخاب یک شی از کلاس DF PLAYER جهت 
void setup() {
  Serial.begin(9600);
  mySoftwareSerial.begin(9600);  //باودریت پیشفرض ماژول mp3 عدد ۹۶۰۰ است
  //*********************************************** initializing df
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //در صورتیکه ماژول 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 با موفقیت راه اندازی شد
  //************************************************
  myDFPlayer.setTimeOut(500); //تنظیم مدت زمان ۵۰۰ میلی ثاینه برای دریافت پاسخ از ماژول mp3
    myDFPlayer.play();
  myDFPlayer.volume(20);  //تنظیم ولوم ماژول پخش صدا، میزان ولوم بین ۰ الی ۳۰ قابل انتخاب است
  myDFPlayer.volumeUp(); //بالابردن صدا
  myDFPlayer.volumeDown(); //پایین آوردن صدا
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);  //تنظیم اکولایز صدادر حالت نرمال
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);  //تعیین نوع دیوایس ذخیره سازی که در اینجا کارت SD است
  //***********************************************
   myDFPlayer.playFolder(16, 1); //پخش آهنگ شماره ۱ از فولدر شماره ۱۶
      delay(2000);
      myDFPlayer.playFolder(15, 2);  //پخش دومین آهنگ از فولدر شماره ۱۵

}

void loop() {

}

 


جمع بندی


در این آموزش به تحلیل و بررسی کتابخانه DFRobotDFPlayerMini  پرداختیم. این کتابخانه، جهت راه اندازی و کار با ماژول DFPLAYER تحت آردوینو به کار می رود. به کمک این کتابخانه می توانیم به سادگی و بدون درگیر شدن با جزییات دستورات ماژول، به پخش صدا، تنظیم میزان شدت صدا، تنظیم اکولایزر صدا و…. پرداخته و تمرکز را بر قسمت های اصلی پروژه قرار دهیم. ابتدای این آموزش را با نحوه نصب کتابخانه شروع کردیم. در ادامه به بررسی الزامات فنی و بردهای مورد پشتیبانی کتابخانه، پرداختیم. پس از این مرحله، توابع کلیدی و کاربردی این کتابخانه را از نظر گذراندیم. در نهایت با ارائه مثالی از کاربرد، به بحث خاتمه دادیم. 

 


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


برد آردوینو UNO

برد آردوینو MEGA

ماژول DFPLAYER MINI

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۶ دیدگاه

  • سلام. من هرکاری میکنم توی سریال مانیتور ارور Unable to begin
    ۱٫Please recheck the connection!
    ۲٫Please insert the SD card! رو میده. در حالی که SD کارت رو وارد دی اف پلیر کرده ام. مشکل چیه به نظر شما؟!

    • سلام
      محتمل ترین مشکل، ارتباطات سریال هست. ارتباط سریال را چگونه بین آردوینو و ماژول برقرار کرده اید؟

      • برای کُدش همون نمونه کدی که شما گذاشته بودید رو استفاده کردم فقط شماره پای های ارتباط رو عوض کردم. از اون دو تا پایه هم اتصال برقرار کردم با پایه های TX و RX ماژول…

        • تغذیه ماژول SD را چطور تامین می کنید؟
          آیا بین پایه های RX و TX مقاومت قرار داده اید؟

          • تغذیه رو با پایه ۵V یا ۳٫۳V آردوئینو؛ بین پایه RX و TX مقاومت قرار نداده ام تا الان، فکر نمی کردم خیلی اهمیت داشته باشه. اون مقاومت خیلی مهمه؟!

            • صد البته
              حتما مقاومت ها را قرار دهید
              در ضمن تغذیه ماژول MP3 را چگونه تامین می کنید؟

                • لطفا قدم به قدم آموزش پیش روید. در آموزش اشاره شده که تغذیه ماژول DF PLAYER جداگانه تامین شود. مطابق آموزش پیش روید.

            • با اطلاعاتی که می دهید، مقاومت ها به درستی متصل نشده اند، لطفا مطابق آموزش پیش روید.

    • خیر
      لطفا به تصویر شماتیک به دقت نگاه کنید. در ادامه تصویر شماتیک، اتصالات را شرح دادیم. پایه RX و TX ماژول DF PLAYER باید هر کدام با مقاومت یک کیلو اهمی به آردوینو متصل شود.

  • هم برای TX و RX مقاومت گذاشتم و هم برای تغذیه از منبع خارجی استفاده کردم، ولی همون مشکل هست هنوز؛ فقط یه نکته که هست اینه که درست در لحظه ای که در سریال مانیتور ارور نمایش داده میشه، یک LED ریزی که روی ماژول هست روشن میشه، این نشون میده که ارتباط سریال درسته، تنها گزینه ای که می‌مونه SD کارت هست. برای اون چه مشکلی ممکنه باشه؟ نام گذاری پوشه ها و فایل های صوتی داخل SD کارت رو چجور باید انجام بدم؟ فرمت SD کارت چی باید باشه؟

    • خطای روی سریال مانیتور چه عبارتی را نمایش می دهد؟ لطفا متن آن را در اینجا قرار دهید.
      SD کارت را فرمت کنید. حجم حافظه آن از ۳۲ گیگ بیشتر نباشد. در رابطه نحوه نام گذاری پوشه ها، قسمت اجرای پروژه را بار دیگر تاکید می کنم به دقت!! مطالعه کنید!!!!!