Módulo Sensor de Som para Arduino

Aplicação e funcionamento: É muito comum ver em desenhos animados, filmes e novelas as pessoas ativarem lâmpadas, motores e outros objetos por meio de palmas, assovios ou até mesmo...

Aplicação e funcionamento:

É muito comum ver em desenhos animados, filmes e novelas as pessoas ativarem lâmpadas, motores e outros objetos por meio de palmas, assovios ou até mesmo gritos. Até certo ponto parece ser algo difícil de funcionar na prática, mas não é o que este Módulo Sensor de Som em conjunto com um microcontrolador (Arduino, por exemplo) promete fazer.

O Módulo Sensor de Som é capaz de captar ruídos e transformá-los em sinais, estes sinais podem ser receptados pelo Arduino (por exemplo) que em conjunto com outros acessórios podem acionar lâmpadas, motores ou os mais diversos equipamentos eletrônicos.

Na prática o Sensor de Som fica atento ao som provocado no ambiente e quando o recepta ele amplifica este sinal e transforma-o em sinais reconhecíveis pelo Arduino ou microcontroladores geral. O Sensor de Som é um dispositivo ideal para ser aplicado no ramo da automação residencial ou até mesmo em dispositivos para iluminação de festas, entre outros, incluindo projetos robóticos.

A seguir, apresentaremos o controle de um relé por meio de palmas, que poderá estar sendo aplicado para os mais diversos fins utilizando a plataforma Arduino.

Teste prático:

Produtos utilizados no teste:

– Modulo Sensor de som
– Arduino
– Relé
– Protoboard
– Jumpers

Montagem Física (Hardware):

A montagem é muito simples, basta seguir as orientações da imagem abaixo:

 

som.fw

 

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á.

Código para teste: Download AQUI

// 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.

Autor: Leonardo Dalla Porta
Categorias
ArduinoAutomação Residencial
5 Número de Comentários
  • VICTOR SANTANA DA ROCHA
    6 março 2019 at 23:25
    Enviar Resposta

    Boa noite,
    Preciso de uma ajuda!
    Necessito desse sistema
    Porém necessito que o rele receba um pulso temporário exemplo preciso que o relé arme 0,5 segundos e desligue e tenha uma pausa de 5 segundos para eu poder emitir outro som
    Não tenho muita prática com Arduino poderia me ajudar?
    victor88.srocha@gmail.com

    • Equipe Usinainfo
      23 abril 2019 at 13:57
      Enviar Resposta

      Olá Victor!
      Infelizmente não trabalhamos com o desenvolvimento de projetos, porém o único passo que terá que explorar é quanto ao delay de resposta e funcionamento, vale lembrar que o tempo é dado em milissegundos.

  • VICTOR SANTANA DA ROCHA
    7 março 2019 at 00:07
    Enviar Resposta

    preciso criar um código para esse projeto porem preciso usar 5 módulos de som.
    ele sera usado em uma maquina de lançamento de prato
    o funcionamento deste projeto é o seguinte
    o atleta emite um som (qualquer) e o projeto envia um sinal instantâneo para um rele lançar o prato
    necessito que tenha um intervalo de 5 segundos entre os lançamentos
    podem me ajudar por gentileza

    • Equipe Usinainfo
      23 abril 2019 at 13:57
      Enviar Resposta

      Bom dia!
      Infelizmente não realizamos o desenvolvimento de projetos.
      Neste caso deve adicionar cada módulo de forma individual e definir os comandos para cada um deles da maneira que desejar.

  • Valmir Morschheiser
    1 abril 2019 at 13:13
    Enviar Resposta

    Olá, como ficaria o código só para ligar o aparelho e ou lampada e não desligar, o desligamento seria feito pelo usuário quando ele quisesse. Grato!

    • Equipe Usinainfo
      16 abril 2019 at 20:20
      Enviar Resposta

      Olá Valmir!
      Para isto, basta eliminar a variável responsável por desligar a lâmpada e desenvolver um sistema de reset para o cliente poder desligar a mesma.

    Enviar Resposta

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados