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

ESP32 টিউটোরিয়াল ৩৯/৫৫ - ব্লুটুথ মিউজিক প্লেয়ার হিসেবে ESP32 ব্যবহার করা | SunFounder-এর ESP32 IoT লার্নিং কিট

ESP32 টিউটোরিয়াল ৩৯/৫৫ - ব্লুটুথ মিউজিক প্লেয়ার হিসেবে ESP32 ব্যবহার করা | SunFounder-এর ESP32 IoT লার্নিং কিট

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

অডিও_মডিউল

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

স্পিকার_পিক

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

এই প্রকল্পের প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার এবং BluetoothA2DPSink লাইব্রেরি। ESP32 একটি অন্তর্নির্মিত ডিজিটাল-টু-অ্যানালগ কনভার্টার (DAC) দিয়ে সজ্জিত যা কোনো অতিরিক্ত হার্ডওয়্যার ছাড়াই অডিও আউটপুটের অনুমতি দেয়। BluetoothA2DPSink লাইব্রেরি একটি ব্লুটুথ অডিও সিংক সেট আপ করার প্রক্রিয়াটি সহজ করে, যা আপনাকে ব্লুটুথের মাধ্যমে অডিও স্ট্রিম গ্রহণ করতে সক্ষম করে।

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

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

প্রস্তুতকারক Espressif Systems
পার্ট নম্বর ESP32-WROOM-32
লজিক/আইও ভোল্টেজ 3.3 V
সাপ্লাই ভোল্টেজ 3.0–3.6 V
আউটপুট কারেন্ট (প্রতি চ্যানেল) 40 mA পর্যন্ত
PWM ফ্রিকোয়েন্সি নির্দেশিকা 1 KHz - 40 KHz
তাপীয় সীমা 125 °C
প্যাকেজ QFN48
নোট / ভেরিয়েন্ট বিভিন্ন কনফিগারেশন উপলব্ধ

 

  • সাধারণ GPIO পিন অডিও আউটপুটের জন্য ব্যবহার করা যেতে পারে।
  • ক্ষতি এড়াতে সঠিক পাওয়ার সাপ্লাই (3.3 V) নিশ্চিত করুন।
  • উন্নত ব্লুটুথ পারফরম্যান্সের জন্য ফার্মওয়্যার আপডেট রাখুন।
  • বর্ধিত ব্লুটুথ রেঞ্জের জন্য বাহ্যিক অ্যান্টেনা ব্যবহার করুন।
  • DAC আউটপুট সীমাবদ্ধতা সম্পর্কে সচেতন থাকুন; উচ্চ মানের অডিওর জন্য বাহ্যিক DAC ব্যবহার করুন।

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

esp32-39_bluetooth_audio_wiring

ব্লুটুথ অডিও প্লেব্যাকের জন্য ESP32 ওয়্যার করতে, প্রথমে ESP32-কে একটি পাওয়ার সোর্সের সাথে সংযুক্ত করুন। এটি আপনার কম্পিউটারের সাথে সংযোগ করতে একটি USB কেবল ব্যবহার করুন, যা প্রয়োজনীয় শক্তি সরবরাহ করবে। এরপর, অডিও আউটপুট পিন সংযুক্ত করুন: বাম অডিও চ্যানেলটি GPIO25-এ এবং ডান অডিও চ্যানেলটি একই GPIO25 পিনে সংযুক্ত করুন। এই সংযোগগুলির জন্য আপনি জাম্পার তার ব্যবহার করতে পারেন।

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

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

নিম্নলিখিত কোড স্নিপেটটি ব্লুটুথ A2DP সিংক শুরু করে এবং অডিও প্লেব্যাকের জন্য I2S কনফিগারেশন সেট আপ করে।


// ==> ESP32-এর অন্তর্নির্মিত DAC ব্যবহার করার উদাহরণ

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
  const i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
    .sample_rate = 44100,
    .bits_per_sample = (i2s_bits_per_sample_t)16,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
  };

  a2dp_sink.set_i2s_config(i2s_config);
  a2dp_sink.start("ESP32_Bluetooth");
}

setup() ফাংশনে, আমরা প্রথমে I2S সেটিংস কনফিগার করি, মোডটি মাস্টার হিসেবে নির্দিষ্ট করে এবং অন্তর্নির্মিত DAC সক্ষম করি। স্যাম্পল রেট 44100 Hz-এ সেট করা হয়েছে, যা অডিও প্লেব্যাকের জন্য মানসম্মত। এরপর ব্লুটুথ A2DP সিংক একটি নির্দিষ্ট নাম দিয়ে শুরু করা হয়, যা এটিকে অন্যান্য ব্লুটুথ ডিভাইস দ্বারা চেনা যেতে দেয়।

loop() ফাংশনটি খালি থাকে, কারণ ব্লুটুথ লাইব্রেরি ব্যাকগ্রাউন্ডে স্ট্রিমিং পরিচালনা করে। আরও বিস্তারিত জানতে আপনি নিবন্ধের নীচে লোড করা সম্পূর্ণ কোডটি পরীক্ষা করতে পারেন।

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

সেটআপ সম্পূর্ণ হলে এবং কোড আপলোড করা হলে, ESP32 চালু করুন এবং আপনার ব্লুটুথ-সক্ষম ডিভাইসে "ESP32_Bluetooth" নামে ডিভাইসটি সন্ধান করুন। সংযোগ করার পরে, সংযুক্ত ডিভাইসে বাজানো যেকোনো অডিও ESP32-এর মাধ্যমে স্ট্রিম হওয়া উচিত। সংযোগগুলি সঠিক এবং পাওয়ার সাপ্লাই স্থিতিশীল থাকলে আপনি DAC-এর মাধ্যমে উচ্চ-মানের অডিও আউটপুট আশা করতে পারেন।

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

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

  • 00:00 শুরু
  • 2:12 ভূমিকা
  • 5:22 ওয়্যারিং ব্যাখ্যা
  • 7:51 Arduino কোড ব্যাখ্যা
  • 10:37 Arduino IDE-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
  • 12:19 মোবাইল ফোন থেকে ESP32 ব্যবহার করে মিউজিক বাজানো
  • 13:30 ESP32-তে আরও শক্তিশালী অ্যামপ্লিফায়ার সংযোগ

ছবি

esp32-39_bluetooth_audio_wiring
esp32-39_bluetooth_audio_wiring
speaker_pic
speaker_pic
audio_module
audio_module
840-ESP32 Tutorial 39/55- Arduino code for playing audio via bluetooth
ভাষা: C++

// ==> Example to use built in DAC of ESP32

// R,L connect to GPIO25

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
  const i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
    .sample_rate = 44100,                          // corrected by info from bluetooth
    .bits_per_sample = (i2s_bits_per_sample_t)16,  //the DAC module will only take the 8bits from MSB
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = (i2s_comm_format_t)I2S_COMM_FORMAT_STAND_MSB,
    .intr_alloc_flags = 0,  // default interrupt priority
    .dma_buf_count = 8,
    .dma_buf_len = 64,
    .use_apll = false
  };

  a2dp_sink.set_i2s_config(i2s_config);
  a2dp_sink.start("ESP32_Bluetooth");
}


void loop() {
}

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

ফাইলসমূহ📁

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