د ESP32 ټیوټوریل 14/55 - د 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 |
| بسته بندي | Through-hole |
| یادښتونه / بڼې | هیڅ نه |
- کله چې بوزر ونښلوئ، د قطبيت سمه یقیني کړئ.
- د ټرانزیسټر بیس لپاره د جریان محدودونکی ریزسټر وکاروئ.
- بوزر د بریښنا رسولو سره ونښلوئ چې د هغې د ولټاژ درجې سره مطابقت لري.
- د ټرانزیسټر د اعظمي جریان درجې له تیریدو څخه محتاط اوسئ.
- د لنډ سرکټونو څخه مخنیوي لپاره تارونه منظم وساتئ.
- د اجزاو د زیان څخه مخنیوي لپاره د کوډ اپلوډ کولو دمخه سرکټ وازموئ.
- د اسانه اجزا نښلولو لپاره بریډبورډ وکاروئ.
- که تاسو تڼۍ کاروئ، ډاډ ترلاسه کړئ چې انپټونه ډیبونس کړئ.
- که په لوړ جریان کې وکارول شي، د ټرانزیسټر لپاره د تودوخې سنک اضافه کولو په اړه غور وکړئ.
د تارونو نښلولو لارښوونې

د اجزاو د تارونو نښلولو لپاره، د غیر فعال بوزر مثبت ترمینل د 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); // د راتلونکي لوپ پیل کولو دمخه د 1s لپاره انتظار وکړئ
}
د 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
Resources & references
-
DocumentationESP32 Tutorial 14/55- SunFounder Resources page for custom tonedocs.sunfounder.com
Files📁
Datasheet (pdf)
-
Buzzer MB12A05 C96093 datasheet
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
NPN Epitaxial Silicon Transistor SS8050 datasheet
SS8050-datasheet.pdf0.19 MB