Com certeza você já sonhou em acender a luz batendo palmas! Neste post vamos apresentar como é possível construir esse sistema utilizando um Sensor de Som KY-038 e um relé de estado sólido.
O Sensor de som KY-038 possui um microfone que é capaz de detectar a intensidade de som do ambiente. Apesar de não ser capaz de diferenciar sons, ou ainda gravá-los, é possível ter algumas aplicações para a sua funcionalidade. Com um Arduino e um relé de estado sólido, vamos medir a intensidade do som ambiente e, se for muito alto, vamos acender a lâmpada por um tempo determinado.
Produtos utilizados no teste:
Montagem Física (Hardware):
A montagem é muito simples, basta seguir as orientações da imagem abaixo:
Funcionamento do Programa (Software):
O código tem a função de fazer a leitura do Sensor de Som e quando detectado algum ruído alto e instantâneo ele ativará o relé, caso detectar um novo ruído ele o desligará.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| // Código exemplo sensor de som; // Sensor de palma. int microfone = 8; // pino 8 digital para o microfone int relay1 = 13; //pino do relay int contadorPalmasRelay = 0; //Contador de Palmas int palmasRequeridaLigaRelay1 = 2; // Contagem para acionar o relay int palmasRequeridaDesligaRelay1 =2; // Contagem para desativar o relay unsigned long tempoMaximoSom = 1000; //tempo maximo entre o pulso seguinte unsigned long tempoMinimooSom = 300; //tempo minimo entre o pulso seguinte unsigned long comprimentoSonoro = 100; //comprimento do som esperado unsigned long time; unsigned long startTime = 0; void setup() { //rotina ao iniciar o programa pinMode(microfone, INPUT); //inicia os pino do microfone como entrada pinMode(relay1, OUTPUT); //inicia os pino do relay como saida digitalWrite(relay1, HIGH); // desliga relay (o relay é invertido HIGH =desliga / LOW = liga) } void loop() { //rotina infinita //inicia a contagem de tempo time = millis(); //verifica o tempo entre o pulso inicial e o seguinte unsigned long tempoAposPalma = time - startTime; if (tempoAposPalma >= comprimentoSonoro && digitalRead(microfone) == LOW) { //verifica se o pulso recebido respeita o intervalo entre 1 pulso e outro if (tempoAposPalma < tempoMinimooSom || tempoAposPalma > tempoMaximoSom) { //senao for dentro do intervalo reseta a contagem e o tempo contadorPalmasRelay = 0; startTime = millis(); } else { //se for inicia a contagem de pulso e o tempo contadorPalmasRelay ++; startTime = millis(); } //verifica se a contagem de palma é igual ou superior ao numro esperado e se o rele esta desarmado if ((contadorPalmasRelay >= palmasRequeridaLigaRelay1 - 1) &&(digitalRead(relay1) == HIGH)) { //liga relay e zera contagem digitalWrite(relay1, LOW); contadorPalmasRelay = 0; } //verifica se a contagem de palma é igual ou superior ao numro esperado e se o rele esta armado if ((contadorPalmasRelay >= palmasRequeridaDesligaRelay1 - 1) &&(digitalRead(relay1) ==LOW)) { //desliga relay e zera contagem digitalWrite(relay1, HIGH); contadorPalmasRelay = 0; } } } |
Conclusões:
O Sensor de Som mostra-se um dispositivo realmente compacto e útil em diversas áreas, como na demonstração do vídeo podemos estar fazendo o controle da iluminação de sua residência, por exemplo. É um sensor de fácil aplicação, pois não são necessários componentes externos, para facilitar ainda mais, possui um trimpot para regular a intensidade da detecção.
O Sensor de Som mostra-se um dispositivo realmente compacto e útil em diversas áreas, como na demonstração do vídeo podemos estar fazendo o controle da iluminação de sua residência, por exemplo. É um sensor de fácil aplicação, pois não são necessários componentes externos, para facilitar ainda mais, possui um trimpot para regular a intensidade da detecção.
0 Comentários