Aprenda a controlar um ventilador pelo Bluetooth do seu smartphone 8

Imagine a seguinte situação: está calor, você está na cama e quer mudar a velocidade do ventilador. Ter que se levantar para alterar não é bem o que você queria, não é mesmo? Que tal um ventilador controlado por Bluetooth através do seu celular? Para comprar algo assim é um pouco caro, mas nesse post iremos ensiná-lo a transformar seu ventilador tradicional de chave manual em um super ventilador controlado pelo smartphone! Isso tudo de forma simples, barata e prática, garantindo acessibilidade de conforto tecnológico a baixo custo, inclusão de pessoas deficientes no uso desta tecnologia e o desenvolvimento da cultura maker (pois encorajar pessoas a colocar a mão da massa é o que nos move). Vale a ressalva de que este é um projeto que pode ser atribuído a outros eletrodomésticos que você queira automatizar.

Orientamos aos caros leitores que garantam a sua própria segurança no desenvolvimento deste projeto. É necessário utilizar equipamentos de segurança e possuir habilidade para trabalhar com eletricidade.

E aí, vamos por a mão na massa? Preparado para aprender? Então pegue aquele seu ventilador velho que está largado no canto do quarto e vamos deixar de conversa! Assista o vídeo abaixo e veja como ficará seu ventilador.

Materiais necessários

Para adaptar esse ventilador será necessário algumas ferramentas:

  • Tesoura
  • Estilete
  • Cola Quente
  • Cola instantânea
  • Estanho para solda
  • Ferro de Solda
  • Fita Isolante
  • Lixa

Não esqueça de seus EPI’s (Equipamento de Proteção Individual):

  • Luvas
  • Óculos de proteção
  • Mascara

Além dos itens citados acima, os seguintes componentes são necessários:

Desmontando o ventilador

Vamos começar desmontando o ventilador. Como existem vários modelos de ventiladores no Brasil, não temos como demonstrar precisamente o passo-a-passo de como desmontá-lo. Porém, todos são bastante simples e intuitivos e a maioria tem as peças fixadas por travas. Nesse primeiro passo é necessário retirar a chave (botão rotatório que regula a velocidade do ventilador) e observar a posição e cores dos fios conforme figura abaixo.

Imagem 1 - Chave manual do ventilador

Observe a posição dos fios no seletor e anote cautelosamente. Essa informação será muito importante para que a lógica de programação funcione adequadamente. Lembre-se que as cores podem mudar de acordo com o modelo do ventilador. Nesse exemplo, utilizamos um ventilador da marca Malory.

Imagem 2 - Chave manual do ventilador

Adaptando o ventilador para ser controlado via Bluetooth

Chegou a hora de substituir a chave convencional pelo relé! Usaremos um relé de quatro canais onde cada canal substituirá uma posição da chave que tem 04 estágios: Ligar, velocidade 1, velocidade 2 e velocidade 3.

O esquema de montagem feito no Fritzing mostra detalhadamente como deve ser feita a ligação dos componentes.

Imagem 3 - Circuito para o ventilador controlado por Bluetooth

Conexão do relé com o ventilador: Os fios azul, vermelho, branco e amarelo eram os que antes estavam conectados na chave seletora. Agora é o relé quem irá exercer a função da chave seletora e, portanto, precisamos conectar os fios conforme a figura acima.

Conexão do relé com o Arduino: Os pinos IN1, IN2 e IN3 do relé devem ser conectados nas portas digitais 5, 6 e 7 do Arduino.

Conexão dos LEDs e botão com o Arduino: Ligue o botão na porta digital 4 e os LEDs nas portas digitais 8, 9, 10 e 11.

Conexão do módulo Bluetooth com o Arduino: Os pinos TX e RX do Módulo Bluetooth HC-05 deve ser ligados nos pinos 0 (RX) e 1 (TX) do Arduino, respectivamente. Perceba que entre o pino RX do módulo Bluetooth e o pino TX do Arduino há um divisor de tensão. Isso é necessário pois o módulo HC-05 trabalha em um nível lógico de 3,3V. (Para ter mais informações sobre esta conexão acesse o post Como usar o Arduino Bluetooth HC-05 em modo mestre).

