Os Piezo Buzzers são dispositivos simples que produzem som, amplamente usados em projetos eletrónicos. Eles alertam os utilizadores com bipes, tons ou alarmes.
Existem dois tipos principais de buzzers: ativos e passivos. Cada tipo funciona de forma diferente e é adequado para aplicações distintas. Os buzzers ativos têm osciladores incorporados, por isso produzem som quando alimentados. Os buzzers passivos precisam de um sinal externo, como uma onda quadrada, para gerar som.
Nas secções seguintes, vamos explorar as diferenças entre buzzers ativos e passivos, como os ligar e como programá-los eficazmente.
Peças Necessárias
Vai precisar de um buzzer passivo e de um ativo. Listei dois abaixo, mas existem muitas alternativas. Note que o buzzer ativo é para 5V, enquanto o buzzer passivo funciona entre 3V e 5V.
Quanto ao microcontrolador, usei um Arduino Uno para este projeto, mas qualquer outro Arduino ou ESP32 também serve. Além disso, uma breadboard, alguns cabos e um conjunto de resistores serão úteis.

Buzzer Ativo 5V

Buzzer Passivo 3..5V

Kit de resistores

Arduino Uno

Cabo USB para Arduino UNO

Conjunto de fios Dupont

Breadboard
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Princípio de Funcionamento dos Piezo Buzzers
Um piezo buzzer funciona com base no efeito piezoelétrico. Este efeito ocorre em certos materiais cerâmicos que mudam de forma quando uma tensão é aplicada.
Dentro do buzzer há um disco fino de cerâmica piezoelétrica. Este disco está ligado a um diafragma metálico. O diafragma metálico atua como uma membrana flexível.

Quando uma tensão é aplicada nos terminais, cria-se um campo elétrico no material cerâmico. A cerâmica expande-se ou contrai-se dependendo da polaridade da tensão. A alteração na dimensão é muito pequena, mas suficiente para dobrar o diafragma metálico ligado.

Se for aplicada uma tensão DC constante, o disco move-se para uma posição e mantém-se lá (buzzer passivo). Neste caso, não é produzido som contínuo. Para gerar som, deve ser aplicada uma tensão alternada. A tensão muda de polaridade a uma frequência específica. Os buzzers ativos têm um circuito oscilador incorporado que gera a tensão alternada.

À medida que a tensão alterna, o disco cerâmico expande-se e contrai-se rapidamente. Isto faz com que o diafragma metálico se flexione para cima e para baixo. O movimento do diafragma empurra e puxa o ar à volta. Isto cria ondas de pressão no ar, que ouvimos como som.
A frequência do som é igual à frequência do sinal aplicado. A intensidade depende da amplitude da tensão e do design mecânico do buzzer. Muitos piezo buzzers são projetados para ressoar a uma frequência específica para aumentar o volume do som.
Diferenças entre Buzzers Passivos e Ativos
Buzzer Passivo
Um buzzer passivo contém apenas o elemento piezoelétrico e o diafragma. Não inclui um circuito oscilador interno. Quando aplica tensão DC, não produz som contínuo. Apenas faz um clique quando a tensão muda.
A imagem seguinte mostra as partes de um buzzer passivo. Como pode ver, a carcaça apenas segura o elemento piezo, sem eletrónica:

Para gerar um tom com um buzzer passivo, deve aplicar um sinal alternado. Normalmente, é uma onda quadrada gerada por um Arduino ou ESP32 usando PWM. A frequência de saída define diretamente a frequência do som. Isto permite gerar diferentes tons e melodias simples.

Buzzer Ativo
Um buzzer ativo inclui um circuito oscilador incorporado. Quando aplica uma tensão DC dentro da gama especificada, o circuito interno gera automaticamente um sinal AC para o elemento piezo. O buzzer produz um tom fixo sem necessidade de geração externa de sinal. Só precisa de colocar o pino de controlo em HIGH para que soe. A frequência é pré-definida pelo oscilador interno – tipicamente entre 2 a 4 kHz – e não pode ser alterada.

Resumo
Os buzzers passivos oferecem controlo total sobre frequência e temporização. São adequados para aplicações que requerem diferentes tons ou melodias. Os buzzers ativos são mais simples de usar. São indicados para alarmes ou indicadores de estado onde apenas um tom fixo é necessário.
Do ponto de vista do microcontrolador, um buzzer passivo requer um pino capaz de PWM ou geração de sinal baseada em temporizador. Um buzzer ativo só precisa de um pino digital que possa alternar entre HIGH e LOW.
Reconhecer Buzzers Ativos e Passivos
Buzzers passivos e ativos parecem semelhantes por fora e são facilmente confundidos. Identificar se um buzzer é ativo ou passivo é crucial antes de o ligar ao seu Arduino ou ESP32.
Como mencionado antes, os buzzers ativos têm um circuito incorporado com oscilador. Isso significa que só precisam de uma tensão DC para produzir som. Por outro lado, os buzzers passivos não têm este oscilador interno. Precisam de um sinal externo, como uma onda quadrada, para gerar som.
Parte traseira
Normalmente, a parte traseira de um buzzer ativo está completamente coberta com resina epóxi preta, enquanto os buzzers passivos expõem uma placa de circuito:

