ESP32 টিউটোরিয়াল ১৪/৫৫ - SunFounder ESP32 IoT লার্নিং কিট ব্যবহার করে কাস্টম মিউজিক নোট বাজানো
এই টিউটোরিয়ালে, আমরা শিখব কীভাবে SunFounder ESP32 মাইক্রোকন্ট্রোলার ব্যবহার করে একটি প্যাসিভ বাজারের মাধ্যমে মিউজিক্যাল নোট বাজানো যায়, একটি ট্রানজিস্টরের সাহায্যে। এই প্রকল্পটির উদ্দেশ্য হলো ESP32-এর GPIO পিনের মাধ্যমে বাজার নিয়ন্ত্রণ করে নির্দিষ্ট ফ্রিকোয়েন্সি দিয়ে শব্দ তৈরি করার পদ্ধতি প্রদর্শন করা।

আমরা ESP32-এর সাথে একটি প্যাসিভ বাজার সংযোগ করব, যা আমাদের প্রদত্ত ফ্রিকোয়েন্সির উপর ভিত্তি করে বিভিন্ন মিউজিক্যাল নোট তৈরি করতে দেবে। এই সেটআপে একটি ট্রানজিস্টর ব্যবহার করা হয় যা বাজারকে উচ্চ গতিতে চালু ও বন্ধ করতে সাহায্য করে, ফলে আমরা শব্দ তরঙ্গ তৈরি করতে পারি যা আমরা শুনতে পাই। প্রকল্পটি সম্পর্কে আরও স্পষ্ট ধারণার জন্য, ভিডিওটি (ভিডিওতে 00:30 সময়ে) দেখতে ভুলবেন না।
হার্ডওয়্যার ব্যাখ্যা
এই প্রকল্পে ব্যবহৃত প্রধান উপাদানগুলির মধ্যে রয়েছে SunFounder ESP32 মাইক্রোকন্ট্রোলার, একটি প্যাসিভ বাজার এবং একটি NPN ট্রানজিস্টর (2N8050)। ESP32 একটি শক্তিশালী ডেভেলপমেন্ট বোর্ড যার মধ্যে বিল্ট-ইন Wi-Fi এবং ব্লুটুথ ক্ষমতা রয়েছে, যা বিভিন্ন IoT অ্যাপ্লিকেশনের জন্য বহুমুখী করে তোলে। এই ক্ষেত্রে, এটি বাজার নিয়ন্ত্রণের জন্য সংকেত তৈরি করবে।
প্যাসিভ বাজার একটি বিকল্প ভোল্টেজ প্রয়োগ করলে শব্দ তৈরি করে কাজ করে। অ্যাক্টিভ বাজারের বিপরীতে, যার মধ্যে একটি বিল্ট-ইন অসিলেটর থাকে, প্যাসিভ বাজারের শব্দ তৈরি করতে একটি বাহ্যিক সংকেত প্রয়োজন। ট্রানজিস্টরটি একটি সুইচ হিসেবে কাজ করে, যা ESP32-কে সরাসরি পাওয়ার না দিয়ে বাজার নিয়ন্ত্রণ করতে দেয়, ফলে মাইক্রোকন্ট্রোলারের কারেন্ট রেটিং অতিক্রম না হয় তা নিশ্চিত করে।
ডেটাশিট বিবরণ
| নির্মাতা | SunFounder |
|---|---|
| পার্ট নম্বর | প্যাসিভ বাজার |
| অপারেটিং ভোল্টেজ | 3.3 V - 5 V |
| রেজোন্যান্ট ফ্রিকোয়েন্সি | 2 kHz - 4 kHz |
| কারেন্ট খরচ | ≤ 30 mA |
| শব্দ চাপের মাত্রা | ≥ 70 dB |
| প্যাকেজ | থ্রু-হোল |
| নোট / ভেরিয়েন্ট | কোনোটিই নয় |
- বাজার সংযোগ করার সময় সঠিক পোলারিটি নিশ্চিত করুন।
- ট্রানজিস্টর বেসের জন্য একটি কারেন্ট-লিমিটিং রেজিস্টর ব্যবহার করুন।
- বাজারকে তার ভোল্টেজ রেটিং-এর সাথে সামঞ্জস্যপূর্ণ একটি পাওয়ার সাপ্লাইতে সংযোগ করুন।
- ট্রানজিস্টরের সর্বোচ্চ কারেন্ট রেটিং অতিক্রম করা থেকে সাবধান থাকুন।
- শর্ট সার্কিট এড়াতে তারের সংযোগ পরিপাটি রাখুন।
- কম্পোনেন্টের ক্ষতি এড়াতে কোড আপলোড করার আগে সার্কিট পরীক্ষা করুন।
- সহজ কম্পোনেন্ট সংযোগের জন্য একটি ব্রেডবোর্ড ব্যবহার করুন।
- বাটন ব্যবহার করলে ইনপুট ডিবাউন্স করতে ভুলবেন না।
- উচ্চ কারেন্টে ব্যবহার করলে ট্রানজিস্টরের জন্য একটি হিট সিঙ্ক যোগ করার কথা বিবেচনা করুন।
ওয়্যারিং নির্দেশাবলী

