É possível construir uma bateria eletrônica com Arduino utilizando componentes relativamente simples e aproveitando um princípio muito interessante da eletrônica: a capacidade de um elemento piezoelétrico transformar uma deformação mecânica em um sinal elétrico.
Quando batemos em um pad contendo um cristal piezoelétrico, o impacto produz um sinal que pode ser detectado por uma das entradas analógicas do Arduino.
A partir daí, podemos utilizar o Arduino para identificar a batida, avaliar sua intensidade e enviar informações para um computador, onde o sinal poderá ser associado aos sons de uma bateria.
Neste projeto, mostro justamente como montar esse circuito e explico também o funcionamento de uma bateria eletrônica do tipo joystick.
Como funciona uma bateria eletrônica?
Em uma bateria acústica, batemos na pele e produzimos diretamente uma vibração sonora.
Na bateria eletrônica, o princípio é diferente.
O pad precisa detectar mecanicamente a batida e convertê-la em uma informação que possa ser processada eletronicamente.
Podemos representar o processo de maneira simplificada:
Batida → sensor → sinal elétrico → processamento → som
É justamente nessa primeira etapa que podemos utilizar um sensor piezoelétrico.
O que é um cristal piezoelétrico?
Um elemento piezoelétrico possui uma característica extremamente interessante: quando sofre uma deformação mecânica, pode gerar uma diferença de potencial elétrico.
Por isso, o mesmo princípio utilizado para produzir sons em determinados dispositivos piezoelétricos também pode ser utilizado no sentido inverso para detectar vibrações e impactos.
Quando batemos no pad da nossa bateria, a vibração chega ao piezo.
O Arduino pode então medir o sinal produzido utilizando uma de suas entradas analógicas. Esse princípio é empregado inclusive nos exemplos clássicos de detecção de batidas com Arduino.
Transformando o piezo em um sensor para bateria
O interessante é que o piezo não precisa ficar exposto.
Ele pode ser instalado abaixo da superfície que será utilizada como pad.
Quando batemos nessa superfície:
baqueta → pad → vibração → piezo → sinal elétrico
O Arduino recebe esse sinal e pode decidir se ocorreu ou não uma batida válida.
Isso permite construir pads utilizando diferentes materiais e formatos.
A posição do piezo e a maneira como ele é mecanicamente acoplado ao pad também influenciam a resposta do sensor.
Ligando o sensor piezoelétrico ao Arduino
No projeto apresentado no vídeo, o sinal é lido pela entrada analógica A0 do Arduino. O programa utiliza analogRead(A0) para obter o valor gerado pela batida.
Uma configuração bastante conhecida para esse tipo de sensor utiliza também um resistor de alto valor em paralelo com o elemento piezoelétrico; projetos de referência frequentemente utilizam 1 MΩ.
É importante lembrar que um piezo pode produzir picos de tensão. Em projetos mais elaborados, especialmente quando os pads podem receber impactos fortes, vale considerar circuitos adicionais de proteção para as entradas do microcontrolador.
Como o Arduino identifica uma batida?
Se simplesmente lermos continuamente a entrada analógica, encontraremos pequenas variações.
Não queremos que qualquer variação seja interpretada como uma batida.
Por isso utilizamos um threshold, ou limiar.
No código disponibilizado junto ao vídeo, por exemplo, encontramos:
threshold = 200
O programa verifica se a leitura do piezo ultrapassou esse valor.
Podemos pensar assim:
valor abaixo do threshold → ignorar
valor acima do threshold → possível batida
O ajuste desse valor influencia diretamente a sensibilidade do pad.
Um threshold muito baixo pode provocar falsos disparos.
Um threshold muito alto pode fazer com que batidas mais fracas não sejam reconhecidas.
É possível detectar a força da batida?
Sim, e essa é uma das partes mais interessantes do projeto.
O sinal produzido pelo piezo varia de acordo com a energia do impacto. Assim, além de saber que houve uma batida, podemos obter informação sobre sua intensidade.
No código do vídeo, o valor detectado é convertido para uma faixa entre 50 e 127 antes do envio da mensagem.
Essa ideia é especialmente útil quando trabalhamos com MIDI, porque a intensidade pode ser utilizada como velocity.
Em outras palavras:
batida fraca → som mais suave
batida forte → maior velocity
Isso aproxima bastante a experiência de tocar um instrumento eletrônico da dinâmica de um instrumento acústico.
Evitando várias notas para uma única batida
Existe um problema interessante.
Quando batemos no pad, o piezo não produz necessariamente apenas um único valor instantâneo. A vibração mecânica pode gerar várias oscilações.
Se simplesmente disparássemos uma nota toda vez que o valor ultrapassasse o threshold, uma única batida poderia ser interpretada como várias.
Por isso, o programa precisa estabelecer uma lógica temporal para identificar uma batida e evitar disparos repetidos.
No código apresentado no vídeo existe justamente um período de controle, incluindo uma variável offTime configurada em 150 ms, além de controles para determinar o início e o final da batida.
Esse é um ótimo exemplo de como um projeto aparentemente simples envolve não apenas eletrônica, mas também processamento do sinal por software.
Arduino, USB e o computador
Depois que o Arduino detecta a batida, precisamos transformar essa informação em algo útil para produzir o som.
Uma possibilidade é transmitir informações pela comunicação serial através da conexão USB.
No código disponibilizado no vídeo, a comunicação serial é inicializada em 115200 baud, e uma função envia três bytes correspondentes a comando, nota e velocidade.
No computador, essas informações podem ser utilizadas juntamente com software apropriado para acionar os sons desejados.
Projetos de bateria eletrônica com Arduino frequentemente utilizam justamente essa arquitetura: os sensores são lidos pelo microcontrolador e as batidas são convertidas em mensagens que posteriormente controlam instrumentos virtuais ou software MIDI.
O que é MIDI?
MIDI não transmite o áudio propriamente dito.
Ele transmite informações musicais.
Uma mensagem pode informar, por exemplo:
qual nota deve ser tocada
quando ela começa
quando termina
com qual intensidade
Isso combina muito bem com uma bateria eletrônica.
Uma determinada nota MIDI pode representar a caixa, outra o bumbo, outra um tom e assim por diante.
No código apresentado no vídeo, por exemplo, é enviada uma mensagem contendo o pitch 47 e a intensidade obtida a partir da leitura do piezo.
Como criar vários pads
Depois de compreender o funcionamento de um único piezo, podemos expandir o conceito.
Em vez de utilizar somente A0, diferentes sensores podem ser conectados a diferentes entradas analógicas.
Teríamos algo semelhante a:
Piezo 1 → Caixa
Piezo 2 → Tom
Piezo 3 → Surdo
Piezo 4 → Prato
Piezo 5 → Bumbo
Cada entrada pode ser associada a uma nota diferente.
Projetos de baterias MIDI baseados em Arduino utilizam exatamente esse princípio para construir controladores com vários pads e pratos.
O problema do crosstalk
Ao acrescentar vários pads aparece outro desafio: crosstalk.
Imagine bater fortemente no pad da caixa. A vibração pode se propagar pela estrutura e chegar ao piezo de outro pad.
O Arduino poderia interpretar isso como duas batidas.
Por isso, além do threshold, baterias eletrônicas com vários sensores podem exigir ajustes mecânicos e de software para separar adequadamente os impactos.
Esse é um bom exemplo de como a construção física do instrumento e a programação precisam trabalhar juntas.
E a bateria do tipo joystick?
No vídeo também explico o princípio da bateria eletrônica utilizando uma interface do tipo joystick.
Essa é outra maneira interessante de compreender o projeto.
O importante é perceber que o pad não precisa necessariamente produzir o som.
Sua função pode ser simplesmente detectar a ação do músico e transformá-la em uma informação elétrica.
Depois, outro dispositivo ou software interpreta essa informação e produz o som correspondente.
Esse conceito aparece não apenas em baterias eletrônicas, mas em muitos controladores e instrumentos musicais digitais.
Veja a bateria eletrônica com Arduino funcionando
No vídeo abaixo mostro a montagem do circuito para construir uma bateria eletrônica utilizando Arduino e cristal piezoelétrico, a conexão via USB e também explico o funcionamento da bateria baseada em joystick. O código utilizado no projeto também está disponível na descrição original do vídeo.
Um ótimo projeto para aprender eletrônica, Arduino e áudio
Construir uma bateria eletrônica é muito mais do que fazer um pad produzir um som.
O projeto permite estudar, na prática:
piezoeletricidade → sensores → entradas analógicas → Arduino → programação → MIDI → USB → áudio
Também podemos experimentar diferentes materiais para os pads, alterar a sensibilidade, trabalhar com vários sensores e modificar o código.
É justamente essa possibilidade de experimentar que torna a construção de instrumentos eletrônicos uma excelente forma de aprender eletrônica.
Quer aprender mais sobre eletrônica aplicada ao áudio?
Se você gosta de projetos envolvendo instrumentos musicais, sensores, amplificadores, áudio e eletrônica, esse assunto está diretamente relacionado ao meu Curso de Eletrônica Aplicada ao Áudio.