Usando o buzzer com Arduino – Transdutor piezo elétrico
Ouvir e falar certamente é uma das habilidades mais importantes que temos. O som é uma forma muito eficiente de comunicação. Então que tal um pouco de som com seu Arduino? Nesse tutorial iremos aprender a usar um dispositivo um tanto quanto barulhento, O sonorizador piezo. Para isso usaremos um buzzer junto ao Arduino.
[toc]
Relembrar é viver
Todo mundo se lembra daqueles cartões de natal que tocavam Jingle Bells, não é? Eu gostava muito! Era intrigante imaginar como era possível sair som de um simples cartão natalino. Estava acostumado a ouvir sons saindo de grandes auto-falantes e, de repente, me deparava com um cartão que era capaz de tocar música.
Alguns anos depois descobri como funcionavam esses cartões, eles usam um dispositivo chamado transdutor piezo elétrico.
Transdutor piezo elétrico
A palavra piezo é de origem grega e significa pressionar, torcer. Piezos são elementos que utilizam o efeito piezoelétrico.
Do famoso portal wikipedia, temos que:
Piezoeletricidade é a capacidade de alguns cristais gerarem tensão elétrica por resposta a uma pressão mecânica.
Sendo assim, alguns materiais possuem a capacidade de gerar tensão elétrica quando são submetidos a uma força externa. Uma das aplicações dele é como sensores de batida, como em baterias elétricas. Outro lugar comum de encontrá-los, é em isqueiros, que transformam o movimento do ignitor em faísca.
O mais interessante é que o contrario também é verdade. Quando inserimos um diferencial de tensão no cristal, o cristal transforma energia elétrica em energia mecânica. Dessa forma, o piezo se mexe.
Através desse efeito, podemos alimentar o transdutor com um tensão variável, com o intuito de obter sons.
O Som
O som é a propagação de uma vibração acústica em um meio material elástico, tal como o ar e a água, que seja perceptível pelo aparelho auditivo humano. Essa vibração gera o movimento das partículas desses materiais que, com isso, transmitem o som.
Como seres humanos, temos como um de nossos principais sensores o sistema auditivo. Além de nos permitir escutar, ele também está intimamente ligado ao equilíbrio do nosso corpo. (Recomendo a todos que estudem sobre os sistemas sensoriais do corpo humano. O que tentamos fazer com robótica, já está pronto na natureza).
Em resumo, o ouvido recebe o som e transforma em impulsos nervosos que serão enviados para nosso cérebro, que terá o trabalho de interpretar a informação.
O nosso aparelho auditivo é capaz de ouvir vibrações com frequência mínima de 20Hz, enquanto a frequência máxima chega a 20.000Hz. Sons cuja frequência seja maior que 20kHz são denominados ultrassons, enquanto que aqueles abaixo de 20Hz são chamados de infrassons.
Sabendo que o som é a propagação de uma vibração entre 20Hz e 20kHz, podemos usar a propriedade do transdutor piezo elétrico de se mexer ao aplicarmos uma tensão elétrica e gerar som.
Para isso, podemos colocar uma onda de tensão na faixa de frequência audível , assim o transdutor vibrará na mesma frequência, emitindo som. Veremos isso na prática durante a experiência.
Como eles são?
Em geral, o piezo é encontrado em formato de disco com dois fios. Um vermelho, o positivo, e um preto, o negativo. Veja um típico piezo na imagem abaixo.
Quando o assunto é Arduino, utilizamos muito o buzzer, que nada mais é que um disco piezo encapsulado em uma proteção plástica.
Podemos usar ele sozinho ou em um módulo, tal como o da GBK robots:
Mãos à obra – Fazendo uma sirene com um buzzer
Componentes necessários
Montando o projeto
Agora vamos conectar os componentes do projeto. Para isso, desligue o cabo USB de seu Arduino e monte seu circuito conforme a figura a seguir. A perna positiva do buzzer ficará no pino 9 e a negativa no GND.
Veja como ficou o nosso:
Conectando o Arduino ao computador
Conecte seu Arduino ao computador e abra a IDE Arduino.
Antes de carregar um programa, você precisa selecionar qual porta você deseja usar para fazer carregar o programa no Arduino (upload). Dentro do Arduino IDE, clique no menu Ferramentas (tools) e abra o submenu Porta(Port). Clique na porta que seu Arduino está conectado, tal como COM3 ou COM4. Geralmente aparece o nome da placa Arduino : “COM3 (Arduino/Genuino Uno)”.
Você também precisa garantir que o tipo de placa apropriado está selecionado em Ferramentas(Tools) no submenu Placa (Board).
Programando
Crie um programa (sketch) e salve com o nome de “programa_buzzer_sirene”.
Com o seu programa salvo, escreva nele o código conforme escrito abaixo.
float seno; int frequencia; void setup() { //define o pino 9 como saída pinMode(9,OUTPUT); } void loop() { for(int x=0;x<180;x++){ //converte graus para radiando e depois obtém o valor do seno seno=(sin(x*3.1416/180)); //gera uma frequência a partir do valor do seno frequencia = 2000+(int(seno*1000)); tone(9,frequencia); delay(2); } }
Após escrever o código, clique em Carregar (Upload) para que o programa seja transferido para seu Arduino.
Colocando para funcionar
Caso tenha ocorrido tudo como esperado, o buzzer deve começar a “gritar” como uma sirene.
Cuidado: Apesar de surpreendente, não entendedores podem ficar bravos com você devido ao barulho!
Entendendo a fundo
Entendendo o Software
Seno
Para que o nosso buzzer emita o som de uma sirene, precisamos que sua frequência do som emitido aumente e diminua. Dessa forma, o buzzer irá variar de frequências mais graves até frequências mais agudas e vice-versa.
Para isso, usaremos a função seno em conjunto com a variável parâmetro de for, o x, que varia de 0 a 180. A ideia é que x simbolize 0 a 180 graus, como a função sin faz o cálculo usando valores em radianos. Precisamos converter graus para radianos. A variável seno receberá o valor de seno para o ângulo x convertido em radianos.
seno=(sin(x*3.1416/180));
Seno será um valor entre 0 e 1, visto que trabalharemos com um ângulo menor que 180 graus. Dessa forma, multiplicaremos por 1000 para que ele varie de 0 a 1000 e posteriormente somamos a 2000, que será a frequência mínima do som.
frequencia = 2000+(int(seno*1000));
Portanto, teremos a variável frequência variando entre 2000 e 3000 em função de x, que irá variar conforme o bloco for incrementá-lo.
Tone
Por fim, no Arduino, temos uma função que gera uma onda pulsante na frequência desejada. O nome dessa função é tone.
tone(pino,frequência); tone(pino,frequência,duração);
Para usar essa função, devemos definir o pino de saída, a frequência do tom e, caso queira, a duração em milissegundos da onda. Em nossa experiência usamos da seguinte forma:
tone(9,frequencia);
Veja que a frequência de saída irá variar entre 2000Hz e 3000Hz.
Vale lembrar que quando o x for 180, o programa irá sair de for, porem irá executá-lo novamente, devido ao fato de tudo que está dentro da função loop ser executado ciclicamente.
void loop() { for(int x=0;x<180;x++){ //converte graus para radiando e depois obtém o valor do seno seno=(sin(x*3.1416/180)); //gera uma frequência a partir do valor do seno frequencia = 2000+(int(seno*1000)); tone(9,frequencia); delay(2); } }
Entendendo o Hardware
O som da sirene que ouvimos é resultado de um sinal digital de frequência variável na saída do pino 9, que ao energizar a perna positiva buzzer, o mesmo emite um som com frequência igual ao da saída do Arduino.
Para que o som seja o de uma sirene, aumentamos e diminuímos, através do programa, a frequência de saída do Arduino. Caso colocássemos uma frequência fixa, teríamos um som continuo.
Experimente colocar uma frequência contante tal como o código abaixo. Experimente valores entre 0Hz e 30000Hz e veja na prática a faixa de sons audíveis.
int frequencia; void setup() { //define o pino 9 como saída pinMode(9,OUTPUT); } void loop() { frequencia=440; // frequência correspondente a notá Lá tone(9,frequencia); }
Fechamento
Esperamos que tenham gostado, deixe seu comentário com duvidas, sugestões ou com a foto ou vídeo de seu projeto!! Compartilhe à vontade.
por acaso posso usar o buzzer para dizer uma palavra
tipo pare ou continue
Boa noite, estou fazendo um projeto tcc de uma casa automatizada, então no caso gostaria se é possível interligar o buzzer junto à um sensor? Para simular um alarme de segurança.
Boa tarde, sabe me dizer qual a frequência máxima que o buzzer aguenta?
Parabéns, explicação bem detalhada e muito simples de entender.
PARABÉNS. VOCÊS SÃO FERAS NO QUE FAZEM.
Não é necessário o uso de resistor nesse circuito?
Oi. Não precisa
O uso de resistores em alguns dispositivos ligados a um micro controlador se deve ao fato de que quando esses dispositivos são acionados a sua resistência interna (na verdade impedância) é diminuída (isso gera aumento de corrente de pelo dispositivo) , é o caso de leds e de transistores, no caso desse tipo de material (piezoelétricos) quando você o expõe a uma tensão não haverá mudança significativa em sua resistência elétrica(não aumentando significativamente a corrente elétrica), tornando assim dispensável o uso de um resistor.
Aqui funcionou apenas com resistor.