وحدة مشغل ملفات mp3

ماهي وحدة مشغل ملفات الـ mp3

هي عبارة عن وحدة صغيرة منخفضة السعر متصلة بمضخم صوت مدمج مع إخراج مبسط مباشرة الى السماعة. بالإمكان تشغيل هذه الوحدة كوحدة قائمة بذاتها مع بطارية متصلة ومكبر صوت وأزرار ضغط أو استخدامها مع متحكم إلكتروني دقيق أو لوحة تطوير مثل الأردوينو التي توفر خاصية ارسال/استقبال RX/TX  تواصل تسلسلي. وبالتالي من خلال أوامر تسلسلية بسيطة يمكن تشغيل ملفات ال mp3 المخزنة في الذاكرة وأداء وظائف أخرى مثل تشغيل الملفات الصوتية التالية أو السابقة أو التبديل العشوائي بينهم أوإيقاف الملف المشغل  حاليا وما إلى ذلك.  تدعم الوحدة بحد اقصى ذاكرة 32 جيجابايت.

التوصيل

نحتاج 4 أسلاك فقط للتوصيل بين الأردوينو و الوحدة. 

أردوينو نانووحدة mp3
5vVcc
GndGnd
D10Tx
D11Rx

أما السماعة يجب توصيلها بالوحدة عن طريق المنفذين SPK_1 و SPK_2

السماعة

في هذا الدرس سيتم استخدام السماعة المستخدمة للكمبيوتر (سماعة 

بمنفذ  USB ) حيث انها تعطي صوت أعلى و أوضح من السماعات الصغيرة. لتوصيل السماعة يجب اولا تزويدها بالطاقة عبر منفذ USB بعد ذلك تحتاج لقطع مخرج الصوت التقليدي (audio jack) وقم بتوصيل الأسلاك بـ  SPK_1 و SPK_2

المكتبة

لتسهيل التعامل مع وحدة مشغل mp3 تستخدم مكتبة DFRobotDFPayerMini.

يمكن تنزيل المكتبة عن طريق Library Manager  كما توضح الصورة. كما يمكن تحميل المكتبة بشكل ماشر  من موقع Github 

التمرين 1

في هذا التمرين يتم تشغيل جميع ملفات mp3 الموجودة في  الذاكرة بشكل عشوائي  متكرر. لاحظ استخدام مكتبة SoftwareSerial التي تسمح باستخدام  منافذ رقمية أخرى للاتصال التسلسلي. حيث يتم تمرير  ارقام المنافذ المختارة للكائن عند تعريفه (mySoftwareSerial(10, 11) في المثال). بعد ذلك يتم تعريف الكائن mDFPlayer  في حالة كان اتصال الأردوينو بالوحدة ناجحا يتم استخدام الأمر myDFPlayer.randomAll لتشغيل ملفات mp3 بشكل عشوائي ومتككر. أما إذا فشل الاتصال سيتم ارسال رسالة خطأ عبر شاشة السيريال بشكل متكرر.

 

لا تنسى وضع ملفات صوتية بصيغة mp3 داخل الذاكرة.

				
					#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup(){
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  Serial.println();
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with player.
      Serial.println(F("Unable to begin:"));
      while(true);}
  Serial.println(F("DFPlayer Mini online."));
  delay(500);
  myDFPlayer.randomAll();} //Random play all the mp3 

void loop(){}
				
			

التمرين 2

في هذا التمرين يتم تشغيل موسيقى معينة عند الضغط على أحد الأزرار. يوجد ثلاث أزرا كل منهم مخصص موسيقى محددة أما الرابع يستخدم لإيقاف تشغيل الموسيقى . لاحظ أن الأمر ()myDFPlayer.play يستخدم لتشغيل ملف صوتي محدد حيث يتم تمرير قيمة رقمية تمثل ترتيب الملف المراد تشغيله داخل الذاكرة. في حين يمكن اطفاء ايقاف الاصوات عن طريق الأمر  ()myDFPlayer.pause 

				
					#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
int Pause = 6;
int track1 = 5;
int track2 = 4;
int track3 = 3;

void setup(){
    pinMode(Pause, INPUT_PULLUP);
    pinMode(track1, INPUT_PULLUP);
    pinMode(track2, INPUT_PULLUP);
    pinMode(track3, INPUT_PULLUP);
    mySoftwareSerial.begin(9600);
    Serial.begin(115200);
    Serial.println();
    Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); //checking if the dfplay is connected and ready to play
    if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with player.
      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."));
    delay(500);}

void loop(){
  if (digitalRead(track1) == LOW) { myDFPlayer.play(1); delay(1000);} // button track1 is pressed play song 1
  else if (digitalRead(track2) == LOW) { myDFPlayer.play(2); delay(1000);} // button track2 is pressed play song 2
  else if (digitalRead(track3) == LOW) {myDFPlayer.play(3); delay(1000);} // button track3 is pressed play song 3
  else if (digitalRead(Pause) == LOW){myDFPlayer.pause();}} // button Pause is pressed pause all
				
			

