Samouczek ESP32 14/55 - Odtwarzanie niestandardowej nuty muzycznej przy użyciu zestawu edukacyjnego SunFounder ESP32 IoT
W tym samouczku nauczymy się, jak używać mikrokontrolera SunFounder ESP32 do odtwarzania nut za pomocą pasywnego brzęczyka i tranzystora. Projekt ma na celu pokazanie, jak generować dźwięk o określonych częstotliwościach poprzez sterowanie brzęczykiem za pomocą pinów GPIO ESP32.

Podłączymy pasywny brzęczyk do ESP32, co pozwoli nam wytwarzać różne nuty w zależności od podanej częstotliwości. Ten układ obejmuje użycie tranzystora do włączania i wyłączania brzęczyka z dużą prędkością, tworząc fale dźwiękowe, które możemy usłyszeć. Aby uzyskać więcej informacji na temat projektu, koniecznie obejrzyj wideo (na wideo w 00:30).
Objaśnienie sprzętu
Główne komponenty użyte w tym projekcie to mikrokontroler SunFounder ESP32, pasywny brzęczyk oraz tranzystor NPN (2N8050). ESP32 to wydajna płytka rozwojowa z wbudowaną obsługą Wi-Fi i Bluetooth, co czyni ją wszechstronną do różnych zastosowań IoT. W tym przypadku będzie generować sygnały do sterowania brzęczykiem.
Pasywny brzęczyk działa poprzez generowanie dźwięku, gdy przyłożone jest do niego napięcie przemienne. W przeciwieństwie do aktywnych brzęczyków, które mają wbudowany oscylator, pasywne brzęczyki wymagają zewnętrznego sygnału do wytworzenia dźwięku. Tranzystor działa jak przełącznik, pozwalając ESP32 sterować brzęczykiem bez bezpośredniego zasilania go, co zapewnia, że prąd znamionowy mikrokontrolera nie zostanie przekroczony.
Szczegóły z karty katalogowej
| Producent | SunFounder |
|---|---|
| Numer części | Pasywny brzęczyk |
| Napięcie robocze | 3,3 V - 5 V |
| Częstotliwość rezonansowa | 2 kHz - 4 kHz |
| Pobór prądu | ≤ 30 mA |
| Poziom ciśnienia akustycznego | ≥ 70 dB |
| Obudowa | Przewlekana (Through-hole) |
| Uwagi / warianty | Brak |
- Upewnij się, że biegunowość jest prawidłowa podczas podłączania brzęczyka.
- Użyj rezystora ograniczającego prąd dla bazy tranzystora.
- Podłącz brzęczyk do zasilacza zgodnego z jego napięciem znamionowym.
- Uważaj, aby nie przekroczyć maksymalnego prądu znamionowego tranzystora.
- Utrzymuj okablowanie w porządku, aby uniknąć zwarć.
- Przetestuj obwód przed wgraniem kodu, aby uniknąć uszkodzenia komponentów.
- Użyj płytki stykowej, aby ułatwić połączenia komponentów.
- Pamiętaj o eliminacji drgań styków (debounce), jeśli używasz przycisków.
- Rozważ dodanie radiatora dla tranzystora, jeśli jest używany przy wysokim prądzie.
Instrukcje okablowania

Aby podłączyć komponenty, zacznij od połączenia dodatniego zacisku pasywnego brzęczyka z pinem 3,3 V na ESP32. Ujemny zacisk brzęczyka należy podłączyć do kolektora tranzystora NPN. Pin emitera tranzystora należy podłączyć do masy (GND) ESP32.
Następnie podłącz rezystor 1 kΩ od bazy tranzystora do pinu GPIO 14 na ESP32. Ten rezystor ogranicza prąd płynący do bazy tranzystora. Na koniec upewnij się, że wszystkie połączenia masy są ze sobą połączone, aby zapewnić wspólny punkt odniesienia dla obwodu.
Przykłady kodu i omówienie
const int buzzerPin = 14; // pin brzęczyka
void setup()
{
pinMode(buzzerPin, OUTPUT); // Ustaw jako wyjście
}
W kodzie definiujemy stałą zmienną buzzerPin, która jest ustawiona na 14, wskazując pin GPIO podłączony do bazy tranzystora. W funkcji setup() ustawiamy ten pin jako WYJŚCIE, co pozwala ESP32 sterować brzęczykiem.
void loop()
{
for (int i = 0; i < 50; i++) // Pętla 50 razy i odtwarzanie krótkiego tonu za każdym razem
{
digitalWrite(buzzerPin, HIGH); // Ustaw na HIGH, aby brzęczyk wydał dźwięk
delay(3); // Czekaj 3 milisekundy
digitalWrite(buzzerPin, LOW); // LOW, aby wyłączyć brzęczyk
delay(3); //
}
delay(1000); // Czekaj 1 s przed rozpoczęciem następnej pętli
}
Funkcja loop() zawiera pętlę for, która wykonuje się 50 razy. Każda iteracja szybko włącza i wyłącza brzęczyk, wytwarzając ton. Opóźnienia 3 milisekund kontrolują, jak długo brzęczyk jest aktywowany i dezaktywowany, a 1-sekundowe opóźnienie na końcu pętli zapewnia pauzę przed powtórzeniem.
Demonstracja / Czego się spodziewać
Po zakończeniu okablowania i wgraniu kodu powinieneś usłyszeć serię krótkich tonów wytwarzanych przez brzęczyk. Jeśli brzęczyk nie wydaje dźwięku, sprawdź połączenia, zwłaszcza orientację tranzystora i wartość rezystora. Upewnij się, że w kodzie użyto prawidłowego pinu i że ESP32 jest odpowiednio zasilany.
Podczas demonstracji, jeśli napotkasz problemy, może to być spowodowane nieprawidłowym okablowaniem lub użyciem niewłaściwego pinu dla brzęczyka. Sprawdź okablowanie zgodnie z instrukcjami i upewnij się, że zasilanie jest wystarczające (na wideo w 08:15).
Znaczniki czasu wideo
- 00:00 Start
- 1:52 Wprowadzenie do projektu
- 4:11 Objaśnienie okablowania
- 8:11 Wybór płytki ESP32 i portu COM w Arduino IDE
- 9:53 Objaśnienie kodu Arduino
- 13:17 Demonstracja projektu
- 13:58 Kod i demonstracja 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
Zasoby i odniesienia
-
DokumentacjaESP32 Tutorial 14/55- SunFounder Resources page for custom tonedocs.sunfounder.com
Pliki📁
Karta katalogowa (pdf)
-
Buzzer MB12A05 C96093 datasheet
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
NPN Epitaxial Silicon Transistor SS8050 datasheet
SS8050-datasheet.pdf0.19 MB