ESP32 Tutorial 14/55 - Aangepaste muzieknoten afspelen met de SunFounder ESP32 IoT-leerset
In deze tutorial leren we hoe we de SunFounder ESP32-microcontroller kunnen gebruiken om muzieknoten af te spelen met behulp van een passieve zoemer en een transistor. Het project is bedoeld om te demonstreren hoe geluid met specifieke frequenties kan worden gegenereerd door de zoemer aan te sturen via de GPIO-pinnen van de ESP32.

We verbinden een passieve zoemer met de ESP32, waarmee we verschillende muzieknoten kunnen produceren op basis van de frequentie die we opgeven. Deze opstelling omvat het gebruik van een transistor om de zoemer op hoge snelheid aan en uit te schakelen, waardoor geluidsgolven ontstaan die we kunnen horen. Voor verdere verduidelijking van het project, bekijk zeker de video (in video op 00:30).
Hardware uitgelegd
De belangrijkste componenten die in dit project worden gebruikt, zijn de SunFounder ESP32-microcontroller, een passieve zoemer en een NPN-transistor (2N8050). De ESP32 is een krachtig ontwikkelbord met ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor het veelzijdig is voor verschillende IoT-toepassingen. In dit geval genereert het signalen om de zoemer aan te sturen.
De passieve zoemer werkt door geluid te genereren wanneer er een wisselspanning op wordt toegepast. In tegenstelling tot actieve zoemers, die een ingebouwde oscillator hebben, hebben passieve zoemers een extern signaal nodig om geluid te produceren. De transistor fungeert als een schakelaar, waardoor de ESP32 de zoemer kan aansturen zonder deze direct van stroom te voorzien, zodat de stroomsterkte van de microcontroller niet wordt overschreden.
Datasheet-details
| Fabrikant | SunFounder |
|---|---|
| Onderdeelnummer | Passieve zoemer |
| Bedrijfsspanning | 3,3 V - 5 V |
| Resonantiefrequentie | 2 kHz - 4 kHz |
| Stroomverbruik | ≤ 30 mA |
| Geluidsdrukniveau | ≥ 70 dB |
| Behuizing | Doorgaand gat (through-hole) |
| Opmerkingen / varianten | Geen |
- Zorg voor de juiste polariteit bij het aansluiten van de zoemer.
- Gebruik een stroombegrenzende weerstand voor de basis van de transistor.
- Sluit de zoemer aan op een voeding die compatibel is met de spanning.
- Let op dat de maximale stroomsterkte van de transistor niet wordt overschreden.
- Houd de bedrading netjes om kortsluiting te voorkomen.
- Test het circuit voordat je code uploadt om schade aan componenten te voorkomen.
- Gebruik een breadboard voor eenvoudige verbindingen.
- Zorg voor debouncing van invoer als je knoppen gebruikt.
- Overweeg een koellichaam voor de transistor als deze bij hoge stroom wordt gebruikt.
Bedradingsinstructies

Om de componenten te bedraden, begin je met het verbinden van de positieve pool van de passieve zoemer met de 3,3V-pin op de ESP32. De negatieve pool van de zoemer moet worden aangesloten op de collector van de NPN-transistor. De emitterpin van de transistor moet worden verbonden met de grond (GND) van de ESP32.
Verbind vervolgens een weerstand van 1 kΩ van de basis van de transistor naar GPIO-pin 14 op de ESP32. Deze weerstand beperkt de stroom die naar de basis van de transistor vloeit. Zorg er ten slotte voor dat alle aardverbindingen aan elkaar zijn gekoppeld om een gemeenschappelijke referentie voor het circuit te bieden.
Codevoorbeelden & uitleg
const int buzzerPin = 14; // de zoemerpin
void setup()
{
pinMode(buzzerPin, OUTPUT); // Instellen als uitvoer
}
In de code definiëren we een constante variabele buzzerPin die is ingesteld op 14, wat de GPIO-pin aangeeft die is verbonden met de basis van de transistor. In de setup()-functie stellen we deze pin in als OUTPUT, zodat de ESP32 de zoemer kan aansturen.
void loop()
{
for (int i = 0; i < 50; i++) // Loop 50 keer en speel elke keer een korte toon
{
digitalWrite(buzzerPin, HIGH); // Instellen op HIGH om de zoemer te laten klinken
delay(3); // Wacht 3 milliseconden
digitalWrite(buzzerPin, LOW); // LOW om de zoemer uit te schakelen
delay(3); //
}
delay(1000); // Wacht 1 seconde voordat de volgende loop begint
}
De loop()-functie bevat een for-loop die 50 keer wordt uitgevoerd. Elke iteratie schakelt de zoemer snel aan en uit, waardoor een toon ontstaat. De vertragingen van 3 milliseconden bepalen hoe lang de zoemer wordt geactiveerd en gedeactiveerd, terwijl een vertraging van 1 seconde aan het einde van de loop een pauze biedt voordat deze wordt herhaald.
Demonstratie / Wat te verwachten
Zodra de bedrading is voltooid en de code is geüpload, zou je een reeks korte tonen moeten horen die door de zoemer worden geproduceerd. Als de zoemer geen geluid maakt, controleer dan je verbindingen, vooral de oriëntatie van de transistor en de weerstandswaarde. Zorg ervoor dat de juiste pin in de code wordt gebruikt en dat de ESP32 correct van stroom wordt voorzien.
Tijdens de demonstratie kunnen problemen optreden door onjuiste bedrading of het gebruik van de verkeerde pin voor de zoemer. Controleer de bedrading aan de hand van de instructies en zorg ervoor dat de voeding voldoende is (in video op 08:15).
Videotijdstippen
- 00:00 Start
- 1:52 Introductie van het project
- 4:11 Bedrading uitgelegd
- 8:11 ESP32-bord en COM-poort selecteren in Arduino IDE
- 9:53 Arduino-code uitgelegd
- 13:17 Projectdemonstratie
- 13:58 Project 2-code en demonstratie
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
Hulpmiddelen en referenties
-
DocumentatieESP32 Tutorial 14/55- SunFounder Resources page for custom tonedocs.sunfounder.com
Bestanden📁
Datasheet (pdf)
-
Buzzer MB12A05 C96093 datasheet
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
NPN Epitaxial Silicon Transistor SS8050 datasheet
SS8050-datasheet.pdf0.19 MB