Altura
Devido ao circuito interno, a carcaça de um buzzer ativo é normalmente mais alta do que a de um buzzer passivo e o pino do terminal positivo é frequentemente mais longo:

Etiqueta
Finalmente, se comprar um buzzer novo, os buzzers ativos frequentemente têm uma etiqueta sobre a saída de som que deve remover antes de usar o buzzer:

Resistência
Além da aparência, pode também medir a resistência do buzzer para determinar o seu tipo. Buzzers ativos têm uma resistência mais alta, cerca de 40 Ω, ou medem como circuito aberto. Buzzers passivos, por outro lado, têm uma resistência mais baixa, superior a 20 Ω entre os seus terminais.
Teste com tensão
O método mais seguro para determinar o tipo de buzzer é ligá-lo a 5V. Um buzzer ativo emitirá som, enquanto um buzzer passivo permanecerá silencioso ou produzirá um único clique.
Resumo
A tabela seguinte resume as diferenças entre buzzers ativos e passivos:
| Característica | Buzzer Ativo | Buzzer Passivo |
|---|---|---|
| Oscilador Interno | Sim | Não |
| Som DC Direto | Sim | Não ou cliques |
| Parte traseira | Selada com epóxi preta | PCB/circuito aberto |
| Capacidade de som | Tom fixo | Vários tons/musical |
| Resistência | Alta (≈ 40 Ω) | Baixa (≈ 20 Ω) |
| Corrente | 1 … 15 mA | 1 … 5 mA (mas com picos de corrente) |
Escolher o Buzzer Certo para os Projetos
Selecionar o buzzer certo depende das necessidades e complexidade do seu projeto. Buzzers ativos são simples de usar. Têm um oscilador incorporado, por isso só precisa de fornecer energia para produzir som. Isto torna-os ideais para alertas ou alarmes simples onde quer um tom constante sem programação extra.
Por outro lado, buzzers passivos precisam de um sinal externo para gerar som. Não produzem som por si só. Em vez disso, envia uma onda quadrada ou sinal de tom do seu Arduino para controlar o tom e a duração. Esta flexibilidade torna os buzzers passivos perfeitos para projetos que precisam de melodias, efeitos sonoros ou tons variáveis.
Se quiser poupar tempo e manter o código simples, escolha um buzzer ativo. É plug-and-play e funciona bem para notificações básicas. No entanto, se o seu projeto envolve música ou padrões sonoros complexos, um buzzer passivo oferece mais controlo e criatividade.
Considere também os requisitos de energia e tamanho. Buzzers ativos consomem frequentemente mais corrente devido ao oscilador interno. Buzzers passivos podem ser mais eficientes energeticamente se controlar o sinal cuidadosamente. Além disso, pode comprá-los sem carcaça, o que torna os buzzers passivos especialmente adequados para projetos compactos.
Não se esqueça de verificar a folha de dados para as classificações de tensão e corrente para garantir compatibilidade.
Ligar um Buzzer Ativo ao Arduino
Ligar um buzzer ativo a um Arduino é simples. Como os buzzers ativos têm osciladores incorporados, só precisam de uma tensão DC para produzir som. Isto significa que não precisa de gerar um sinal de tom a partir do Arduino; simplesmente alimentar o buzzer fará com que ele emita som. No entanto
Comece por identificar os terminais positivo e negativo do buzzer. O terminal positivo é geralmente marcado com um sinal de mais (+) ou um fio mais longo.

Ligue este terminal a um dos pinos digitais do Arduino, como o pino 8. Depois, ligue o terminal negativo ao pino GND (terra) do Arduino, conforme mostrado abaixo:

