Como acionar LED batendo palmas usando o sensor KY-037 e Arduino
O sensor detector de som/palmas KY-037 é um módulo eletrônico desenvolvido para detectar ou medir a intensidade sonora de um ambiente. Este sensor possui saídas digital e analógica.
O uso de sua saída digital é recomendada quando se deseja detectar algum som, funcionando da seguinte maneira: Enquanto o sensor não detectar um sinal de som sua saída digital se manterá em nível baixo, mas ao detectar um sinal a sua saída digital será alterada para nível alto.
O uso de seu pino analógico é ideal para quando se deseja medir a variação do som, operando da seguinte maneira: Quanto maior for a amplitude do sinal sonoro identificado, maior será a tensão no pino analógico.
A placa de circuito do sensor KY-037 (Figura 1) possui três componentes principais: microfone, amplificador e comparador de tensão. O microfone é responsável por capturar o sinal sonoro e enviar um sinal analógico para o amplificador que, como o próprio nome diz, amplifica o sinal de acordo com o valor da resistência do potenciômetro e o envia o sinal para a saída analógica do módulo. O comparador de tensão compara a tensão de entrada com uma tensão de referência, a saída desta comparação será um valor analógico. Os limites de detecção do sensor KY-037 podem ser ajustados por meio do trimpot (componente azul).
Algumas características técnicas do sensor detector de som/palmas KY-037 encontra-se listadas a seguir:
- Tipo: Sensor de som;
- Chip: LM393;
- Tipo de saída: Uma digital (D0) e uma analógica (AO);
- Pinos: GND, VCC, DO e AO;
- LED para indicar que está alimentado;
- LED para indicar que identificou som;
A proposta deste projeto é fazer o acionamento de um LED ao bater palma. Para isso, utilizaremos o sensor detector de som/palmas KY-037 através da leitura de seu pino digital (D0).
Neste caso, o microfone atuará como um sensor de intensidade sonora e para realizar a identificação da palma vamos avaliar se o sinal lido apresenta picos de maior intensidade. Desta forma, se um som de alta frequência for identificado o LED será acionado.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Sensor detector de som/palma KY-037;
- 1 x Protoboard;
- 1 x LED difuso de 5mm;
- 1 x Resistor de 100 Ω, 200 Ω ou 220 Ω;
- Fios de jumper macho-macho.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Monte o circuito da Figura 2 utilizando a placa UNO, o sensor KY-037, o LED, o resistor e os fios.
Ao montar seu circuito na protoboard preste atenção nos seguintes pontos:
- Neste projeto utilizaremos a leitura digital do sensor KY-037. Por isso, não utilizaremos seu terminal analógico (A0);
- O segundo terminal do sensor, representado pela letra G, deve ser conectado ao GND da placa Arduino;
- O terceiro pino do sensor, representado pelo caractere +, deve ser alimentado com o 5V da placa Arduino;
- Por fim, o terminal nomeado D0 deve ser conectado à porta digital 8.
ELABORANDO O CÓDIGO
A proposta deste projeto é acionar um LED ao bater palma. Anterior a explicação do código de funcionamento deste projeto, vale salientar que o sensor KY-037 necessita de ajustes de sensibilidade. Então, pode ser que ao copiar o código abaixo o sistema não funcione da maneira adequada. Estes ajustes serão explicados ao fim deste tópico. O código do projeto proposto terá estrutura:
/* --- ACIONAR LED BATENDO PALMAS COM KY-037 --- ================================================== == BLOG DA ROBOTICA - www.blogdarobotica.com == ================================================== Autora: Carol Correia Viana E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica ================================================== */ int led = 8;//Atribui o pino 8 a variável led int ky = 9;//Atribui o pino 9 - conectado ao sensor, a variável ky int valorky = 0;//Declara a variável valorky do tipo inteiro bool statusLed = false;//Declara a variável statusLed do tipo booleano void setup() { pinMode (led, OUTPUT);//Define led (porta digital 8) como saída pinMode (ky, INPUT);//Define ky (porta analógico 9) como saída Serial.begin(9600);//Inicialização da comunicação serial, com velocidade de comunicação de 9600 } void loop() { valorky = digitalRead(ky);//Lê o valor do sensor e armazena na variável valorky Serial.println(valorky);//Imprime na serial os dados de valorky delay(20);//Intervalo de 20 milissegundos if (valorky == HIGH && statusLed == false) { //Se valorky for igual a 1 (HIGH) e statusLed for igual a false: delay(100); digitalWrite(led, HIGH);//Coloca led em alto para acioná-lo statusLed = true;//Coloca statusLed como true } else {//Senão: if (valorky == HIGH && statusLed == true) { //Se valorky for igual a 1 (HIGH) e statusLed for igual a true delay(100); digitalWrite(led, LOW);//Coloca led em baixo para desligá-lo statusLed = false;//Retorna statusLed como false } } }
Com o código transferido o Arduino, vamos ajustar a sensibilidade do sensor KY-037. Este ajuste é feito girando o pino do trimpot de modo que sua sensibilidade seja reduzida e o sensor apenas detecte sinais de maior intensidade, como o da palma. Podemos observar o resultado deste ajuste a partir do LED2, que deve ser acionado apenas quando houver um sinal sonoro como o da palma. A Figura 3 ilustra a forma de reduzir e aumentar a sensibilidade do sensor KY-037.
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.