Aqui no blog eu já tive a oportunidade de testar um sensor de som com microfone, e hoje vou testar o módulo Sensor de Som KY-038 com Arduino, um módulo muito parecido com o anterior.

Vamos dar uma olhada nesse módulo.
O módulo sensor de som KY-038
O sensor de som KY-038 com microfone é uma versão mais atualizada do módulo, agora com o chip LM393. O princípio de funcionamento é simples: ao detectar som, o microfone varia a tensão na saída analógica A0, e também aciona a saída digital D0conforme a regulagem do potenciômetro presente no módulo.
A alimentação do módulo vai de 4 à 6VDC, e ele possui dois leds indicadores: um que mostra se o módulo está ligado, e o outro que acende quando a saída digital estiver en nível alto (HIGH).
Conexão do módulo sensor de som KY-038 ao Arduino
Para testar o módulo sensor de som vamos utilizar um circuito com 3 leds, que vão acender conforme a intensidade do som. Conforme o som captado pelo microfone, serão acesos primeiro o verde (baixa intensidade), depois o amarelo (intensidade média), e por fim o vermelho (intensidade alta).
Os resistores são usados para limitar a corrente sobre os leds, e no nosso circuito usamos 3 resistores de 330 ohms.
Programa medidor de intensidade de som
No nosso programa vamos utilizar o sinal da entrada analógica A5 do Arduino (ligado ao pino A0 do módulo). Quando o pino A0 for acionado, os leds correspondentes serão acesos.
Vamos ler o valor dessa entrada (que estará entre 0 e 1023), e testar, com três comandos IF (linhas 37, 44 e 51), qual é o nível de sinal que foi detectado pelo microfone.
//Programa: Sensor de som KY-038
//Autor: Arduino e Cia
//Definicao pinos leds
int pinoled_ver = 3;
int pinoled_ama = 4;
int pinoled_verm = 5;
//Definicao pinos sensor
int pino_analogico = A5;
int pino_digital = 7;
int valor_A0 = 0;
int valor_D = 0;
void setup()
{
Serial.begin(9600);
//Define pinos led como saida
pinMode(pinoled_ver, OUTPUT);
pinMode(pinoled_ama, OUTPUT);
pinMode(pinoled_verm, OUTPUT);
//Define pinos sensor como entrada
pinMode(pino_analogico, INPUT);
pinMode(pino_digital, INPUT);
}
void loop()
{
valor_A0 = analogRead(pino_analogico);
valor_D = digitalRead(pino_digital);
Serial.print("Saida A0: ");
Serial.print(valor_A0);
Serial.print(" Saida D0: ");
Serial.println(valor_D);
//Intensidade baixa
if (valor_A0 > 20 && valor_A0 < 300)
{
digitalWrite(pinoled_ver, HIGH);
digitalWrite(pinoled_ama, LOW);
digitalWrite(pinoled_verm, LOW);
}
//Intensidade media
if (valor_A0 > 301 && valor_A0 < 700)
{
digitalWrite(pinoled_ver, HIGH);
digitalWrite(pinoled_ama, HIGH);
digitalWrite(pinoled_verm, LOW);
}
//Intensidade alta
if (valor_A0 > 701)
{
digitalWrite(pinoled_ver, HIGH);
digitalWrite(pinoled_ama, HIGH);
digitalWrite(pinoled_verm, HIGH);
}
delay(50);
//Apaga todos os leds
digitalWrite(pinoled_ver, LOW);
digitalWrite(pinoled_ama, LOW);
digitalWrite(pinoled_verm, LOW);
}
Os valores também são mostrados no serial monitor, e você pode usar essa informação para verificar se o módulo está funcionando corretamente:
No serial monitor também é mostrado o valor da porta 7, onde está ligada a saída digital (D0). Configure a sensibilidade ajustando o potenciômetro do módulo.
Gostou do post do sensor de som KY-038 com Arduino? Confira outros posts com módulos para Arduino aqui mesmo no blog!