- Materiais requisitados
- Sensor de som funcionando
- Medindo a frequência de áudio no osciloscópio
- Diagrama de circuito do Arduino do detector de apito
- Medindo frequência com Arduino
- Programando seu Arduino para detectar Whistle
- Arduino Whistle Detector funcionando
Quando criança, eu era fascinado por um carro musical de brinquedo que é acionado quando você bate palmas e, à medida que cresci, me perguntei se poderíamos usar o mesmo carro para alternar luzes e ventiladores em nossa casa. Seria legal apenas ligar meus fãs e luzes apenas batendo palmas em vez de caminhar preguiçosamente até o painel de controle. Mas muitas vezes ele funcionaria mal, pois este circuito responderá a qualquer ruído alto no ambiente, como um rádio alto ou o cortador de grama do meu vizinho. Embora construir um botão de palmas também seja um projeto divertido de fazer.
Foi então que me deparei com este método de detecção de apito em que o circuito detecta por apito. Um apito, ao contrário de outros sons, terá uma frequência uniforme por um determinado período e, portanto, pode ser distinguido da fala ou da música. Portanto, neste tutorial, aprenderemos como detectar o som de apito fazendo a interface do Sensor de som com o Arduino e, quando um apito for detectado, alternaremos uma lâmpada AC por meio de um relé. Ao longo do caminho, também aprenderemos como os sinais de som são recebidos pelo microfone e como medir a frequência usando o Arduino. Parece interessante, então vamos começar com o Projeto de automação residencial baseado em Arduino.
Materiais requisitados
- Arduino UNO
- Módulo Sensor de Som
- Módulo de Relé
- Lâmpada AC
- Fios de conexão
- Tábua de pão
Sensor de som funcionando
Antes de mergulharmos na conexão de hardware e no código para este projeto de automação residencial, vamos dar uma olhada no sensor de som. O sensor de som usado neste módulo é mostrado abaixo. O princípio de funcionamento da maioria dos sensores de som disponíveis no mercado é semelhante a este, embora a aparência possa mudar um pouco.
Como sabemos, o componente primitivo em um sensor de som é o microfone. Um microfone é um tipo de transdutor que converte ondas sonoras (energia acústica) em energia elétrica. Basicamente, o diafragma dentro do microfone vibra com as ondas sonoras da atmosfera, que produzem um sinal elétrico em seu pino de saída. Mas esses sinais serão de magnitude muito baixa (mV) e, portanto, não podem ser processados diretamente por um microcontrolador como o Arduino. Além disso, por padrão, os sinais de som são de natureza analógica, portanto, a saída do microfone será uma onda senoidal com frequência variável, mas os microcontroladores são dispositivos digitais e, portanto, funcionam melhor com onda quadrada.
Para amplificar essas ondas senoidais de baixo sinal e convertê-las em ondas quadradas, o módulo usa o módulo comparador LM393 integrado, conforme mostrado acima. A saída de áudio de baixa tensão do microfone é fornecida a um pino do comparador por meio de um transistor amplificador, enquanto uma tensão de referência é definida no outro pino usando um circuito divisor de tensão envolvendo um potenciômetro. Quando a tensão de saída de áudio do microfone excede a tensão predefinida, o comparador fica alto com 5 V (tensão de operação), caso contrário, o comparador permanece baixo em 0 V. Desta forma, a onda senoidal de baixo sinal pode ser convertida em onda quadrada de alta tensão (5V). O instantâneo do osciloscópio abaixo mostra o mesmo onde a onda amarela é a onda senoidal de sinal baixo e o azul ligado é a onda quadrada de saída. oa sensibilidade pode ser controlada variando o potenciômetro no módulo.
Medindo a frequência de áudio no osciloscópio
Este módulo sensor de som irá converter as ondas sonoras da atmosfera em ondas quadradas, cuja frequência será igual à frequência das ondas sonoras. Portanto, ao medir a frequência da onda quadrada, podemos encontrar a frequência dos sinais sonoros na atmosfera. Para ter certeza de que as coisas estão funcionando como deveriam, conectei o sensor de som ao meu osciloscópio para sondar o sinal de saída, conforme mostrado no vídeo abaixo.
Liguei o modo de medição no meu osciloscópio para medir a frequência e usei um aplicativo Android (Frequency Sound Generator) da Play Store para gerar sinais de som de frequência conhecida. Como você pode ver no GID acima, o osciloscópio foi capaz de medir sinais de som com uma precisão bastante decente, o valor da frequência exibida no osciloscópio é muito próximo ao exibido no meu telefone. Agora que sabemos que o módulo está funcionando, vamos prosseguir com a interface do sensor de som com o Arduino.
Diagrama de circuito do Arduino do detector de apito
O diagrama completo do circuito do Arduino Whistle Detector Switch usando o Sound Sensor é mostrado abaixo. O circuito foi desenhado usando o software Fritzing.
O sensor de som e o módulo de relé são alimentados pelo pino 5V do Arduino. O pino de saída do sensor de som é conectado ao pino digital 8 do Arduino, isso é devido à propriedade do temporizador desse pino e discutiremos mais sobre isso na seção de programação. O módulo de relé é acionado pelo pino 13, que também é conectado ao LED embutido na placa UNO.
No lado da alimentação CA, o fio neutro é conectado diretamente ao pino Comum (C) do módulo de relé, enquanto a fase é conectada ao pino Normalmente aberto (NO) do relé através da carga CA (lâmpada). Desta forma, quando o relé é acionado, o pino NO será conectado ao pino C e, assim, a lâmpada acenderá. Caso contrário, o blub permanecerá desligado. Depois que as conexões foram feitas, meu hardware parecia mais ou menos assim.
Aviso: Trabalhar com circuito CA pode ser perigoso, tenha cuidado ao manusear fios energizados e evite curto-circuitos. Um disjuntor ou supervisão de um adulto é recomendado para pessoas que não têm experiência em eletrônica. Você foi avisado!!
Medindo frequência com Arduino
Semelhante ao nosso osciloscópio, lendo a frequência das ondas quadradas de entrada, temos que programar o Arduino para calcular a frequência. Já aprendemos como fazer isso em nosso tutorial do Frequency Counter usando a função pulse in. Mas neste tutorial, usaremos a biblioteca Freqmeasure para medir a frequência e obter resultados precisos. Esta biblioteca usa a interrupção do temporizador interno no pino 8 para medir quanto tempo um pulso permanece LIGADO. Uma vez que o tempo é medido, podemos calcular a frequência usando as fórmulas F = 1 / T. No entanto, como estamos usando a biblioteca diretamente, não precisamos entrar nos detalhes do registro e na matemática de como a frequência é medida. A biblioteca pode ser baixada do link abaixo:
- Biblioteca de medição de frequência por pjrc
O link acima irá baixar um arquivo zip, você pode então adicionar este arquivo zip ao seu IDE Arduino seguindo o caminho Sketch -> Incluir Biblioteca -> Adicionar Biblioteca.ZIP.
Nota: O uso da biblioteca desativará afuncionalidade analogWrite nos pinos 9 e 10 no UNO, uma vez que o cronômetro será ocupado por esta biblioteca. Além disso, esses pinos mudarão se outras placas forem usadas.
Programando seu Arduino para detectar Whistle
O programa completo com um vídeo de demonstração pode ser encontrado no final desta página. Neste título, explicarei o programa dividindo-o em pequenos trechos.
Como sempre, começamos o programa incluindo as bibliotecas necessárias e declarando as variáveis necessárias. Certifique-se de ter adicionado a biblioteca FreqMeasure.h conforme explicado no título acima. O estado variável representa o estado do LED e as variáveis de frequência e continuidade são usadas para emitir a frequência medida e sua continuidade, respectivamente.
#incluir
Dentro da função de configuração vazia , começamos o monitor serial na taxa de transmissão de 9600 para depuração. Em seguida, use a função FreqMeasure.begin () para inicializar o pino 8 para medir a frequência. Também declaramos que o pino 13 (LED_BUILTIN) é emitido.
void setup () { Serial.begin (9600); FreqMeasure.begin (); // Mede no pino 8 por padrão pinMode (LED_BUILTIN, OUTPUT); }
Dentro do loop infinito, continuamos ouvindo no pino 8 usando a função FreqMeasure.available (). Se houver um sinal de entrada, medimos a frequência usando o FreqMeasure.read (). Para evitar erros devido ao ruído, medimos 100 amostras e tiramos uma média disso. O código para fazer o mesmo é mostrado abaixo.
if (FreqMeasure.available ()) { // média de várias leituras juntas sum = sum + FreqMeasure.read (); contagem = contagem + 1; if (contagem> 100) { frequência = FreqMeasure.countToFrequency (soma / contagem); Serial.println (frequência); soma = 0; contagem = 0; } }
Você pode usar a função Serial.println () aqui para verificar o valor da frequência do seu apito. No meu caso o valor recebido foi de 1800Hz a 2000Hz. A frequência do apito da maioria das pessoas ficará nessa faixa específica. Mas mesmo outros sons, como música ou voz, podem cair nessa frequência, portanto, para distingui-los, monitoraremos a continuidade. Se a frequência for contínua por 3 vezes, confirmamos que é um som de apito. Portanto, se a frequência estiver entre 1800 e 2000, incrementamos a variável chamada continuidade.
if (freqüência> 1800 && freqüência <2000) {continuidade ++; Serial.print ("Continuidade ->"); Serial.println (continuidade); frequência = 0;}
Se o valor de continuidade atingir ou exceder três, então alteramos o estado do LED alternando a variável chamada estado. Se o estado já for verdadeiro, nós o mudamos para falso e vice-versa.
if (continuidade> = 3 && estado == falso) {estado = verdadeiro; continuidade = 0; Serial.println ("Luz ligada"); atraso (1000);} if (continuidade> = 3 && estado == verdadeiro) {estado = falso; continuidade = 0; Serial.println ("Luz desligada"); atraso (1000);}
Arduino Whistle Detector funcionando
Assim que o código e o hardware estiverem prontos, podemos começar a testá-lo. Certifique-se de que as conexões estejam corretas e ligue o módulo. Abra o monitor serial e comece a assobiar, você pode perceber o valor da continuidade sendo incrementado e finalmente acender ou apagar a Lâmpada. Um exemplo de instantâneo do meu monitor serial é mostrado abaixo.
Quando o monitor serial diz que a luz está ligada, o pino 13 ficará alto e o relé será acionado para ligar a lâmpada. Da mesma forma, a lâmpada será desligada quando o monitor serial disser Luz desligada . Depois de testar o funcionamento, você pode alimentar a configuração usando um adaptador de 12 V e começar a controlar seu aparelho doméstico CA usando o apito.
O funcionamento completo deste projeto pode ser encontrado no vídeo no link abaixo. Espero que você tenha entendido o tutorial e gostado de aprender algo novo. Se você tiver qualquer problema em fazer as coisas funcionarem, deixe-os na seção de comentários ou use nosso fórum para outras questões técnicas.