O KY-037 permite automatizar um interruptor com controle sonoro é algo que traz praticidade num momento de conforto, como por exemplo quando já nos deitamos para dormir ou quando nos encontramos em momento de descanso, possibilitando ligar/desligar a luz sem ao menos precisar levantar da cama, realizando esse ato através de captação sonora.
1. Qual microcontrolador usar com o KY-037 e por quê tamanho importa?
Para esse projeto foi escolhido o Arduino Nano, pois é um projeto mais simples e esse microcontrolador foi o mais viável que estava disponível para utilizar. É recomendado para quem for replicar o projeto que use um microcontrolador menor como um ATtiny, um PIC ou até mesmo um Arduino Pro Micro, porquê quando foi realizado o fechamento de todo o circuito dentro da caixa de luz do interruptor houve problemas com o espaço, quanto menor forem as peças, menor será a dificuldade com relação a isso.

2. KY-037 e seus interessantes recursos
Para o detector de som foi utilizado um módulo KY-037, esse módulo é uma escolha muito boa porquê a integração dele com os microcontroladores é muito simples! Ele possui um microfone de eletreto, um amplificador, um comparador, uma saída analógica e uma saída digital.
Seu comparador é muito útil pois ele faz uma espécie de “conversão” do sinal analógico do microfone para um sinal digital, quando o volume detectado pelo microfone atinge um certo nível então o comparador solta um pulso equivalente de nível lógico baixo, o ajuste feito pelo trimpot interfere na sensibilidade do microfone e consequentemente no nível em que os pulsos são emitidos pelo comparador.

3. Montagem do circuito de automação com o KY037
Para comandar a lâmpada foi utilizado este relé simples de 5 volts que pode ser comprado na AliExpress, é necessário se atentar à voltagem necessária para atuar as bobinas do relé e também se o mesmo possui os terminais comum, normalmente aberto e normalmente fechado. É necessário ter atenção aos terminais pois eles serão todos utilizados caso a configuração das ligações com o interruptor físico sejam paralelas (ou three-way).
Ao realizar o interfaceamento correto do relé é necessário utilizar outros componentes com o intuito de garantir o funcionamento correto do circuito e a proteção de seus componentes. Para proteger o microcontrolador de correntes de retorno quando a bobina do relé é operada, é necessário usar um diodo retificador comum como o 1N4007 em sua configuração flyback nos terminais do próprio relé, pois dessa forma qualquer corrente que iria para a linha de sinal do relé será dissipada.
É necessário também utilizar um transistor para realizar o chaveamento do relé, pois a corrente que a porta lógica oferece pode ser muito baixa para garantir a correta operação das bobinas. Ao utilizarmos o transistor estamos amplificando a corrente da porta lógica, garantindo assim que as bobinas recebam corrente suficiente para atuarem da forma recomendada, o modelo utilizado neste projeto foi um NPN BC547. Por último deve ser colocado um resistor de 220Ω entre a porta para limitar a corrente enviada da porta lógica para o transistor e não sobrecarregar o microcontrolador.




3.1 Detalhamento e acabamento do interruptor e Adaptação do KY-037
Para fazer toda a carcaça, o acabamento e também a integração do controle manual da lâmpada foi usado um interruptor modular, desses que podem ser comprados em lojas de materiais de construção, bem como também o módulo de interruptor paralelo. Foi escolhido esse modelo justamente para fazer um acabamento interessante, que separasse o interruptor físico do controle da automação. Esta escolha de elementos em particular é satisfatória, pois todo o projeto ficou com um aspecto bem “limpo” e bem acabado.
Coincidentemente, o módulo KY-037 se encaixava perfeitamente dentro do espelho vazio do interruptor, o que facilitou bastante sua fixação e robustez. Foi feito então no espelho três furos, um para o microfone de eletreto, um para o parafuso do trimpot e o terceiro para uma chave de alavanca, que foi necessária a implementação por motivos que serão explicados mais adiante.



3.2 Alimentação improvisada com carregador de celular
Para a fonte do circuito foi decidido fazer uma adaptação de um carregador velho que não tinha mais uso, essa parte foi a mais simples do projeto, pois apenas foi necessário a extração da placa da carcaça e a solda dos fios de alimentação tanto para o circuito, como a da própria fonte. Depois de feitas as soldas eu isolei os terminais com cola quente e envelopei tudo em fita isolante.