Observe como fica a montagem do circuito nas figuras abaixo:

Imagem 4 - Circuito para o ventilador controlado por Bluetooth

Imagem 5 - Circuito para o ventilador controlado por Bluetooth

Embutindo o circuito na parte inferior do ventilador, veremos que a estética do ventilador permanece a mesma de quando era original, sem fios soltos nem placas a mostra.

Imagem 6 - Circuito para o ventilador controlado por Bluetooth

Código para o ventilador controlado via Bluetooth

Agora que o circuito está montado, podemos programar nosso Arduino. Abra a sua IDE e copie o código que iremos explicar em seguida:

#include <PushButton.h> // uso a biblioteca com controle de debounce 
#define Vmaxima 7 // pino referente ao rele da velocidade maxima
#define Vmedia  6 // pino referente ao rele da velocidade media
#define Vbaixa  5 // pino referente ao rele da velocidade minima

#define pinBotao 4

#define V0 11 // led de refente a velocidade 0
#define V1 10 // led de refente a velocidade 1
#define V2  9 // led de refente a velocidade 2
#define V3  8 // led de refente a velocidade 3

int contador = 0; // variavel do tipo inteiro para fazer a contagem 
int comando;      

PushButton botao(pinBotao); // crio uma classe chamada botao para a porta pinBotao (pino 4)

void setup() {
Serial.begin(9600);    //Inicio uma comunico serial

pinMode(Vmaxima,OUTPUT); //Defino essa porta como saida
pinMode(Vmedia,OUTPUT);  //Defino essa porta como saida
pinMode(Vbaixa,OUTPUT);  //Defino essa porta como saida

pinMode(V0,OUTPUT);    //Defino essa porta como saida
pinMode(V1,OUTPUT);    //Defino essa porta como saida
pinMode(V2,OUTPUT);    //Defino essa porta como saida
pinMode(V3,OUTPUT);    //Defino essa porta como saida

digitalWrite(Vmaxima,1);  // deligo os reles 
digitalWrite(Vmedia, 1);
digitalWrite(Vbaixa, 1);

digitalWrite(V0, 1); // ligo o led vermelho 
}

void loop() {
   botao.button_loop(); 
   
   if (botao.pressed()) contador++; 
  
   if(Serial.available()>0){    //verifico se a comunicao serial esta disnponivel e se ela for maior que "0" ela entra nesse if.
   comando = Serial.read();     //Leio a serial e cerrego na variavel "comando".
   if(comando=='a') contador=1; //Se comando for 'a' contador recebe 1
   if(comando=='b') contador=2; //Se comando for 'b' contador recebe 2
   if(comando=='c') contador=3; //Se comando for 'c' contador recebe 3
   if(comando=='d') contador=0; //Se comando for 'd' contador recebe 0
   }

   
   //VELOCIDADE MINIMA
   if(contador==1){
    digitalWrite(Vmaxima,0);  
    digitalWrite(Vmedia, 1);
    digitalWrite(Vbaixa, 1);

    digitalWrite(V0,0);  
    digitalWrite(V1,0);
    digitalWrite(V2,0);
    digitalWrite(V3,1);
   }

   //VELOCIDADE MEDIA
    else if(contador==2){
    digitalWrite(Vmaxima,1);  
    digitalWrite(Vmedia, 0);
    digitalWrite(Vbaixa, 1);
    
    digitalWrite(V0,0);  
    digitalWrite(V1,0);
    digitalWrite(V2,1);
    digitalWrite(V3,0);     
   }
   
   //VELOCIDADE MAXIMA
    else if(contador==3){
    digitalWrite(Vmaxima,1);  
    digitalWrite(Vmedia, 1);
    digitalWrite(Vbaixa, 0); 

    digitalWrite(V0,0);  
    digitalWrite(V1,1);
    digitalWrite(V2,0);
    digitalWrite(V3,0);
   }
   
   //DELISGADO
    else if(contador==0){
    digitalWrite(Vmaxima,1);  
    digitalWrite(Vmedia, 1);
    digitalWrite(Vbaixa, 1);

    digitalWrite(V0,1);  
    digitalWrite(V1,0);
    digitalWrite(V2,0);
    digitalWrite(V3,0);
   }
    else if(contador==4) contador=0;
  }

