Tutorial utilizando o novo Dimmer Shield pelo bluetooth e pelos botões

Tutorial para controlar o novo Dimmer Shield via bluetooth, utilizando um módulo bluetooth, um arduíno UNO e um smartphone.

ATENÇÃO: Neste projeto utiliza conexão direta à rede elétrica, se for feito ligação de forma inadequada pode causar CHOQUE ELÉTRICO e INCÊNDIO. Só execute este projeto caso você tenha conhecimento com instalações elétricas!

Neste tutorial vamos utilizar um novo Dimmer Shield, um arduino UNO, um módulo bluetooth e um smartphone android.
*Antes de prosseguir com esse tutorial, olhe este link, da primeira atualização do blog, para ver como é a ligação elétrica e para configurar os jumpers de seleção dos pinos dos botões e de disparo do TRIAC.
Descrição:
O novo Dimmer Shield é um shield para arduíno. É utilizado para controlar a potência de aparelho elétricos doméstico, por exemplo, lâmpada incandescente, lâmpadas fluorescente ou LED dimerizáveis, ventilador de mesa e de teto, liquidificador, entre outros.
Está a venda neste link:

Figura 1 - Novo Dimmer Shield para arduíno
Módulo bluetooth:
O módulo bluetooth é utilizado para fazer a interface do smartphone android com o orduíno. Neste tutorial será utilizado um aplicativo gratuito disponível no play store, chamado de "Dimmer Shield Bluetooth - 1 ch", no próximo tópico será mostrado o passo a passo de baixar o aplicativo. A figura 2 mostra o módulo bluetooth utilizado.

Figura 2 - Módulo Bluetooth utilizado neste tutorial - frente e verso

A comunicação do módulo bluetooth com o arduíno é feito pela porta serial. Os pinos digitais de comunicação no arduíno são o pino 0 (RX) e o pino 1 (RX). A ligação do módulo com o arduíno é feito da seguinte maneira:

Módulo bluetooth                 Arduíno

          VCC              <=>     3.3V ou 5V

          GND             <=>           GND

           RX               <=>       TX - pino 1

           TX               <=>       RX - pino 0



Esquema de ligação do módulo com o arduino:
A figura 3 mostra como é a ligação do módulo bluetooth com o arduino (Dimmer Shield encaixado no arduino). Os pinos de conexão foi comentado no tópico anterior (Módulo bluetooth).

Figura 3 -  Ligação do módulo com o arduino

Aplicativo android:
O aplicativo utilizado está disponível gratuitamente no play store, se chama: "Dimmer Shield Bluetooth - 1 ch". O aplicativo possui seis botões na interface de usuário, são eles "Conectar", "Desconectar", "- intensidade", "+ intensidade", "Desligar" e "Ligar". Os dois primeiros botões são responsáveis para configurar e conectar com o módulo bluetooth. O nome padrão do módulo utilizado neste tutorial é "linvor", podendo existir outros nomes. 
Os outros botões quando pressionado manda um determinado caractere para o módulo bluetooth e este manda para a comunicação serial do arduino. Com os caracteres recebidos pela serial, o arduino identifica e toma uma determinada decisão, ou seja,  aumenta, diminui, liga ou desliga a carga conectado no Dimmer Shield. A tabela abaixo mostra os caracteres utilizados:
     Aplicativo                    envia caractere

 "- intensidade"       <=>            "A"

 "+ intensidade"      <=>            "B"

     "Desligar"          <=>            "C"

       "Ligar"             <=>            "D"
A figura 4 mostra o passo a passo de pesquisar o aplicativo e instalar no smartphone. No play store do android, coloque o nome "Dimmer Shield Bluetooth" na caixa de texto 'Pesquisar no Google Play'.

Na janela de descrição do aplicativo pressione INSTALAR, e depois de instalado clique em ABRIR.
Figura 4 - Passo a passo de pesquisar e instalar o aplicativo no android

A figura 5 mostra a interface do programa e o processo de configuração da comunicação bluetooth. Antes de iniciar o aplicativo é necessário primeiro ativar o Bluetooth do smartphone. Após a ativação do bluetooth, pressionar o botão de "Conectar", depois vai aparecer a lista de dispositivos pareados com o seu celular. Selecione o dispositivo do módulo bluetooth utilizado, neste tutorial se chama "linvor". Após a seleção, volta para a página inicial do aplicativo. Quando sai do aplicativo, a conexão bluetooth é desconectado, e quando entra novamente, o aplicativo se conecta automaticamente.
Obs. Para o módulo bluetooth ficar disponível na lista de dispositivos pareados, é necessário configurar a conexão utilizando a ferramenta de Configuração do smartphone!

Figura 5 - Interface do aplicativo "Dimmer Shield Bluetooth - 1 ch"

Código de programação:
Segue o código de programação utilizado neste tutorial. Observar os comentários, para fazer as alterações de acordo com os jumpers na placa. Copiar e colar na IDE do arduino e depois fazer o upload do código.
Obs.: Para fazer o upload do código, o módulo bluetooth não pode está conectado no RX e TX do arduino! Pois a gravação do microcontrolador usa essa porta digital.

//----------------------------inicio do programa-------------------------------------------

//André Kuhn - Automation
//Email - andrekuhn.automacao@gmail.com
//Código para o Dimmer ser controlado pelos botões e pelo módulo Bluetooth

//Pino digital responsável pelo chaveamento do TRIAC, o novo Dimmer Shield
//pode utilizar os pinos digitais 3, 5 e 6, é necessário alterar o jumper na
//placa. Para utilizar no antigo Dimmer Shield, o pino é o 3.
int load = 3;

//Porcentagem inicial em 40%, variável com valor da 0 a 100.
volatile int power = 40;

//Variável para armazenar os caracteres recebidos pela serial, pode receber
//pelo bluetooth ou pelo serial monitor da IDE do arduino
char leitura;

//Declarando os pinos de leitura dos botões B0 e B1 do novo Dimmer Shield, o
//botão B0 podem ser A0,A1 e A2, e o botão B1 as entradas A3, A4 e A5. Lembrar
//da alteração dos jumpers na placa. No antigo Dimmer Shield os pinos dos botões
//são fixos, pino 4 e 5.
int botao_0 = A0, botao_1 = A3;

//Inicializando a função de configuração das portas digitais e analógicas
void setup()
{
    //Declarando o pino digital load (digital 3) como saída
     pinMode(load, OUTPUT);
   
     //Inicializa interrupção. O número zero indica a porta 2 do Arduino,
     //zero_cross_int é a função que será chamada toda vez que pino 2 do Arduino,
     //"subir" (RISING) de valor de 0 para 1.
     attachInterrupt(0, zero_cross_int, RISING);

     //Declarando o pino do botão 0 como entrada
     pinMode(botao_0, INPUT);
     //Declarando o pino do botão 1 como entrada
     pinMode(botao_1, INPUT);

     //Colocando o pino do botão 0 em nível baixo (0 volt)
     digitalWrite(botao_0, LOW);
     //Colocando o pino do botão 1 em nível baixo (0 volt)
     digitalWrite(botao_1, LOW);

     //Definindo a valocidade da comunicação serial (baud-rate)
     Serial.begin(9600);
}

//Função responsável por executar a lógica de programação
void loop()
{
     //Verificando se há comunicação serial
     if(Serial.available())
     {
          //Fazendo a leitura da comunicação serial e armazenando na variável
          //leitura do tipo char
          leitura = Serial.read();
     }
   
     //Verificando se o botão 0 foi pressionado ou se a variável leitura
     //é igual a "A"
     if((digitalRead(botao_0) == HIGH) || (leitura == 'A'))
     {
          //Se power (porcentagem) for maior que 0, executa
          if(power > 0)
          {
               //Faz a subtração do power anterior com 10 (decremento de 10)
               power = power - 10;
          }
       
       
          delay(200); //Espera de 200 milisegundos
       
          Serial.print(power); //Impressão na serial o valor de power
          Serial.println(" %"); //Impressão na serial o texto " %"
     }

     //Verificando se o botão 1 foi pressionado ou se a variável leitura
     //é igual a "B"
     if((digitalRead(botao_1) == HIGH) || (leitura == 'B'))
     {
          //Se power (porcentagem) for menor que 100, executa
          if(power < 100)
          {
               //Faz a soma do power anterior com 10 (incremento de 10)
               power = power + 10;
          }
       
          delay(200); //Espera de 200 milisegundos
     
          Serial.print(power); //Impressão na serial o valor de power
          Serial.println(" %"); //Impressão na serial o texto " %"
    }

     //Verificando se a variável leitura é igual a "C"
     if(leitura == 'C')
     {
          //power recebe valor 0, desliga a carga (0%)
          power = 0;    
       
          Serial.print(power); //Impressão na serial o valor de power
          Serial.println(" %"); //Impressão na serial o texto " %"
     }

   
     //Verificando se a variável leitura é igual a "D"
     if(leitura == 'D')
     {    
           //power recebe valor 100, liga a carga (100%)
           power = 100;    
         
           Serial.print(power); //Impressão na serial o valor de power
           Serial.println(" %"); //Impressão na serial o texto " %"
     }

     leitura = ' '; //Atribuindo o " " (espaço), na variável leitura
}

