Nesse post veremos como montar um controle Bluetooth para fita de LED comandada por um Aplicativo Android. Para isso vamos utilizar um Arduino Pro Mini, um módulo Bluetooth HC-05 para comunicação com o celular e transistores NPN para controlar a energia que chega em cada uma das cores da fita de LED.
As controladoras vendidas comercialmente geralmente funcionam através de controles infravermelhos, o alcance desses controles é muito curto e precisam ser apontados para o receptor, que precisa estar visível para receber o sinal.
Com esse projeto, você pode controlar a fita de LED com mais facilidade e a maiores distâncias e, como o código do projeto é bem simples, pode ser facilmente customizado. Além disso, o controle de intensidade presente nesse projeto é muito mais amplo e preciso do que o dos controles comerciais.
Materiais Necessários
Para montar esse projeto usaremos os seguintes componentes:
- 1x Arduino Pro Mini
- 1x Módulo Bluetooth HC-05
- 1x Fita de LED RGB 12V
- 1x Fonte 12V
- 1x Regulador de tensão 7805
- 1x Resistor 510Ω
- 1x Resistor de 1 kΩ
- 3x Resistores 220 Ω
- 3x Transistores TIP122
- 1x Protoboard
- 1x Conector Jack P4 (opcional)
- Jumpers
Circuito
A alimentação para esse projeto deve ser feita por uma fonte de 12 V. Para cada metro de Fita de LED 5050 é necessário 1,2 A – para uma fita de 5 metros, por exemplo, a fonte deve ser capaz de fornecer 6 A. O positivo da fonte deve ser conectado diretamente ao “+” da fita de LED.
Para realizar as conexões, você pode cortar o cabo da fonte e desencapar os fios de alimentação ou preservar o conector da fonte e utilizar um conector jack P4, como o da imagem abaixo, conectando os fios de energia nos bornes – o símbolo de + indica 12 V e o de – é o GND.
Utilizaremos um regulador de tensão 7805 para fornecer 5 V para o Arduino e para o módulo Bluetooth a partir da mesma fonte de 12 V utilizada para alimentar a fita de LED. Apesar do regulador de tensão embarcado no Arduino ser capaz de lidar com uma tensão de 12 V, ele não é suficiente para fornecer energia para o módulo Bluetooth. As conexões do regulador devem ser feitas conforme a imagem abaixo.
O módulo Bluetooth HC-05, apesar de poder ser alimentado com 5 V, trabalha com níveis lógicos de 3,3 V enquanto o Arduino trabalha com níveis de 5 V. Precisamos então utilizar um divisor de tensão entre as portas TX do Arduino e RX do módulo. Para mais detalhes sobre o módulo HC-05 acesse o “Tutorial Módulo Bluetooth com Arduino“.
Utilizaremos transistores conectados a portas digitais PWM do Arduino para controlar a intensidade de cada uma das cores disponíveis na Fita de LED. Para mais detalhes sobre o uso de PWM para controlar LEDs acesse “Ajustando o brilho de um LED por PWM com Arduino“. Para cada uma das cores, o pino da esquerda do transistor deve ser conectado através de um resistor de 220 Ω ao pino do Arduino, o pino do meio deve ser conectado a Fita de LED e o pino da direita ao GND.
As demais conexões devem ser feitas conforme a tabela.
Arduino | Fita de LED | Fonte | HC – 05 | Regulador 7805 | Resistor 1kΩ | Resistor 510Ω |
---|---|---|---|---|---|---|
GND | Negativo | GND | GND | Terminal 1 | ||
VCC | VCC | 5V | ||||
10 | TX | |||||
12 | Terminal 1 | |||||
RX | Terminal 2 | Terminal 2 | ||||
+ | Positivo | 12V |
Código
No código usaremos a biblioteca Software Serial, presente nativamente na IDE do Arduino. Essa biblioteca nos permite utilizar outros pinos digitais do Arduino para estabelecer conexão serial com o módulo Bluetooth.
#include <SoftwareSerial.h> // Portas---------- #define RedPin 5 #define GreenPin 3 #define BluePin 6 // Variáveis de Controle bool Estado = false; byte Intensidade = 255; byte Red = 255; byte Green = 255; byte Blue = 255; void BluetoothControl( ); SoftwareSerial bluetooth( 10, 12); // RX, TX void setup( ) { bluetooth.begin( 9600); // Inicializa a comunicação com o módulo HC-05 pinMode( RedPin, OUTPUT); pinMode( GreenPin, OUTPUT); pinMode( BluePin, OUTPUT); } void loop( ) { BluetoothControl(); // Recebe as configurações do Usuário feitas pelo App analogWrite( RedPin, Red * Estado * Intensidade/100); analogWrite( GreenPin, Green * Estado * Intensidade/100); analogWrite( BluePin, Blue * Estado * Intensidade/100); } void BluetoothControl( ) { static String command = "\0"; if ( bluetooth.available()) command += char(bluetooth.read()); if(command.length() == 12) { if ( command == "111111111111") // Comando para Ligar a Fita de LED Estado = true; else if ( command == "000000000000") // Comando para Desligar a Fita de LED Estado = false; else if ( command.indexOf("RGB") != -1) // Comando para alterar a cor da Fita de LED { //RGBXXXXXXXXX - Resolução de 8 bits String r = String(command[3]) + String(command[4]) + String(command[5]); String g = String(command[6]) + String(command[7]) + String(command[8]); String b = String(command[9]) + String(command[10]) + String(command[11]); Red = r.toInt(); Green = g.toInt(); Blue = b.toInt(); } else if ( command.indexOf("INT") != -1) // Comando para alterar a intensidade da Fita { //INT000000XXX String intensidade = String(command[9]) + String(command[10]) + String(command[11]); Intensidade = intensidade.toInt(); } command = "\0"; } }
No início do código, em Portas, definimos os pinos do Arduino que controlam os transistores de cada uma das cores.
A função BluetoothControl recebe do módulo HC-05 o comando de 12 caracteres enviado pelo aplicativo e extrai as configurações definidas pelo usuário.
Para saber como fazer upload do código no Arduino Pro Mini você pode acessar o nosso post “Programando um Arduino Pro Mini com Arduino Uno” ou “Programando o Arduino Pro Mini com Cabo Conversor USB TTL“.
Funcionamento
Faça o download do arquivo de instalação do aplicativo no seu dispositivo Android.
Para a utilização do aplicativo é necessário que o Bluetooth do seu celular esteja ativado e o módulo Bluetooth esteja pareado – o nome é HC-05 e a senha de pareamento 1234. Para começar a controlar a fita é só clicar em “Selecione a Fita de LED” no topo da tela e escolher o módulo Bluetooth corresponde a fita que deseja controlar.
Gostou desse projeto? Não esqueça de deixar um comentário aqui embaixo nos contando o que achou. .
Tentei fazer esta aplicação com um Arduino Nano, mas não está funcionando.. Não sei o que podemos ter errado.
Temos um HC-06 e estamos usando os pinos 8 e 12 para a comunicação.
#include
// Portas———-
#define RedPin 9
#define GreenPin 10
#define BluePin 11
// Variáveis de Controle
bool Estado = false;
byte Intensidade = 255;
byte Red = 255;
byte Green = 255;
byte Blue = 255;
void BluetoothControl( );
SoftwareSerial bluetooth(8,12); // RX, TX
void setup( )
{
bluetooth.begin(9600); // Inicializa a comunicação com o módulo HC-05
Serial.begin(9600);
pinMode(8,INPUT);
pinMode(12,OUTPUT);
pinMode(RedPin, OUTPUT);
pinMode(GreenPin, OUTPUT);
pinMode(BluePin, OUTPUT);
Serial.println(“Iniciando…”);
}
void loop( )
{
BluetoothControl(); // Recebe as configurações do Usuário feitas pelo App
analogWrite( RedPin, Red * Estado * Intensidade/100);
analogWrite( GreenPin, Green * Estado * Intensidade/100);
analogWrite( BluePin, Blue * Estado * Intensidade/100);
}
void BluetoothControl( )
{
static String command = “\0”;
if (bluetooth.available())
{
Serial.println(“Comando recebido…”);
command += (char)bluetooth.read();
}
Serial.println(command);
if(command.length() == 12)
{
if (command == “111111111111”) // Comando para Ligar a Fita de LED
Estado = true;
else if (command == “000000000000”) // Comando para Desligar a Fita de LED
Estado = false;
else if (command.indexOf(“RGB”) != -1) // Comando para alterar a cor da Fita de LED
{
//RGBXXXXXXXXX – Resolução de 8 bits
String r = String(command[3]) + String(command[4]) + String(command[5]);
String g = String(command[6]) + String(command[7]) + String(command[8]);
String b = String(command[9]) + String(command[10]) + String(command[11]);
Red = r.toInt();
Green = g.toInt();
Blue = b.toInt();
}
else if (command.indexOf(“INT”) != -1) // Comando para alterar a intensidade da Fita
{
//INT000000XXX
String intensidade = String(command[9]) + String(command[10]) + String(command[11]);
Intensidade = intensidade.toInt();
}
command = “\0”;
}
}
Olá Otavio.
Mas o que exatamente está ocorrendo?
Favor entrar em contato no [email protected] para tratarmos disso.
Att.
Vitor Mattos.
MakerHero.