কোড অনুসন্ধান

ESP32 টিউটোরিয়াল ৪১/৫৫ - মাইক্রো এসডি কার্ড ব্যবহার করে এমপি৩ প্লেয়ার | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

ESP32 টিউটোরিয়াল ৪১/৫৫ - মাইক্রো এসডি কার্ড ব্যবহার করে এমপি৩ প্লেয়ার | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

এই টিউটোরিয়ালে, আমরা ESP32 মাইক্রোকন্ট্রোলার এবং একটি মাইক্রো SD কার্ড ব্যবহার করে একটি MP3 প্লেয়ার তৈরি করব। ESP32 মাইক্রো SD কার্ডে সংরক্ষিত অডিও ফাইল পড়বে এবং একটি অডিও অ্যামপ্লিফায়ার এবং স্পিকারের মাধ্যমে শব্দ আউটপুট করবে। এই প্রকল্পটি বিভিন্ন উপাদান একত্রিত করে, যার মধ্যে রয়েছে ESP32, একটি অডিও অ্যামপ্লিফায়ার এবং একটি মাইক্রো SD কার্ড, যাতে আপনি সহজভাবে সঙ্গীত বাজাতে পারেন।

পুরো প্রক্রিয়া জুড়ে, আমরা প্রয়োজনীয় ওয়্যারিং, কোডিং এবং সাধারণ সমস্যাগুলি সমাধানের উপায় নিয়ে আলোচনা করব। আরও ভিজ্যুয়াল নির্দেশনার জন্য, সংশ্লিষ্ট ভিডিওটি দেখতে ভুলবেন না (ভিডিওতে 00:00 এ)।

হার্ডওয়্যার ব্যাখ্যা

এই প্রকল্পে ব্যবহৃত প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, একটি মাইক্রো SD কার্ড, একটি অডিও অ্যামপ্লিফায়ার এবং একটি স্পিকার। ESP32 একটি শক্তিশালী মাইক্রোকন্ট্রোলার যার মধ্যে বিল্ট-ইন Wi-Fi এবং ব্লুটুথ ক্ষমতা রয়েছে, যা এটিকে IoT প্রকল্পের জন্য আদর্শ করে তোলে। এটি অডিও প্লেব্যাকের প্রক্রিয়াকরণ এবং নিয়ন্ত্রণ পরিচালনা করবে।

মাইক্রো SD কার্ডটি MP3 ফরম্যাটে অডিও ফাইল সংরক্ষণ করতে ব্যবহৃত হয়। এটি ESP32 এর সাথে সংযুক্ত হয় এবং প্রোগ্রামটিকে ফাইলগুলি পড়তে এবং অডিও ডেটা অ্যামপ্লিফায়ারে পাঠাতে দেয়। অডিও অ্যামপ্লিফায়ার ESP32 থেকে ডিজিটাল সিগন্যাল নেয় এবং স্পিকার চালানোর জন্য এটিকে প্রশস্ত করে, যাতে শব্দ শোনা যায়।

ডেটাশিট বিবরণ

প্রস্তুতকারকSunFounder
পার্ট নম্বরESP32
লজিক/আইও ভোল্টেজ3.3 V
সাপ্লাই ভোল্টেজ5 V
আউটপুট কারেন্ট (প্রতি চ্যানেল)সর্বোচ্চ 2 A
পিক কারেন্ট (প্রতি চ্যানেল)সর্বোচ্চ 3 A
PWM ফ্রিকোয়েন্সি নির্দেশিকা40 kHz পর্যন্ত
ইনপুট লজিক থ্রেশহোল্ড0.3 x VCC (নিম্ন), 0.7 x VCC (উচ্চ)
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন0.15 V
থার্মাল সীমা85 °C
প্যাকেজWROOM-32
নোট / ভেরিয়েন্টবিভিন্ন অডিও লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ

  • মাইক্রো SD কার্ডটি FAT32 হিসাবে ফরম্যাট করা আছে তা নিশ্চিত করুন।
  • বিকৃতি রোধ করতে অডিও অ্যামপ্লিফায়ার সংযোগের জন্য একটি রেজিস্টর ব্যবহার করুন।
  • বাধা এড়াতে পাওয়ার সাপ্লাই সংযোগ স্থিতিশীল রাখুন।
  • সিস্টেম চালু করার আগে আলগা সংযোগের জন্য ওয়্যারিং পরীক্ষা করুন।
  • ডিবাগিং তথ্যের জন্য সিরিয়াল আউটপুট মনিটর করুন।
  • ভাল শব্দ মানের জন্য কম-ইম্পিডেন্স স্পিকার ব্যবহার করুন।
  • সেরা পারফরম্যান্সের জন্য, অডিও বাজানোর সময় ESP32 কে অতিরিক্ত কাজ দিয়ে ভারী করবেন না।

