Tutorial ESP32 14/55 - Reproduzindo Notas Musicais Personalizadas Usando o Kit de Aprendizado IoT SunFounder ESP32
Neste tutorial, aprenderemos como usar o microcontrolador SunFounder ESP32 para tocar notas musicais usando um buzzer passivo e um transistor. O projeto tem como objetivo demonstrar como gerar som com frequências específicas controlando o buzzer através dos pinos GPIO do ESP32.

Vamos conectar um buzzer passivo ao ESP32, o que nos permitirá produzir diferentes notas musicais com base na frequência que fornecemos. Esta configuração inclui o uso de um transistor para ligar e desligar o buzzer em altas velocidades, criando ondas sonoras que podemos ouvir. Para mais esclarecimentos sobre o projeto, não deixe de conferir o vídeo (no vídeo aos 00:30).
Hardware Explicado
Os principais componentes utilizados neste projeto incluem o microcontrolador SunFounder ESP32, um botão piezoelétrico passivo e um transistor NPN (2N8050). O ESP32 é uma placa de desenvolvimento poderosa com capacidades integradas de Wi-Fi e Bluetooth, tornando-a versátil para várias aplicações de IoT. Neste caso, ele gerará sinais para controlar o buzzer.
O botão passivo opera gerando som quando uma voltagem alternada é aplicada a ele. Ao contrário dos botões ativos, que têm um oscilador embutido, os botões passivos requerem um sinal externo para produzir som. O transistor atua como um interruptor, permitindo que o ESP32 controle o botão sem alimentá-lo diretamente, garantindo que a classificação de corrente do microcontrolador não seja excedida.
Detalhes da Ficha Técnica
| Fabricante | SunFounder |
|---|---|
| Número da peça | Buzzer Passivo |
| Tensão de Operação | 3,3 V - 5 V |
| Frequência Resonante | 2 kHz - 4 kHz |
| Consumo Atual | ≤ 30 mA |
| Nível de Pressão Sonora | ≥ 70 dB |
| Pacote | Furo por onde passar |
| Notas / variantes | None |
- Garanta a polaridade correta ao conectar o buzzer.
- Use um resistor limitador de corrente para a base do transistor.
- Conecte o buzzer a uma fonte de alimentação compatível com sua classificação de tensão.
- Cuidado para não exceder a classificação máxima de corrente do transistor.
- Mantenha a fiação organizada para evitar curto-circuitos.
- Teste o circuito antes de carregar o código para evitar danos aos componentes.
- Use uma placa de ensaio para conexões fáceis de componentes.
- Certifique-se de debouncer entradas se estiver usando botões.
- Considere adicionar um dissipador de calor para o transistor se utilizado em alta corrente.
Instruções de fiação

Para conectar os componentes, comece ligando o terminal positivo do buzzer passivo ao pino de 3,3V no ESP32. O terminal negativo do buzzer deve ser conectado ao coletor do transistor NPN. O pino do emissor do transistor deve ser ligado ao terra (GND) do ESP32.
Em seguida, conecte um resistor de 1 kΩ da base do transistor ao pino GPIO 14 do ESP32. Este resistor limita a corrente que flui para a base do transistor. Por fim, certifique-se de que todas as conexões de terra estejam interligadas para fornecer uma referência comum para o circuito.
Exemplos de Código e Tutorial
const int buzzerPin = 14; // the buzzer pin
void setup()
{
pinMode(buzzerPin, OUTPUT); // Set as output
}
No código, definimos uma variável constante.buzzerPinque está configurado para 14, indicando o pino GPIO conectado à base do transistor. Nosetup()função, configuramos este pino como uma SAÍDA, permitindo que o ESP32 controle o buzzer.
void loop()
{
for (int i = 0; i < 50; i++) // Loop 50 times and play a short tone each time
{
digitalWrite(buzzerPin, HIGH); // Set to HIGH to make the buzzer sound
delay(3); // Wait for 3 milliseconds
digitalWrite(buzzerPin, LOW); // LOW to turn off the buzzer
delay(3); //
}
delay(1000); // Wait for 1s before starting the next loop
}
Oloop()A função contém um loop que é executado 50 vezes. Em cada iteração, o alarme é ligado e desligado rapidamente, produzindo um tom. Os atrasos de 3 milissegundos controlam quanto tempo o alarme fica ativado e desativado, enquanto um atraso de 1 segundo no final do loop proporciona uma pausa antes de repetir.
Demonstração / O que Esperar
Uma vez que a fiação esteja completa e o código esteja carregado, você deve ouvir uma série de tons curtos produzidos pelo buzzer. Se o buzzer não estiver emitindo som, verifique suas conexões, especialmente a orientação do transistor e o valor do resistor. Certifique-se de que o pino correto esteja sendo usado no código e que o ESP32 esteja alimentado corretamente.
Durante a demonstração, se você enfrentar problemas, pode ser devido a fiação incorreta ou ao uso do pino errado para o buzzer. Verifique a fiação em relação às instruções e certifique-se de que a fonte de energia é adequada (no vídeo às 08:15).
Marcas de Tempo do Vídeo
- 00:00 Início
- 1:52 Introdução ao projeto
- 4:11 Fiação Explicada
- 8:11 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 9:53 Código Arduino explicado
- Demonstração do projeto 13:17
- 13:58 Código e demonstração do Projeto 2
const int buzzerPin = 14; // o pino do botão de alarme
void setup()
{
pinMode(buzzerPin, OUTPUT); // Defina como saída
}
void loop()
{
for (int i = 0; i < 50; i++) // Repita 50 vezes e toque um tom curto a cada vez.
{
digitalWrite(buzzerPin, HIGH); // Defina como ALTO para fazer o buzzer soar.
delay(3); // Aguarde 3 milissegundos
digitalWrite(buzzerPin, LOW); // BAIXO para desligar o alarme
delay(3);
}
delay(1000); // Aguarde 1s antes de iniciar o próximo loop.
}
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoTutorial ESP32 14/55 - Página de recursos da SunFounder para tom personalizadodocs.sunfounder.com
Arquivos📁
Folha de dados (pdf)
-
Ficha técnica do Buzzer MB12A05 C96093
Buzzer_MB12A05_C96093_datasheet.pdf0.97 MB -
Transistor de Silício Epitaxial NPN SS8050 ficha técnica
SS8050-datasheet.pdf0.19 MB