Návod na ESP32 14/55 – Prehrávanie vlastnej hudobnej noty pomocou SunFounder ESP32 IoT Learning kit
V tomto návode sa naučíme, ako používať mikrokontrolér SunFounder ESP32 na prehrávanie hudobných tónov pomocou pasívneho bzučiaka a tranzistora. Cieľom projektu je demonštrovať, ako generovať zvuk so špecifickými frekvenciami ovládaním bzučiaka cez GPIO piny ESP32.

Pripojíme pasívny bzučiak k ESP32, čo nám umožní produkovať rôzne hudobné tóny na základe frekvencie, ktorú poskytneme. Toto zapojenie zahŕňa použitie tranzistora na prepínanie bzučiaka zapnutého a vypnutého pri vysokých rýchlostiach, čím vytvárame zvukové vlny, ktoré môžeme počuť. Pre ďalšie objasnenie projektu si určite pozrite video (vo videu o 00:30).
Vysvetlenie hardvéru
Hlavné komponenty použité v tomto projekte zahŕňajú mikrokontrolér SunFounder ESP32, pasívny bzučiak a NPN tranzistor (2N8050). ESP32 je výkonná vývojová doska so vstavanými funkciami Wi-Fi a Bluetooth, čo ju robí všestrannou pre rôzne IoT aplikácie. V tomto prípade bude generovať signály na ovládanie bzučiaka.
Pasívny bzučiak funguje tak, že generuje zvuk, keď sa naň aplikuje striedavé napätie. Na rozdiel od aktívnych bzučiakov, ktoré majú vstavaný oscilátor, pasívne bzučiaky vyžadujú externý signál na produkciu zvuku. Tranzistor funguje ako spínač, ktorý umožňuje ESP32 ovládať bzučiak bez priameho napájania, čím sa zabezpečuje, že prúdové zaťaženie mikrokontroléra nie je prekročené.
Podrobnosti z datasheetu
| Výrobca | SunFounder |
|---|---|
| Označenie dielu | Pasívny bzučiak |
| Prevádzkové napätie | 3,3 V - 5 V |
| Rezonančná frekvencia | 2 kHz - 4 kHz |
| Prúdová spotreba | ≤ 30 mA |
| Úroveň akustického tlaku | ≥ 70 dB |
| Puzdro | Through-hole |
| Poznámky / varianty | Žiadne |
- Pri pripájaní bzučiaka zabezpečte správnu polaritu.
- Použite odpor obmedzujúci prúd pre bázu tranzistora.
- Pripojte bzučiak k napájaciemu zdroju kompatibilnému s jeho menovitým napätím.
- Dávajte pozor na prekročenie maximálneho prúdového zaťaženia tranzistora.
- Udržiavajte zapojenie prehľadné, aby ste predišli skratom.
- Pred nahratím kódu otestujte obvod, aby ste predišli poškodeniu komponentov.
- Použite breadboard pre jednoduché pripojenie komponentov.
- Ak používate tlačidlá, nezabudnite ošetriť zákmit.
- Zvážte pridanie chladiča pre tranzistor, ak sa používa pri vysokom prúde.
Pokyny na zapojenie

Na zapojenie komponentov začnite pripojením kladného pólu pasívneho bzučiaka na pin 3,3V na ESP32. Záporný pól bzučiaka by mal byť pripojený na kolektor NPN tranzistora. Emitorový pin tranzistora by mal byť zapojený na zem (GND) ESP32.
Ďalej pripojte odpor 1 kΩ z bázy tranzistora na GPIO pin 14 na ESP32. Tento odpor obmedzuje prúd tečúci do bázy tranzistora. Nakoniec sa uistite, že všetky uzemňovacie pripojenia sú spojené dohromady, aby poskytovali spoločný referenčný bod pre obvod.
Príklady kódu a vysvetlenie
const int buzzerPin = 14; // pin bzučiaka
void setup()
{
pinMode(buzzerPin, OUTPUT); // Nastaviť ako výstup
}
V kóde definujeme konštantnú premennú buzzerPin, ktorá je nastavená na 14, čo označuje GPIO pin pripojený na bázu tranzistora. Vo funkcii setup() nastavíme tento pin ako VÝSTUP, čo umožňuje ESP32 ovládať bzučiak.
void loop()
{
for (int i = 0; i < 50; i++) // Slučka 50-krát a zakaždým prehrá krátky tón
{
digitalWrite(buzzerPin, HIGH); // Nastaviť na HIGH, aby bzučiak zaznel
delay(3); // Počkať 3 milisekundy
digitalWrite(buzzerPin, LOW); // LOW na vypnutie bzučiaka
delay(3); //
}
delay(1000); // Počkať 1s pred spustením ďalšej slučky
}
Funkcia loop() obsahuje for-slučku, ktorá sa spustí 50-krát. Každá iterácia rýchlo zapína a vypína bzučiak, čím vytvára tón. Oneskorenia 3 milisekúnd riadia, ako dlho je bzučiak aktivovaný a deaktivovaný, zatiaľ čo 1-sekundové oneskorenie na konci slučky poskytuje pauzu pred opakovaním.
Demonštrácia / Čo očakávať
Po dokončení zapojenia a nahratí kódu by ste mali počuť sériu krátkych tónov produkovaných bzučiakom. Ak bzučiak neznie, skontrolujte svoje pripojenia, najmä orientáciu tranzistora a hodnotu odporu. Uistite sa, že v kóde je použitý správny pin a že ESP32 je správne napájaný.
Počas demonštrácie, ak narazíte na problémy, môže to byť spôsobené nesprávnym zapojením alebo použitím nesprávneho pinu pre bzučiak. Skontrolujte zapojenie podľa pokynov a uistite sa, že napájací zdroj je dostatočný (vo videu o 08:15).
Časové značky videa
- 00:00 Začiatok
- 1:52 Úvod do projektu
- 4:11 Vysvetlenie zapojenia
- 8:11 Výber dosky ESP32 a COM portu v Arduino IDE
- 9:53 Vysvetlenie kódu Arduino
- 13:17 Demonštrácia projektu
- 13:58 Kód a demonštrácia projektu 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
Zdroje a referencie
-
DokumentáciaESP32 Tutorial 14/55 - SunFounder Resources page for custom tonedocs.sunfounder.com
Súbory📁
Datasheet (pdf)
-
Buzzer MB12A05 C96093 datasheet
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
NPN Epitaxial Silicon Transistor SS8050 datasheet
SS8050-datasheet.pdf0.19 MB