SD_MMC মাইক্রো SD অ্যাক্সেসের জন্য ব্যবহৃত হয়, এবং AudioOutputI2S অডিও আউটপুটের জন্য ব্যবহৃত হয়।

ওয়্যারিং নির্দেশাবলী

ESP32-40-micro-sd-card-1
esp32-41-play-music-wriing

উপাদানগুলি একসাথে সংযোগ করতে, পাওয়ার সাপ্লাই সংযোগ করে শুরু করুন। ESP32 থেকে 5 V অডিও অ্যামপ্লিফায়ারের VCC পিনে সংযোগ করুন। এরপর, ESP32 থেকে গ্রাউন্ড পিনটি অ্যামপ্লিফায়ারের গ্রাউন্ড পিনের সাথে সংযোগ করুন। ESP32 থেকে অডিও আউটপুট পিন, সাধারণত GPIO25, একটি 10 kΩ রেজিস্টরের মাধ্যমে অ্যামপ্লিফায়ারের ইনপুট পিনের সাথে সংযুক্ত করা উচিত।

স্পিকারের জন্য, এটি অডিও অ্যামপ্লিফায়ারের আউটপুট পিনের সাথে সংযোগ করুন। মনে রাখবেন যে স্পিকারের কোনো পোলারিটি নেই, তাই আপনি এটি যেকোনো উপায়ে সংযোগ করতে পারেন। মাইক্রো SD কার্ডটি ESP32 এর নির্ধারিত স্লটে ঢোকান। সিস্টেম চালু করার আগে সমস্ত সংযোগ দুবার পরীক্ষা করতে ভুলবেন না।

কোড উদাহরণ ও ওয়াকথ্রু

প্রদত্ত কোডে, আমরা অডিও প্লেব্যাক এবং SD কার্ড অ্যাক্সেসের জন্য প্রয়োজনীয় লাইব্রেরিগুলি অন্তর্ভুক্ত করে শুরু করি। প্রধান শনাক্তকারীগুলি হল mp3, file এবং out, যা যথাক্রমে MP3 জেনারেটর, অডিও ফাইল উৎস এবং অডিও আউটপুট প্রতিনিধিত্ব করে।

AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;

এখানে, আমরা MP3 জেনারেটর এবং অডিও ফাইল উৎসের জন্য পয়েন্টার ঘোষণা করি। setup() ফাংশনে, আমরা সিরিয়াল কমিউনিকেশন এবং SD কার্ড শুরু করি।

void setup() {
  Serial.begin(115200);
  if (!SD_MMC.begin()) {
    Serial.println("SD কার্ড মাউন্ট ব্যর্থ হয়েছে!");
  }
  file = new AudioFileSourceSD_MMC("/To Alice.mp3");
  out = new AudioOutputI2S(0, 1);
}

এই অংশে, আমরা পরীক্ষা করি যে SD কার্ড সফলভাবে মাউন্ট হয়েছে কিনা। যদি এটি ব্যর্থ হয়, একটি ত্রুটি বার্তা প্রিন্ট করা হয়। তারপর আমরা MP3 ফাইল এবং অডিও আউটপুট মোড সেট আপ করি।

