سلام به همه شما مایکروالکامی ها. توی این مطلب قصد دارم آموزش راه اندزای ماژول پخش صوت یا آهنگ 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
پایه های ماژول
مشخصات پایه های ماژول
پایه های 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 وصل کنید.
برای دانلود دیتاشیت این ماژول میتوانید از این لینک استفاده کنید.
نام گذاری فایل و فولدر های روی مموری
همانطور که در ابتدای مطلب نیز ذکر شد، این ماژول قابلیت خواندن 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
- فرمت ارسال
- کنترل از طریق ارسال کامند
- Serial Query Cmd
حالت کاری AD KEY Mode
در این حالت بجای استفاده از صفحه کلید های ماتریسی به پورت AD ماژول DFPlayer مستقیما برای هر فانکشن کاری ماژول یک پوش باتن را با سری کردن یک مقاومت به پایه ADKEY1 و ADKEY2 متصل میکنند. برای این حالت باید از مدار زیر برای اتصال کلید ها استفاده نمود.
برای آشنایی با نحوه و وظیفه هر کدام از کلید های 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@) رو هم منشن کنید.
سلام برای استوپ و پاس کردن موزیک و تغییر مد اکلایزر از طریق i/o مد راهی وجود داره ایا؟کدوم پایه ها رو اتصال بدم این اتفاق ها می افته؟
سلام، ظاهرا نه. برای pause کردن میتونید از قسمت “حالت کاری AD KEY Mode” استفاده کنید. طبق دیتاشیت از کلید K4 برای pause/play استفاده شده.
سلام من یک بلندگو ۴ اهم ۱۵ وات رو به df player وصل کردم و این ماژول خیلی خیلی داغ میکنه
صدا رو هم روی آخرین حد گذاشتم
فکر میکنید مشکل از کجاست؟
مشکل اینجاس که شما داری فشار زیادی رو روی ماژول قرار میدی، بهتره از یک آمپلی فایر برای اینکار استفاده کنید.
توان بلندگو زیاده و توان خروجی df player محدود، علاوه بر این باید به امپدانس خروجی ماژول هم دقت کنید که با بلندگو برابر باشه تا حداکثر انتقال توان انجام بشه.
سلام یه سوال داشتم
زمانی که رم میزارم داخل ماژول ال ای دی
ماژول روشن میشه و صدا ندارم مشکل از کجاست!؟
سلام، برای پخش باید بهش دستور بدید. از کدوم حالت راه اندازی استفاده میکنید؟
سلام از ،مود I/O برای راه اندازی اسفاده کردم