Nosso programa tem 3 áreas de destaque, a área de DECLARAÇÃO, o SETUP e o LOOP. Começando pelo primeiro ambiente, logo na primeira linha temos a importação da biblioteca PushButton.h que você pode baixar no link: Biblioteca PushButton.

#include <PushButton.h> // uso a biblioteca com controle de debounce 
#define Vmaxima 7 // pino referente ao rele da velocidade maxima
#define Vmedia  6 // pino referente ao rele da velocidade media
#define Vbaixa  5 // pino referente ao rele da velocidade minima

#define pinBotao 4

#define V0 11 // led de refente a velocidade 0
#define V1 10 // led de refente a velocidade 1
#define V2  9 // led de refente a velocidade 2
#define V3  8 // led de refente a velocidade 3

int contador = 0; // variavel do tipo inteiro para fazer a contagem 
int comando;      

PushButton botao(pinBotao); // crio uma classe chamada botao para a porta pinBotao (pino 4)

Da linha 3 até a linha 12 do código temos a declaração das variáveis anexas as referidas portas do Arduino. 

A linha 14 inicializa o “contador” em zero. Essa variável terá a função de gravar o estado em que o ventilador está, garantindo as mudanças de velocidade.

Na linha 15, a variável “comando” corresponde ao carácter que será enviado pelo celular. Dependendo do carácter recebido via Bluetooth, o Arduino irá acionar a velocidade correspondente no ventilador.

Já na linha 17 instanciamos um objeto a classe PushButton.

Na segunda parte do código temos o void setup, nele são descritas todas as configurações e inicializações necessárias para o bom funcionamento do código.

void setup() {
Serial.begin(9600);    //Inicio uma comunico serial

pinMode(Vmaxima,OUTPUT); //Defino essa porta como saida
pinMode(Vmedia,OUTPUT);  //Defino essa porta como saida
pinMode(Vbaixa,OUTPUT);  //Defino essa porta como saida

pinMode(V0,OUTPUT);    //Defino essa porta como saida
pinMode(V1,OUTPUT);    //Defino essa porta como saida
pinMode(V2,OUTPUT);    //Defino essa porta como saida
pinMode(V3,OUTPUT);    //Defino essa porta como saida

digitalWrite(Vmaxima,1);  // deligo os reles 
digitalWrite(Vmedia, 1);
digitalWrite(Vbaixa, 1);

digitalWrite(V0, 1); // ligo o led vermelho 
}

Na linha 20 a comunicação serial é inicializada a uma taxa de transferência de 9600 baunds.

Da linha 22 até a 29 do nosso código configuramos as portas que estão conectadas os LEDs e o relé.

Logo em seguida nas linhas 31, 32 e 33 desligo todos os relés para garantir que o ventilador, ao ser conectado na tomada, inicialize desligado.

Na linha 35 o LED vermelho é inicializado sinalizando para o usuário que o ventilador esta desligado, porém energizado e aguardando o comando para ligar.

No loop dividimos a explicação em duas áreas importantes: a forma de controle do ventilador e o acionamento e identificação da sua velocidade.