কম্পোনেন্টগুলি ওয়্যার করতে, প্রথমে প্যাসিভ বাজারের পজিটিভ টার্মিনালটি ESP32-এর 3.3V পিনে সংযোগ করুন। বাজারের নেগেটিভ টার্মিনালটি NPN ট্রানজিস্টরের কালেক্টরে সংযোগ করা উচিত। ট্রানজিস্টরের ইমিটার পিনটি ESP32-এর গ্রাউন্ডে (GND) ওয়্যার করা উচিত।
এরপর, ট্রানজিস্টরের বেস থেকে ESP32-এর GPIO পিন 14-এ একটি 1 kΩ রেজিস্টর সংযোগ করুন। এই রেজিস্টরটি ট্রানজিস্টরের বেসে প্রবাহিত কারেন্ট সীমিত করে। অবশেষে, সার্কিটের জন্য একটি সাধারণ রেফারেন্স প্রদান করতে সমস্ত গ্রাউন্ড সংযোগ একসাথে বাঁধা আছে তা নিশ্চিত করুন।
কোড উদাহরণ ও ব্যাখ্যা
const int buzzerPin = 14; // বাজার পিন
void setup()
{
pinMode(buzzerPin, OUTPUT); // আউটপুট হিসেবে সেট করুন
}
কোডে, আমরা একটি কনস্ট্যান্ট ভেরিয়েবল buzzerPin সংজ্ঞায়িত করি যা 14-এ সেট করা আছে, যা ট্রানজিস্টরের বেসের সাথে সংযুক্ত GPIO পিন নির্দেশ করে। setup() ফাংশনে, আমরা এই পিনটিকে OUTPUT হিসেবে সেট করি, যা ESP32-কে বাজার নিয়ন্ত্রণ করতে দেয়।
void loop()
{
for (int i = 0; i < 50; i++) // 50 বার লুপ করুন এবং প্রতিবার একটি ছোট টোন বাজান
{
digitalWrite(buzzerPin, HIGH); // বাজার শব্দ করতে HIGH সেট করুন
delay(3); // 3 মিলিসেকেন্ড অপেক্ষা করুন
digitalWrite(buzzerPin, LOW); // বাজার বন্ধ করতে LOW
delay(3); //
}
delay(1000); // পরবর্তী লুপ শুরুর আগে 1 সেকেন্ড অপেক্ষা করুন
}
loop() ফাংশনে একটি for-লুপ রয়েছে যা 50 বার চলে। প্রতিটি পুনরাবৃত্তি বাজারকে দ্রুত চালু এবং বন্ধ করে, একটি টোন তৈরি করে। 3 মিলিসেকেন্ডের বিলম্ব নিয়ন্ত্রণ করে বাজার কতক্ষণ সক্রিয় এবং নিষ্ক্রিয় থাকে, যখন লুপের শেষে 1-সেকেন্ডের বিলম্ব পুনরাবৃত্তির আগে একটি বিরতি প্রদান করে।
প্রদর্শন / কী আশা করবেন
একবার ওয়্যারিং সম্পূর্ণ হলে এবং কোড আপলোড করা হলে, আপনার বাজার থেকে কয়েকটি ছোট টোনের একটি সিরিজ শোনা উচিত। যদি বাজার শব্দ না করে, আপনার সংযোগগুলি পরীক্ষা করুন, বিশেষ করে ট্রানজিস্টরের অভিযোজন এবং রেজিস্টরের মান। নিশ্চিত করুন যে কোডে সঠিক পিন ব্যবহার করা হয়েছে এবং ESP32 সঠিকভাবে পাওয়ার পেয়েছে।
প্রদর্শনের সময়, যদি সমস্যা হয়, তবে এটি ভুল ওয়্যারিং বা বাজারের জন্য ভুল পিন ব্যবহারের কারণে হতে পারে। নির্দেশাবলীর সাথে ওয়্যারিং পরীক্ষা করুন এবং নিশ্চিত করুন যে পাওয়ার সাপ্লাই যথেষ্ট (ভিডিওতে 08:15 সময়ে)।
ভিডিও টাইমস্ট্যাম্প
- 00:00 শুরু
- 1:52 প্রকল্পের পরিচিতি
- 4:11 ওয়্যারিং ব্যাখ্যা
- 8:11 Arduino IDE-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
- 9:53 Arduino কোড ব্যাখ্যা
- 13:17 প্রকল্প প্রদর্শন
- 13:58 প্রকল্প 2 কোড এবং প্রদর্শন
const int buzzerPin = 14; //buzzer pin
const int resolution = 8;
// Frequencies of the 7 musical notes (in Hz)
int frequencies[] = {262, 294, 330, 349, 392, 440, 494};
// Function to play a frequency on the buzzer for a given duration
void playFrequency(int frequency, int duration) {
ledcWriteTone(buzzerPin, frequency); // Start the tone
delay(duration); // Wait for the specified duration
ledcWriteTone(buzzerPin, 0); // Stop the buzzer
}
void setup() {
ledcAttach(buzzerPin, 2000, 8); // Set up the PWM pin
}
void loop() {
for (int i = 0; i < 7; i++) {
playFrequency(frequencies[i], 300); // Play each note for 300ms
delay(50); // Add a brief pause between the notes
}
delay(1000); // Wait for 1 second before replaying the sequence
}
Common Course Links
Common Course Files
সম্পদ ও রেফারেন্সসমূহ
-
ডকুমেন্টেশনESP32 Tutorial 14/55- SunFounder Resources page for custom tonedocs.sunfounder.com
ফাইলসমূহ📁
ডেটাশিট (পিডিএফ)
-
Buzzer MB12A05 C96093 datasheet
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
NPN Epitaxial Silicon Transistor SS8050 datasheet
SS8050-datasheet.pdf0.19 MB