//Função executada quando o Dimmer Shield detecta a passagem por zero da
//tensão alternada (senóide)
void zero_cross_int()
{
     //Cálculo do ângulo de disparo: 60Hz -> 8,33ms (1/2 ciclo)
     //(8333us - 8,33us) / 100 = 83 (aproximadamente)

     //O powertime é o tempo que o TRIAC permanescerá desligado quando é
     //detectado o ponto 0 da senóide e varia de 0 a 8300 microsegundos  
     int powertime = (83*(100-power));
   
     //Se o powertime for menor ou igual a 300 microsegundos, dar o comando
     //de ligar a lâmpada (carga) - potência total fornecida
     if(powertime <= 830)
     {
          //Liga o pulso do sinal ao TRIAC para que ele passe a conduzir,
          //coloca o pino digital "load" em nível alto
          digitalWrite(load, HIGH);
     }
   
     //Se o powertime for menor ou igual a 8000 microsegundos, dar o comando
     //de desligar a lâmpada (carga) - potência zero fornecida
     else if(powertime >= 8000)
     {
          //Desliga o pulso do sinal ao TRIAC para que ele não conduza,
          //coloca o pino digital "load" em nível baixo
          digitalWrite(load, LOW);
     }
   
     //Se o powertime estiver entre 300 microsegundos a 8000 microsegundos
     else if((powertime > 830) && (powertime < 8000))
     {
          //Mantém o circuito desligado por powertime microssegundos (espera
          //powertime microssegundos)
          delayMicroseconds(powertime);
       
          //Envia sinal ao TRIAC para que ele passe a conduzir, coloca o pino
          //digital "load" em nível alto
          digitalWrite(load, HIGH);
       
          //Espera 8,33 microssegundos para que o TRIAC perceba o pulso
          delayMicroseconds(8.33);
 
          //Desliga o pulso do TRIAC, coloca o pino digital "load" em nível baixo
          digitalWrite(load, LOW);
     }
}
//----------------------------fim do programa-----------------------------------------------

Testando a aplicação utilizando o Monitor serial da IDE do arduino
Para fazer o teste utilizando o Monitor serial, o módulo bluetooth tem que está desconectado dos pinos RX e TX do arduino.
O teste é feito enviando letras 'A', 'B', 'C' e 'D'. Cada letra enviada, o arduino interpreta e toma uma determinada decisão. A figura 6 mostra o teste feito pelo Monitor serial.
Figura 6 - Teste utilizando o Monitor serial da IDE arduino
Testando a aplicação pelo aplicativo Dimmer Shield Bluetooth
A figura 7 mostra as ligações elétricas e o teste do controle do brilho de uma lâmpada led dimerizável pelo aplicativo.

Figura 7 - Controlando o brilho de uma lâmpada led pelo aplicativo Dimmer Shield Bluetooth

Exibições: 2564

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de André Araújo Kuhn Pereira em 28 julho 2016 às 13:15

Boa tarde José Gustavo! Muito obrigado pelos parabéns! Foi eu que desenvolvi sim! E incubei o projeto junto com o labdegaragem.com. Agora estou vendendo por conta própria! Vou providenciar o vídeo do funcionamento e colocar no blog! Obrigado pela sugestão. Abraço.

Comentário de José Gustavo Abreu Murta em 28 julho 2016 às 12:55

Sugiro que divulgue um vídeo com sua aplicação em funcionamento. 

Comentário de José Gustavo Abreu Murta em 28 julho 2016 às 12:35

André, foi você que desenvolveu a Dimmer Shield  e toda a solução ? 

Parabéns !!

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço