Como fazer um controle Bluetooth para fita de LED utilizando o Arduino 2

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:

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.

Tabela de Conexões
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. .

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. Olá.

    Mas o que exatamente está ocorrendo?

    Favor entrar em contato conosco no WhatsApp (48) 3307-3495.

    Att.
    Vitor Mattos.
    Suporte Técnico MakerHero.

  2. 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”;
    }
    }