چرا DFPlayer با اسم دلخواه آهنگ ها رو پخش میکنه ولی وقتی به میکرو وصلش میکنیم روی اسم فایل و پوشه گیر میده؟

Collapse
X
 
  • زمان
  • نمایش
Clear All
new posts
  • دکتر شیبابا
    • 2022/11/04
    • 3

    #1

    چرا DFPlayer با اسم دلخواه آهنگ ها رو پخش میکنه ولی وقتی به میکرو وصلش میکنیم روی اسم فایل و پوشه گیر میده؟

    یکی از اون دردسرهای بامزه DFPlayer Mini دقیقا همین جاست

    فرض کنید چند تا فایل صوتی داریم با اسم های دلخواه مثل alarm.mp3 و welcome.mp3 و music.mp3

    فایل ها رو روی کارت حافظه میریزیم و ماژول رو بدون میکروکنترلر راه میندازیم. با کلیدهای Next و Previous هم آهنگ ها یکی یکی پخش میشن و همه چیز مرتبه.

    حالا همون ماژول رو به آردوینو وصل میکنیم و میخوایم با یه فرمان مشخص صدای هشدار رو پخش کنیم.

    اینجاست که ممکنه آهنگ اشتباهی پخش بشه یا اصلا خبری از صدا نباشه!

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

    چرا پخش مستقل با هر اسمی کار میکنه؟

    ماژول DFPlayer Mini علاوه بر ارتباط UART قابلیت کنترل مستقیم با کلیدهای IO و ADKEY رو هم داره.

    وقتی از کلیدهای Next و Previous استفاده میکنیم ماژول معمولا بین فایل های صوتی شناسایی شده جابه جا میشه.

    برای این کار لازم نیست حتما اسم فایل ها معنی خاصی داشته باشه.

    ماژول اطلاعات فایل ها رو از سیستم فایل کارت حافظه میخونه و میتونه بین اونها حرکت کنه.

    ولی یه نکته مهم وجود داره.

    ترتیب پخش لزوما براساس اسم فایل ها نیست و در بعضی فرمان ها به ترتیب ثبت فایل ها روی کارت حافظه بستگی داره.

    یعنی ممکنه فایلی که اسمش 0001.mp3 هست اولین آهنگ پخش شده نباشه!

    پس وقتی میکروکنترلر وارد ماجرا میشه چی تغییر میکنه؟

    در واقع خود ماژول عوض نشده. فقط روش انتخاب آهنگ فرق کرده.

    وقتی از طریق UART فرمان ارسال میکنیم چند روش مختلف برای انتخاب فایل داریم که هر کدوم قواعد خودشون رو دارن.

    مثلا در کتابخانه معروف DFRobotDFPlayerMini فرمان زیر وجود داره.

    myDFPlayer.play(1);

    این فرمان معمولا آهنگ شماره 1 رو براساس ترتیب داخلی فایل های شناسایی شده انتخاب میکنه و الزاما دنبال فایلی با اسم 0001.mp3 نمیگرده.

    پس اگه فایل ها رو با ترتیب متفاوت روی کارت حافظه کپی کرده باشیم ممکنه نتیجه چیزی نباشه که انتظار داریم.

    ولی فرمان زیر داستان متفاوتی داره.

    myDFPlayer.playMp3Folder(1);

    در فریمورهای سازگار این فرمان سراغ پوشه مخصوص MP3 میره و فایل شماره 0001.mp3 رو انتخاب میکنه.

    ساختار فایل ها باید به این شکل باشه.
    MicroSD
    └── MP3
    ├── 0001.mp3
    ├── 0002.mp3
    └── 0003.mp3

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

    مثلا

    myDFPlayer.playFolder(1, 2);

    در ماژول های سازگار با این پروتکل یعنی فایل 002.mp3 از پوشه 01 پخش بشه.

    ساختار کارت حافظه هم به این صورت میشه.
    MicroSD
    ├── 01
    │ ├── 001.mp3
    │ └── 002.mp3
    └── 02
    ├── 001.mp3
    └── 002.mp3

    طبق مستندات اصلی DFPlayer در این روش پوشه ها معمولا از 01 تا 99 شماره گذاری میشن و هر پوشه میتونه تا 255 فایل با شماره های سه رقمی داشته باشه.

    یه نکته ریز که حسابی دردسر درست میکنه!

    فرض کنید روی کارت حافظه 3 تا آهنگ داریم.

    اول فایل 0003.mp3 رو کپی میکنیم و بعد 0001.mp3 و در آخر 0002.mp3 رو.

    ممکنه وقتی فرمان play با شماره 1 رو میفرستیم فایل 0003.mp3 پخش بشه!

    چون در این روش شماره آهنگ میتونه به ترتیب ثبت فایل ها روی کارت وابسته باشه نه شماره ای که داخل اسم فایل نوشته شده.

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

    برای همین یکی از راه های کم کردن خطا اینه که کارت حافظه رو با FAT32 فرمت کنیم و فایل ها رو به ترتیب دلخواه دوباره کپی کنیم.

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

    آیا همه DFPlayer Mini ها دقیقا همین رفتار رو دارن؟

    اینجا باید حواسمون جمع باشه.

    بردهای مختلفی با اسم DFPlayer Mini توی بازار وجود دارن و ممکنه تراشه و فریمور داخلی اونها متفاوت باشه.

    برای همین پشتیبانی از بعضی فرمان ها و نحوه تفسیر شماره فایل همیشه یکسان نیست.

    حتی ممکنه یه برد با کلیدها کاملا درست کار کنه ولی با یه فرمان خاص از کتابخانه آردوینو نتیجه متفاوتی بده.

    پس اگه اسم گذاری رو درست انجام دادیم و باز هم فایل مورد نظر پخش نشد بهتره سازگاری فرمان و کتابخانه با نسخه ماژول رو هم بررسی کنیم.
  • پژمان خان
    • 2021/11/27
    • 2

    #2
    آره دیگه
    بدون میکرو میشه دی جی تا میکرو میاد بالا سرش میشه مسول بایگانی، شماره پرونده بده، شماره پوشه بده

    دیدگاه

    لطفا صبر کنید...