3.3 Esquemático para automação residencial com KY-037 e Arduino
Quando foi realizada a montagem do circuito foi necessário fazer determinadas adaptações para integrá-lo na rede elétrica da minha casa, pois a mesma é bem antiga e está fora dos padrões normais de instalação. Por isso também foi preciso fazer a implementação de uma chave de alavanca que desliga todo o circuito. O funcionamento ficou da seguinte forma: O interruptor paralelo seleciona se vai ligar a lâmpada ou se vai energizar o relé, caso a segunda opção seja selecionada, então o controle da lâmpada está sob responsabilidade do circuito. Caso seja necessário desligar completamente a lâmpada e o circuito, então é só utilizar a chave de alavanca que irá cortar a energia do microcontrolador. Por isso que o relé precisa ter um terminal normalmente aberto e a lâmpada precisa estar conectada nesse terminal, pois assim que tudo for desenergizado a lâmpada permanecerá desligada.
Com relação ao transistor é necessário que o mesmo esteja com o coletor conectado ao terminal do relé e o emissor no GND para garantir sua operação correta, caso os terminais estejam invertido corre-se o risco do transistor não atingir a saturação e não conduzir de forma ideal, causando aquecimento e potencialmente danos ao componente.
Para o diodo, ele deve estar polarizado de forma reversa à tensão de alimentação do circuito para garantir que a corrente de retorno seja dissipada corretamente como já mencionado anteriormente.

4. Lógica de funcionamento para realizar a automação
O código para esse projeto acabou ficando bem simples, o seu funcionamento consiste em escutar o módulo de som e aguardar a porta digital pulsar em um nível baixo, quando isso acontece ele faz uma contagem. Se em menos de 2 segundos houver outro pulso, então ele alterna o estado do relé, caso não haja então a contagem é resetada. Essa implementação é necessária para evitar com que a lâmpada se ative com um gatilho falso como um aumento no som do ambiente. O download do código está disponível no meu GitHub.
const int sensorPin = 10; //pino do sensor
const int rlyPin = 2; //pino do rele
unsigned long lastTrigTime = 0; //armazena o tempo do ultimo gatilho detectado
unsigned long trigTimeout = 2000; //tempo maximo de 2 segundos para os dois gatilhos acontecerem
int trigCount = 0; //contador de gatilhos consecutivos
bool rlyState = false; //estado atual do rele (desligado inicialmente)
const int debounce = 50; //delay para evitar detecções falsas
unsigned long lastDetect = 0; //ultimo tempo de detecção
void setup() {
//configuração dos pinos
pinMode(sensorPin, INPUT);
pinMode(rlyPin, OUTPUT);
//rele iniciando desligado
digitalWrite(rlyPin, LOW);
}
void loop() {
int sensorState = digitalRead(sensorPin); //lê e armazena o estado do sensor (LOW = detecção)
//verifica se houve som detectado e se passou tempo suficiente desde a última detecção
if (sensorState == LOW && (millis() - lastDetect) > debounce) {
lastDetect = millis(); //atualiza tempo da última detecção
soundTrig(); //chama a função que processa a detecção
}
//reseta o contador de gatilhos se passar muito tempo
if (trigCount > 0 && (millis() - lastTrigTime) > trigTimeout) {
trigCount = 0;
}
}
void soundTrig () {
unsigned long currentTime = millis(); //obtem e armazena o tempo atual
//verifica se é o primeiro gatilho OU se está dentro do tempo limite
if (trigCount == 0 || (currentTime - lastTrigTime) < trigTimeout) {
trigCount++; //incrementa contador de gatilhos
lastTrigTime = currentTime; //atualiza tempo do ultimo gatilho
//se detectados dois gatilhos dentro do tempo limite
if (trigCount == 2) {
toggleRly(); //alterna estado do rele
trigCount = 0; //reseta contador
}
}
}
void toggleRly () {
rlyState = !rlyState; //inverte estado do rele
digitalWrite(rlyPin, rlyState); //aplica novo estado ao pino
}
5. Demonstrando o circuito em vídeo e observações
Este projeto foi excelente para melhorar minhas habilidades de tirar uma ideia do papel e implementá-la no mundo real, pude também entender melhor o funcionamento do módulo KY-037 e da programação para o Arduino Nano. O circuito ficou extremamente funcional e agora posso controlar as luzes do meu quarto sem que haja a necessidade de ir até o interruptor para isso, quando estava projetando o circuito, inicialmente não implementei as medidas de proteção necessárias no interfaceamento do relé, porém, elas se mostraram de suma importância pois acabei queimando um microcontrolador. Graças ao meu amigo Gustavo que me ajudou analisando o circuito pude implementar com poucos componentes o interfaceamento correto do relé e eliminar os riscos de perder mais um microcontrolador, também pude aprender mais sobre como transistores funcionam e como conectar os pinos de microcontroladores em circuitos da forma correta.
O funcionamento do circuito pode ser visto no vídeo abaixo e também está divulgado no meu Instagram, lá eu posto também meus outros projetos e atualizações no que estou trabalhando!