void loop() {
   botao.button_loop(); 
   
   if (botao.pressed()) contador++; 
  
   if(Serial.available()>0){    //verifico se a comunicao serial esta disnponivel e se ela for maior que "0" ela entra nesse if.
   comando = Serial.read();     //Leio a serial e cerrego na variavel "comando".
   if(comando=='a') contador=1; //Se comando for 'a' contador recebe 1
   if(comando=='b') contador=2; //Se comando for 'b' contador recebe 2
   if(comando=='c') contador=3; //Se comando for 'c' contador recebe 3
   if(comando=='d') contador=0; //Se comando for 'd' contador recebe 0
   }

Na linha 41 são definidas as formas de controle do ventilador. Caso o botão seja pressionado, a variável “contador” é incrementada mudando a velocidade do ventilador.

A partir da linha 43, fazemos a definição da velocidade a partir do comando recebido através da porta serial com a comunicação Bluetooth. Para cada carácter recebido (a, b, c, d) o programa associa a uma mesma condicional numérica, como se o comando tivesse sido executado através do botão.

Essa condição é mostrada na imagem abaixo:

//VELOCIDADE MINIMA
   if(contador==1){
    digitalWrite(Vmaxima,0);  
    digitalWrite(Vmedia, 1);
    digitalWrite(Vbaixa, 1);

    digitalWrite(V0,0);  
    digitalWrite(V1,0);
    digitalWrite(V2,0);
    digitalWrite(V3,1);
   }

   //VELOCIDADE MEDIA
    else if(contador==2){
    digitalWrite(Vmaxima,1);  
    digitalWrite(Vmedia, 0);
    digitalWrite(Vbaixa, 1);
    
    digitalWrite(V0,0);  
    digitalWrite(V1,0);
    digitalWrite(V2,1);
    digitalWrite(V3,0);     
   }
   
   //VELOCIDADE MAXIMA
    else if(contador==3){
    digitalWrite(Vmaxima,1);  
    digitalWrite(Vmedia, 1);
    digitalWrite(Vbaixa, 0); 

    digitalWrite(V0,0);  
    digitalWrite(V1,1);
    digitalWrite(V2,0);
    digitalWrite(V3,0);
   }
   
   //DELISGADO
    else if(contador==0){
    digitalWrite(Vmaxima,1);  
    digitalWrite(Vmedia, 1);
    digitalWrite(Vbaixa, 1);

    digitalWrite(V0,1);  
    digitalWrite(V1,0);
    digitalWrite(V2,0);
    digitalWrite(V3,0);
   }
    else if(contador==4) contador=0;
  }

Observando a primeira condição na linha 53, vemos que se a variável “contador” for igual a 1, o relé e o led referente a velocidade baixa do ventilador são acionados. A lógica segue a mesma para as demais velocidades.

Controlando o ventilador via Bluetooth

O aplicativo utilizado para controle do ventilador foi o Bluetooth Eletronics (disponível para Android) e você pode baixá-lo clicando aqui.

Imagem 7 - Configuração app

Iremos criar uma aplicação simples contendo quatro botões: um para desligar o ventilador e outros três botões para alterar a velocidade. Para iniciar o processo de criação de seu aplicativo, clique em um novo painel e em seguida no botão Edit. Veja a figura:

Imagem 8 - Configuração app

Na barra lateral direita, você terá várias opções de ferramenta para interação. Para selecionar um botão, clique em Buttons.

Imagem 9 - Configuração app

Uma nova janela aparecerá, com algumas opções de botões para inserir no seu aplicativo.

Imagem 10 - Configuração app

Para inserir um botão, basta arrastar o mesmo para dentro do ambiente de desenvolvimento.

Imagem 11 - Configuração app

Agora é necessário vincular um caracter ao botão. Na linha 48 do código definimos que o comando desligar está vinculado ao caracter “d”. Por isso, devemos associar ao primeiro botão ao caracter “d”. Clique em Edit e digite em ambas caixas de texto a letra “d”.

Imagem 12 - Configuração app

Repita o processo para os outros três botões. Vincule a esses botões as letras “a”, “b” e “c”.

Imagem 13 - Configuração app

Após concluída essa etapa, saia do ambiente de desenvolvimento. Selecione o aplicativo recém criado e clique em Connect. Caso seja a primeira vez que você esteja pareando seu smartphone ao módulo HC-05, clique em Discover, na lista Discovered Devices selecione o módulo HC-05, clique em Pair e digite a senha “1234”. Depois, na lista Paired Devices, selecione novamente o módulo HC-05, clique em Connect e por fim clique em Done.

