Tutorial ESP32 14/55 - Redarea unei note muzicale personalizate folosind kitul de învățare IoT SunFounder ESP32
În acest tutorial, vom învăța cum să folosim microcontrolerul SunFounder ESP32 pentru a reda note muzicale folosind un buzzer pasiv și un tranzistor. Proiectul își propune să demonstreze cum să generăm sunet cu frecvențe specifice prin controlul buzzer-ului prin pinii GPIO ai ESP32-ului.

Vom conecta un buzzer pasiv la ESP32, ceea ce ne va permite să producem diferite note muzicale în funcție de frecvența pe care o furnizăm. Această configurație include utilizarea unui tranzistor pentru a comuta buzzer-ul pornit și oprit la viteze mari, creând unde sonore pe care le putem auzi. Pentru clarificări suplimentare despre proiect, asigurați-vă că urmăriți videoclipul (în videoclip la 00:30).
Hardware Explicat
Componentele principale utilizate în acest proiect includ microcontrolerul SunFounder ESP32, un buzzer pasiv și un tranzistor NPN (2N8050). ESP32 este o placă de dezvoltare puternică, cu capacități Wi-Fi și Bluetooth integrate, fiind versatilă pentru diverse aplicații IoT. În acest caz, va genera semnale pentru a controla buzzer-ul.
Buzzer-ul pasiv funcționează generând sunet atunci când i se aplică o tensiune alternativă. Spre deosebire de buzzerele active, care au un oscilator integrat, buzzerele pasive necesită un semnal extern pentru a produce sunet. Tranzistorul acționează ca un comutator, permițând ESP32-ului să controleze buzzer-ul fără a-l alimenta direct, asigurându-se că ratingul de curent al microcontrolerului nu este depășit.
Detalii din Fișa Tehnică
| Producător | SunFounder |
|---|---|
| Număr de piesă | Buzzer Pasiv |
| Tensiune de Operare | 3,3 V - 5 V |
| Frecvență de Rezonanță | 2 kHz - 4 kHz |
| Consum de Curent | ≤ 30 mA |
| Nivel de Presiune Sonoră | ≥ 70 dB |
| Pachet | Prin gaură |
| Note / variante | Niciuna |
- Asigurați polaritatea corectă atunci când conectați buzzer-ul.
- Utilizați un rezistor de limitare a curentului pentru baza tranzistorului.
- Conectați buzzer-ul la o sursă de alimentare compatibilă cu tensiunea sa nominală.
- Aveți grijă să nu depășiți curentul maxim nominal al tranzistorului.
- Păstrați cablurile ordonate pentru a evita scurtcircuitele.
- Testați circuitul înainte de a încărca codul pentru a evita deteriorarea componentelor.
- Utilizați o placă de testare pentru conexiuni ușoare ale componentelor.
- Asigurați-vă că debounce-uiți intrările dacă folosiți butoane.
- Luați în considerare adăugarea unui radiator pentru tranzistor dacă este utilizat la curent mare.
Instrucțiuni de Cablare

Pentru a cabla componentele, începeți prin conectarea terminalului pozitiv al buzzer-ului pasiv la pinul de 3,3V de pe ESP32. Terminalul negativ al buzzer-ului ar trebui să se conecteze la colectorul tranzistorului NPN. Pinul emitor al tranzistorului ar trebui să fie conectat la masă (GND) a ESP32-ului.
Apoi, conectați un rezistor de 1 kΩ de la baza tranzistorului la pinul GPIO 14 de pe ESP32. Acest rezistor limitează curentul care curge în baza tranzistorului. În final, asigurați-vă că toate conexiunile de masă sunt legate împreună pentru a oferi o referință comună pentru circuit.
Exemple de Cod & Explicații
const int buzzerPin = 14; // pinul buzzer-ului
void setup()
{
pinMode(buzzerPin, OUTPUT); // Setat ca ieșire
}
În cod, definim o variabilă constantă buzzerPin care este setată la 14, indicând pinul GPIO conectat la baza tranzistorului. În funcția setup(), setăm acest pin ca OUTPUT, permițând ESP32-ului să controleze buzzer-ul.
void loop()
{
for (int i = 0; i < 50; i++) // Buclă de 50 de ori și redă un ton scurt de fiecare dată
{
digitalWrite(buzzerPin, HIGH); // Setat la HIGH pentru a face buzzer-ul să sune
delay(3); // Așteaptă 3 milisecunde
digitalWrite(buzzerPin, LOW); // LOW pentru a opri buzzer-ul
delay(3); //
}
delay(1000); // Așteaptă 1s înainte de a începe următoarea buclă
}
Funcția loop() conține o buclă for care rulează de 50 de ori. Fiecare iterație pornește și oprește rapid buzzer-ul, producând un ton. Întârzierile de 3 milisecunde controlează cât timp buzzer-ul este activat și dezactivat, în timp ce o întârziere de 1 secundă la sfârșitul buclei oferă o pauză înainte de repetare.
Demonstrație / Ce să Așteptați
Odată ce cablarea este completă și codul este încărcat, ar trebui să auziți o serie de tonuri scurte produse de buzzer. Dacă buzzer-ul nu sună, verificați conexiunile, în special orientarea tranzistorului și valoarea rezistorului. Asigurați-vă că pinul corect este utilizat în cod și că ESP32 este alimentat corespunzător.
În timpul demonstrației, dacă întâmpinați probleme, acestea se pot datora cablării incorecte sau utilizării unui pin greșit pentru buzzer. Verificați cablarea conform instrucțiunilor și asigurați-vă că sursa de alimentare este adecvată (în videoclip la 08:15).
Marcaje Temporale din Video
- 00:00 Început
- 1:52 Introducere în proiect
- 4:11 Cablare explicată
- 8:11 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
- 9:53 Codul Arduino explicat
- 13:17 Demonstrația proiectului
- 13:58 Codul și demonstrația proiectului 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
Resurse și referințe
-
DocumentațieESP32 Tutorial 14/55- SunFounder Resources page for custom tonedocs.sunfounder.com
Fișiere📁
Fișă tehnică (pdf)
-
Buzzer MB12A05 C96093 datasheet
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
NPN Epitaxial Silicon Transistor SS8050 datasheet
SS8050-datasheet.pdf0.19 MB