Uma vez ligado, pode controlar o buzzer definindo o pino digital para HIGH ou LOW – tal como faria para controlar um LED. Definir o pino para HIGH alimenta o buzzer e faz com que ele soe, enquanto definir para LOW desliga-o.
Abaixo está um exemplo mínimo de sketch que liga o buzzer durante um segundo, depois desliga durante um segundo, repetidamente:
const int buzzerPin = 8;
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
digitalWrite(buzzerPin, HIGH); // Turn buzzer on
delay(1000); // Wait for 1 second
digitalWrite(buzzerPin, LOW); // Turn buzzer off
delay(1000); // Wait for 1 second
}
Este código faz o buzzer emitir um bip ligado e desligado a cada segundo. Como o buzzer ativo gere internamente a geração do tom, não pode usar a tone() função ou sinais PWM para controlar o buzzer.
Ligar um Buzzer Passivo ao Arduino
Ligar um buzzer passivo a um Arduino é fácil, mas requer um pouco mais de atenção do que um buzzer ativo. Ao contrário dos buzzers ativos, os buzzers passivos precisam de um sinal PWM para produzir som, por isso vai usar um dos pinos digitais do Arduino capazes de gerar PWM. A tabela seguinte lista os pinos PWM para as placas Arduino comuns:
| Placa | Pinos PWM |
|---|---|
| Arduino UNO | 3, 5, 6, 9, 10, 11 |
| Arduino Nano | 3, 5, 6, 9, 10, 11 |
| Arduino Mega 2560 | 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46 |
| Arduino Leonardo | 3, 5, 6, 9, 10, 11, 13 |
| Arduino Micro | 3, 5, 6, 9, 10, 11, 13 |
| Arduino Due | 2 a 13 |
| Arduino Zero | 3, 4, 5, 6, 8, 9, 10, 11, 12, 13 |
Para ligar o buzzer, comece por identificar os terminais positivo e negativo do buzzer. O terminal positivo é geralmente marcado na PCB ou há um sinal de mais na carcaça. Muitas vezes o sinal de mais é muito fraco e difícil de ver:

Ligue o terminal positivo a um pino digital com capacidade PWM no Arduino, como o pino 11. Depois, ligue o terminal negativo ao terra (GND) do Arduino.
Buzzers passivos consomem muito pouca corrente, em média entre 1 a 5 mA. Mas podem ter picos de corrente durante a comutação. Por isso, recomenda-se adicionar um resistor limitador de corrente em série com o buzzer. Um resistor de 100 Ω funciona bem na maioria dos casos. Ligue o resistor entre o pino PWM 11 do Arduino e o terminal positivo do buzzer, conforme mostrado abaixo.