Imagem 14 - Configuração app

Para executar o aplicativo, selecione o mesmo em clique em Run.

Agora você já pode controlar seu ventilador através do seu smartphone!

Conclusão

Este projeto tem por objetivo conscientizar a reutilização de eletrodomésticos e eletrônicos diminuindo assim o lixo tecnológico, bem como inserir nossos leitores no mundo Maker onde você mesmo desenvolve seus projetos e criações. Pegue essa ideia e amplie ela, aprimore, desenvolva e comente aqui seus resultados, estamos esperando ansiosos seu feedback para apreciarmos seu crescimento.

Gostou de aprender a controlar um ventilador via Bluetooth do seu smartphone usando o Arduino? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Faça seu comentário

Acesse sua conta e participe

8 Comentários

  1. estava projetando algo do tipo e resolvi pesquisar pois estava tentando reduzir o numero de reles e descobri que nao teria como (usando reles comuns de 2 posicoes) tem quem usar 3 reles (sendo q um deles é o ON/OFF), entao encontrei o seu projeto na internet. Gostaria de dar uma dica, reles dao pau ou ate mesmo o programa ou o micro, as vezes os contatos colam numa posicao. Se acontecer isso a forma como voce ligou pode energizar mais de uma bobina do motor ao mesmo tempo, nao sei o que acontece kkkkkk sera que vai ter cheiro de amper queimado kkkkk. entao a dica é mudar o projeto e usar eles na forma de cascata, assim nunca ira acontecer de ligar as 2 ou 3 bobinas do motor ao mesmo tempo (que é a peça mais cara), o que pode acontecer é nao mudar a velocidade. Desvantagem para ligar a ultima chave da cascata teria que ligar os 3 reles, gasta mais energia mA dos reles e aumenta os desgastes dos 3 reles. o que pode ser feito para minimizar o problema é escolher qual velocidade mais se usa e colocar logo no RL2 (NF/NC) assim ao acionar o RL1 (NA/NO)(ON/ONFF) ele ja liga na velocidade que vc mais usa, economizando desgaste dos demais reles. E para evitar o faiscamento em todos os reles, o melhor seria ligar ele na sequencia invertida, do ultimo para o primeiro assim ao ligar o primeiro os demais ja estariam posicionados na velocidade correta, nao ocorrendo o faiscamento nos contatos. Ate mesmo usaria sempre o RL1 desligando-o antes de mudar de velocidade e ele sempre o ultimo a ligar, dai o desgaste dos contatos seria mais nele.

  2. Olá, eu estou fazendo este projeto, porém a linha 38 ( botao.button_loop(); ) não esta na biblioteca que precisa baixar, gostaria de uma solução, eu não sei o que fazer.. Obrigado !!

  3. Olá,

    Achei muito interessante o projeto! O que seria legal é adaptar o projeto para ser controlado pelo Google Home por comando de voz! Aí seria bacana mesmo!

  4. quero fazer ventilador com bletooth

  5. oi eu fiz esse projeto e nao consigo instalar a biblioteca pushboton vcs tem essa biblioteca

    1. Olá Thiago,

      Você pode ir em Ferramentas -> Gerenciar Bibliotecas na IDE do Arduino

      Digitar Pushbutton na barra de pesquisa e rolar para baixo até encontrar a biblioteca

      “Pushbutton by Pololu” e instalar

      Talvez precise alterar na primeira linha de para (com b minúsculo)

      Abraços!
      Vinícius – Equipe MakerHero

  6. Boa Tarde Sandro, parabéns pelo Artigo. gostei muito. minha duvida e se eu apenas derivar o fios da chave seletora terei controle tanto via Bluetooth e também manual?

  7. Gostei do projeto , já conhecia o aplicativo.
    Parabéns pelo projeto.