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:
http://produto.mercadolivre.com.br/MLB-775276602-dimmer-shield-arduino-110vac-e-220vac-ate-trs-canais-_JM
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
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.
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.
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
Nenhum comentário:
Postar um comentário