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

تحلیل و بررسی کتابخانه 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، نوبت به بررسی یک نمونه برنامه می رسد. برنامه زیر امکانات مختل این کتابخانه، نظیر تعیین ولوم صدا، افزایش و کاهش صدا، پخش موزیک و… را اجرا می کند.

 


جمع بندی


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

 


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


برد آردوینو UNO

برد آردوینو MEGA

ماژول DFPLAYER MINI

 

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

 

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

معین صابری

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

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

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