void loop() {
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.println("MP3 শেষ");
    delay(1000);
  }
}

এই লুপটি পরীক্ষা করে যে MP3 ফাইলটি এখনও বাজছে কিনা। যদি না হয়, এটি একটি বার্তা প্রিন্ট করে যা নির্দেশ করে যে প্লেব্যাক সম্পূর্ণ হয়েছে। আরও রেফারেন্সের জন্য সম্পূর্ণ কোডটি নিবন্ধের নীচে লোড হবে।

প্রদর্শন / কী আশা করবেন

একবার সবকিছু ওয়্যার্ড এবং কোড আপলোড হয়ে গেলে, মাইক্রো SD কার্ড ঢোকানোর সময় আপনার স্পিকারের মাধ্যমে অডিও বাজতে শোনা উচিত। কার্ড ঢোকানোর পরে ESP32 রিসেট করতে ভুলবেন না। যদি অডিও না বাজে, ওয়্যারিং পরীক্ষা করুন এবং নিশ্চিত করুন যে অডিও ফাইলটি কোডে সঠিকভাবে নামকরণ করা হয়েছে (ভিডিওতে 05:00 এ)।

সাধারণ সমস্যাগুলির মধ্যে রয়েছে মাইক্রো SD কার্ড সঠিকভাবে ফরম্যাট না করা বা অসমর্থিত অডিও ফাইল ফরম্যাট ব্যবহার করা। সর্বদা নিশ্চিত করুন যে ফাইলগুলি MP3 ফরম্যাটে রয়েছে এবং প্রয়োজন অনুসারে রুট ডিরেক্টরি বা নির্দিষ্ট ফোল্ডারে রাখা হয়েছে।

ভিডিও টাইমস্ট্যাম্প

  • 00:00 শুরু
  • 2:19 প্রকল্পের ভূমিকা
  • 4:27 ডক্স পেজ
  • 5:32 অডিও অ্যামপ্লিফায়ারের জন্য ওয়্যারিং
  • 8:00 ESP32 এর জন্য মাইক্রোSD কার্ড ফরম্যাট করা
  • 10:16 লাইব্রেরি এবং কোড
  • 15:16 Arduino IDE-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
  • 16:58 মাইক্রো SD কার্ড থেকে ESP32 ব্যবহার করে গান বাজানো
  • 19:14 18650 ব্যাটারি ব্যবহার করে দ্বিতীয় ডেমো

ছবি

speaker_pic
speaker_pic
audio_module
audio_module
ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-1
esp32-41-play-music-wriing
esp32-41-play-music-wriing
842-ESP32 Tutorial 41/55- Arduino code for playing music from microSD card
ভাষা: C++
#include "AudioFileSourceSD_MMC.h"
#include "AudioOutputI2S.h"
#include "AudioGeneratorMP3.h"
#include "SD_MMC.h"
#include "FS.h"

// Declare pointers for the MP3 generator, file source, and output.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;

void setup() {
  // Start the serial communication.
  Serial.begin(115200);
  delay(1000);

  // Initialize the SD card. If it fails, print an error message.
  if (!SD_MMC.begin()) {
    Serial.println("SD card mount failed!");
  }

  // Open the MP3 file from the SD card. Replace "/To Alice.mp3" with your own MP3 file name.
  file = new AudioFileSourceSD_MMC("/To Alice.mp3");
  
  // Set up the I2S output on ESP32's internal DAC.
  out = new AudioOutputI2S(0, 1);
  
  // Set the output to mono.
  out->SetOutputModeMono(true);

  // Initialize the MP3 generator with the file and output.
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);
}

void loop() {
  // If the MP3 is running, loop it. Otherwise, stop it.
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } 
  // If the MP3 is not running, print a message and wait for 1 second.
  else {
    Serial.println("MP3 done");
    delay(1000);
  }
}

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

কোনো ফাইল উপলব্ধ নেই।