No entanto, se achar que o volume está muito baixo, pode tentar remover o resistor de 100 Ω ou substituí-lo por um resistor de valor inferior.
O circuito permite que o Arduino envie sinais de frequência variável para o buzzer passivo, permitindo-lhe produzir diferentes tons. Lembre-se, o buzzer passivo não soa a menos que gere um sinal PWM através do seu código.
Exemplos de Código para Buzzers Ativos
Buzzers ativos são simples de usar com Arduino porque só precisam de uma tensão DC para produzir som. Não precisa de gerar um sinal de tom; basta ligar ou desligar o buzzer conectando-o a um pino digital GPIO.
Aqui está um exemplo básico para fazer um buzzer ativo emitir um bip durante um segundo:
int buzzerPin = 8;
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
digitalWrite(buzzerPin, HIGH); // Turn buzzer on
delay(1000); // Wait for 1 second
digitalWrite(buzzerPin, LOW); // Turn buzzer off
delay(1000); // Wait for 1 second
}
Este código define o pino do buzzer como saída. Depois, liga o buzzer durante um segundo e desliga durante um segundo repetidamente. O buzzer emitirá um bip constante durante o estado HIGH.
Também pode criar padrões simples alterando os tempos de delay. Por exemplo, para fazer um bip curto seguido de uma pausa:
void loop() {
digitalWrite(buzzerPin, HIGH);
delay(200); // Short beep
digitalWrite(buzzerPin, LOW);
delay(800); // Longer pause
}
Esta abordagem funciona bem para alarmes, notificações ou efeitos sonoros simples. Como os buzzers ativos têm osciladores incorporados, não precisa de se preocupar em gerar frequências no seu código. No entanto, pode alterar ligeiramente a frequência adicionando um resistor em série, da mesma forma que fizemos para o buzzer passivo. Experimente o resistor de 100 Ω e ouvirá um tom ligeiramente mais baixo.
Em resumo, controlar um buzzer ativo com Arduino é simples. Basta aplicar sinais HIGH ou LOW para ligar ou desligar o som.
Exemplos de Código para Buzzers Passivos
Buzzers passivos exigem um pouco mais de trabalho do que os ativos porque não geram som por si só. Em vez disso, tem de enviar-lhes um sinal de onda quadrada a uma frequência específica para produzir um tom. Mas a função Arduino tone() facilita isso.
Aqui está um exemplo simples que toca um tom de 1 kHz durante um segundo num buzzer passivo ligado ao pino 11:
int buzzerPin = 11;
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
tone(buzzerPin, 1000); // Play 1000 Hz tone
delay(1000); // Wait for 1 second
noTone(buzzerPin); // Stop the tone
delay(1000); // Wait for 1 second before repeating
}
Este código define o pino 11 como saída e usa tone() para gerar uma onda quadrada de 1000 Hz. O buzzer soa durante um segundo, depois para durante um segundo, criando um padrão de bip.
Também pode criar melodias alterando a frequência e a duração. Por exemplo, para tocar duas notas diferentes em sequência:
int buzzerPin = 11;
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
tone(buzzerPin, 523); // Play C5 note (523 Hz)
delay(500);
tone(buzzerPin, 659); // Play E5 note (659 Hz)
delay(500);
noTone(buzzerPin);
delay(1000);
}
Neste exemplo, o buzzer toca uma nota C5 seguida de uma nota E5, cada uma com meio segundo de duração. A função noTone() para de emitir som antes da pausa.
Se quiser mais controlo, pode gerar tons manualmente usando digitalWrite() e delayMicroseconds(), mas tone() é geralmente suficiente e mais fácil de usar. Aqui está o mesmo código anterior mas com tone() substituído:
int buzzerPin = 11;
void playTone(int frequency, int durationMs) {
long halfPeriod = 1000000L / (2L * frequency);
long cycles = (long)frequency * durationMs / 1000L;
for (long i = 0; i < cycles; i++) {
digitalWrite(buzzerPin, HIGH);
delayMicroseconds(halfPeriod);
digitalWrite(buzzerPin, LOW);
delayMicroseconds(halfPeriod);
}
}
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
playTone(523, 500); // C5 (523 Hz) for 500 ms
delay(10); // Short pause between notes
playTone(659, 500); // E5 (659 Hz) for 500 ms
delay(1000); // Equivalent to noTone() + delay(1000)
}
Lembre-se, buzzers passivos precisam de um sinal de frequência para produzir som, por isso use sempre tone() ou métodos equivalentes para os controlar. Para mais exemplos, veja o nosso tutorial Use A Piezo Buzzer With Arduino.
Pode usar a seguinte ferramenta para encontrar as frequências e durações para a função tone() tocar os sons que deseja:
Resolução de Problemas Comuns
Ao trabalhar com buzzers, pode encontrar alguns problemas comuns. Felizmente, a maioria destes problemas é fácil de resolver com algumas verificações e ajustes simples.
Primeiro, se o seu buzzer não emitir som, comece por verificar a ligação dos fios. Certifique-se de que os pinos positivo e negativo do buzzer estão corretamente ligados ao pino de saída e ao terra do Arduino. A polaridade invertida pode impedir o funcionamento do buzzer, especialmente nos buzzers ativos.
De seguida, verifique o seu código. Para buzzers ativos, um simples digitalWrite para HIGH deve produzir som. Para buzzers passivos, precisa usar a função tone() para gerar uma frequência. Se esquecer isto, o buzzer ficará silencioso ou ouvirá apenas um clique.
Se o buzzer emitir um som fraco ou distorcido, o problema pode estar na fonte de alimentação. Certifique-se de que a sua placa Arduino fornece corrente suficiente. Por vezes, usar uma fonte de alimentação separada ou adicionar um transistor para controlar o buzzer ajuda.
Outro problema é o som contínuo quando espera sons intermitentes. Isto acontece geralmente se o seu código não tiver temporizações ou delays adequados. Use a função delay() ou temporizadores para controlar quando o buzzer liga e desliga.
Finalmente, note que não pode ajustar o volume do buzzer via código; quer seja um buzzer passivo ou ativo. No entanto, pode adicionar um resistor em série a um buzzer passivo para reduzir a tensão e, portanto, o volume até certo ponto.
Conclusões
Os buzzers adicionam som e feedback aos seus projetos Arduino de forma simples e eficaz. Buzzers ativos são fáceis de usar porque só precisam de energia para produzir som. Basta ligá-los a um pino digital e ao terra, depois colocar o pino em HIGH para ouvir um tom. Buzzers passivos, por outro lado, exigem mais controlo. Deve gerar um sinal de onda quadrada para criar diferentes tons, oferecendo mais flexibilidade para melodias e efeitos sonoros.
Escolher o buzzer certo depende das necessidades do seu projeto. Se quiser um bip rápido ou alarme, um buzzer ativo é a melhor escolha. Se quiser tocar músicas ou sons personalizados, opte por um buzzer passivo. Verifique sempre a folha de dados do buzzer para confirmar o tipo e os requisitos de tensão.
Ao ligar buzzers ao seu Arduino, lembre-se de usar resistores limitadores de corrente se necessário e evite alimentá-los diretamente de pinos que não fornecem corrente suficiente.
Se tiver alguma dúvida, sinta-se à vontade para deixá-la na secção de comentários.
Boas experiências 😉