التمرين 3

في هذا التمرين يتم قياس درجة الحرارة باستخدام الحساس DHT 22. عند ارتفاع درجة الحرارة عن الحد المعين يتم اصدار تبيه صوتي. كما يتم تشغيل ملف صوتي مختلف عند انخفاض درجة الحرارة عن الحد المسموح.  يجب تنزيل مكتبة DHT للتعامل مع الحساس DHT 22 حيث يمكن تنزيلها من الرابط التالي

لاحظ أنه يتم قراءة قيمة الحرارة من الحساس في المتغير t باستخدام الأمر 

()dht.readTemperature

				
					#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include "DHT.h"
#define DHTPIN 2 
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup(){
  
    mySoftwareSerial.begin(9600);    //checking if the dfplay is connected and ready to play
    Serial.begin(115200);
    dht.begin();
    Serial.println();
    Serial.println(F("DFRobot DFPlayer Mini Demo"));
    Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
    if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with player.
      Serial.println(F("Unable to begin:"));
      while(true);}
    Serial.println(F("DFPlayer Mini online."));
    delay(500);}

void loop(){
  float t = dht.readTemperature();
  Serial.println(t);
  if (t >25) {myDFPlayer.play(1); delay(2500);}
  if (t<10) {myDFPlayer.play(2); delay(2500);}}
				
			

استخدام المشغل بدون الأردوينو (previous/next)

يمكن تشغيل مشغل الـ mp3 دون الحاجة لأردوينو. يمكن تشغيل ملفات

 الـ mp3  بشكل متتالي (previous/next) او اختيار ملف mp3 محدد للتشغيل. يسمح المشغل باختيار اكثر من 14 ملف صوتي مختلف. تستخد المنافذ IO1

 و IO2 لتشغيل الملف الصوتي السابق\التالي كما يمكن من خلالها زيادة 

و تخفيض الصوت. كل ما نحتاجه مصدر للطاقة (من 3.2 إلى 5 فولت) وأزرار لإعطاء النبضات للمشغل 

لاحظ أن منافذ المشغل active Low أي أنها تعمل عند الحصول على نبضة LOW 

المنفذالوظيفة
IO1ضغطة خفيفة لتشغيل الملف السابق/ ضغطة طويلة لإنقاص الصوت
IO2ضغطة خفيفة لتشغيل الملف التالي/ ضغطة طويلة لزيادة الصوت

استخدام المشغل بدون الأردوينو (تحديد ملف MP3)

يمكن تحديد ملف من 14 ملف مختلف داخل الذاكرة عن طريق المنفذين ADKEY1 و ADKEY2 حيث يعمل المشغل على قراءة الدخل التماثلي الواصل للمنفذين ثم يقوم بتشغيل احد الملفات بناء على هذه المدخلات. يمكن توصيل الدخل بمقاومات بقيم مختلفة لتشغيل ملف معين. يمكنك ملاحظة أن ADKEY1 يمكن ان يتحكم بتشغيل الملفات من 1-4 بالإضافة لعدد من الخيارات كزيادة او انقاص الصوت. يمكن تشغيل الملفات من 5-14 عن طريق  ADKEY2.

التمرين 4

في هذا التمرين سنقوم بوضع 6 ملفات صوتية مختلفة (لتوضيح الفكرة كل ملف يحتوي على العدد بشكل صوتي). بعد ذلك سنستخدم اربع ازرار مختلفة مع المقاومات لتشغيل الملفات 2،3،5،6 عند الضغط على الزر المخصص لكل ملف. لتشغيل الملفات 2 و 3 سنتحتاج لمقاومات 3k (مع الزر المخصص لـ 2) و 6.2k (مع الزر المخصص لـ 3)  وسنوصل للزر ADKEY1. لتشغيل الملفات 5 و 6 لن نحتاج مقاومة لتشغيل الزر المخصص لـ 5 ونستخدم 3K لتشغيل 6.

لاحظ أن الملف 1 هو أول ملف تم نسخه على بطاقة الذاكرة وهكذا.اي ان ترتيب الملفات يعتمد على ترتيب نسخهم لبطاقة الذاكرة.

 

التمرين 5

في هذا التمرين سنقوم بتشغيل ملف صوتي تنبيهي يعمل وفقا لحساس اللهب. يعطي الحساس HIGH عند عدم وجود اللهب و LOW عند وجوده. حيث سنقوم بربط خرج الحساس بالمنفذ ADKEY1 الخاص بالمشغل لتشغيل ملف الـ MP3 الخاص بالتنبيه. عند استشعار اللهب سيعطي الحساس LOW مما يحفز المشغل لتشغيل الملف الخاص بالتحذير.

 

انتقل إلى المتجر

وحدة مشغل ملفات MP3

25.00 ريال
شاهد المثال

أردوينو نانو (بمنافذ مثبتة)

40.00 ر.س

سماعات بمنفذ USB

25.00 ر.س

حساس حرارة ورطوبة DHT22

45.00 ر.س
انتقال إلى الأعلى