Todos nós já vimos, em filmes, o protagonista ligar as lâmpadas batendo palmas,e hoje neste artigo iremos mostrar como pode fazê-lo utilizando um arduino, um sensor de som e um módulo de relé.
Se preferir ver o exercício em video, temos um vídeo sobre este mesmo projeto no nosso canal de Youtube.
Esquema de montagem do Arduino
A montagem deste projeto é bastante simples e passaremos a explicá-la passo a passo:
- Ligamos a alimentação de ambos os módulos aos 5V e GND do arduino.
- Ligamos o pino Sinal do sensor de som ao pino A0 do arduino.
- Por fim, ligamos o pino Sinal do módulo relé ao pino Digital 4.
Nota: Como este projeto utiliza 230V de corrente alternada, que pode ser perigoso, aconselhamos a utilizar um Led durante os testes.
Código utilizado no Arduino IDE
Apresentaremos agora o código utilizado, com comentários à frente para facilitar a compreensão.
Com o código deste projeto pretendemos que quando forem batidas duas palmas o valor na saida do relé seja invertida. Vamos de seguida ver como conseguimos realizar isto:
//Definir os pinos para o microfone e relé int relay = 8; int microphone = A0; int contador = 0; //Contador de palmas int contador2 = 0; //Contador de tempo para Reset void setup() { Serial.begin(9600); pinMode(relay,OUTPUT); pinMode(microphone, INPUT); /* Utilizamos a instrução a seguir para, quando ligarmos o arduino garantirmos que o relay esteja sempre desligado */ digitalWrite(relay, LOW); } void loop() { if(digitalRead(microphone)){ Serial.print("PALMA DETETADA! "); //Esta linha é apenas necessária para testes Serial.print("Valor do sensor: "); // Esta linha é apenas necessária para testes Serial.println(analogRead(microphone)); // Esta linha é apenas necessária para testes contador++; //Incrementar a variável contador delay(50); contador = 0; //Recomeça o tempo de reset //Quando foram batidas duas palmas if(contador == 2){ digitalWrite(relay, !digitalRead(relay)); //Inverte o valor na saida do relé contador2 = 0; // Recomeça o tempo de reset } } //Contagem do tempo para dar reset contador2++; delay(1); //Quando passam 3 seg sem qualquer tipo de palma if(contador2 == 3000){ Serial.println("Tempo Resetado"); // Necessário apenas para testes contador = 0; // Reseta a variável de palmas batidas contador2 = 0; // Reseta a variável contador2 } }
Calibrar sensibilidade do sensor de som
Na primeira vez que carregamos o código para o arduino este provavelmente ligará e desligará a luz repetidamente, isto acontece pelo facto da sensibilidade do sensor de som estar demasiado baixa. Para ajustar isso, devemos primeiro abrir o Serial Monitor no computador, e depois rodar o potênciometro no sensor de som no sentido dos ponteiros do relógio até não aparecerem novas mensagens.
Caso isto não tenha qualquer efeito, experimente tentar o método inverso, isto é, rodar o potênciometro no sentido contrário aos ponteiros do relógio. Neste caso, roda-se até aparecerem novas mensagens no Serial Monitor e voltamos a rodar no sentido dos ponteiros do relógio até estas desaparecerem.
Lista do Material Utilizado neste Artigo
Aqui está o material que usamos para este projeto com o arduino:
> Arduino Nano (Também com o UNO ou Mega)