Lâmpada RGB controlada remotamente IR usando Arduino

Lâmpada RGB controlada remotamente IR usando Arduino

O Arduino pode ser usado para variar diferentes cores na lâmpada RGB (LED). Sabemos que o Arduino pode variar a intensidade do LED usando suas saídas analógicas, gerando PWM. A lâmpada RGB possui 3 LEDs internos – vermelho, verde e azul. O Arduino varia a intensidade de todos os três LEDs vermelhos, verdes e azuis e, assim, fornece diferentes misturas dessas três cores e gera cores diferentes como CIANO, ROSA, AMARELO, MAGENTA, BRANCO etc. ao máximo, podemos ter muitos números de combinações de cores – significa cores diferentes. Portanto, o Arduino pode gerar muitas cores diferentes usando lâmpada RGB.

E se pudéssemos LIGAR ou DESLIGAR a lâmpada RGB ou variar suas diferentes cores usando o controle remoto IR? Especialmente o controle remoto IR portátil normal e prontamente disponível que podemos encontrar em quase todas as residências para TV, AC, sistemas de música, DVD ou até mesmo para STB (set top box). Significa que podemos LIGAR ou DESLIGAR a lâmpada ou definir qualquer cor de lâmpada usando esse controle remoto IR – qualquer controle remoto IR. Soa interessante?

O projeto apresentado demonstra como ligar/desligar ou variar as cores da lâmpada RGB usando qualquer controle remoto IR (como TV, DVD, AC, STB etc) com a ajuda do Arduino. O projeto usa um controle remoto IR de decodificador normal (STB), sensor IR TSOP e placa Arduino UNO. Qualquer pessoa pode usar qualquer tipo de controle remoto IR. Ele só precisa alterar os códigos do controle remoto no esboço (programa) do Arduino para o controle remoto. Este procedimento também é descrito aqui ao explicar a operação. Então, vamos ver como isso é feito. Primeiro, veja o diagrama do circuito seguido de sua descrição e operação.

DESCRIÇÃO DO CIRCUITO

Conforme mostrado na figura, o circuito é construído utilizando 3 componentes apenas uma placa Arduino, sensor IR e LED RGB.

• O sensor TSOP1738 possui 3 terminais (1) Vcc (2) Gnd e (3) saída. Seu terminal Vcc recebe 5 V da placa e o terminal Gnd é conectado ao terra da placa. A saída do sensor está conectada ao pino de entrada digital 12 da placa Arduino.

• O LED RGB é do tipo ânodo comum. Seu ânodo comum recebe alimentação de 5 V da placa através do resistor limitador de corrente e os terminais de LED vermelho, verde e azul são conectados aos pinos de saída analógica 9, 10 e 11 respectivamente.

Aqui está o snap do arranjo do circuito.

Protótipo de controlador de lâmpada RGB baseado em Arduino e IR Remte

Figura 1: Protótipo de controlador de lâmpada RGB baseado em Arduino e IR Remte

OPERAÇÃO DO CIRCUITO

Primeiro, temos que decidir quais são os diferentes botões do controle remoto IR que usaremos para variar as cores da bola RGB. Queremos realizar as seguintes ações -:

1. Lâmpada RGB LIGADA/DESLIGADA

2. Aumentar/diminuir a intensidade da cor vermelha

3. Aumentar/diminuir a intensidade da cor verde

4. Aumentar/diminuir a intensidade da cor azul

Portanto, precisamos de 7 botões. Usei o controle remoto do decodificador (STB) que possui muitos botões, como botões de 0 a 9 dígitos, botões de controle de volume, botões de aumento/descida de canal, botões de seta, etc. De todos esses botões, selecionei os seguintes 7 botões para diferentes operações -:

Tabela listando botões do controle remoto IR e respectivas funções no controle de lâmpada RGB

Fig. 2: Tabela listando os botões do controle remoto IR e respectivas funções no controle de lâmpada RGB

Depois de decidir os botões, o próximo passo é decodificar os códigos desses botões. Como sabemos quando qualquer botão é pressionado remotamente, ele enviará um código e com base nesse código a ação será executada. Então, para decodificar esses códigos usei as funções IRremote e a biblioteca IRremote para arduino, disponíveis na internet.

Então baixe a biblioteca e use um exemplo para decodificar os códigos dos botões do controle remoto. Carregue o programa no microcontrolador Arduino e conecte o sensor IR conforme mostrado na figura. Agora aponte o controle remoto para o sensor IR e pressione o botão. Abra o monitor serial e você poderá observar o código do botão pressionado em forma de números. Anote os códigos dos botões necessários, como anotei os códigos de acordo com a tabela a seguir -:

Tabela listando botões do controle remoto IR e respectivos códigos IR

Fig. 3: Tabela listando botões do controle remoto IR e respectivos códigos IR

No esboço do Arduino acima, são usados ​​códigos correspondentes ao botão pressionado para executar uma ação conforme a tabela anterior. Agora vamos ver a operação real.

• Quando o botão liga/desliga é pressionado pelo controle remoto, a lâmpada RGB será ligada. Pressionar o mesmo botão mais uma vez desligará a lâmpada RGB. Assim, o botão liga / desliga do controle remoto é usado para ligar / desligar a lâmpada RGB. A mensagem também é exibida no monitor serial como “RGB bulb ON” e “RGB bulb OFF”

• O botão de aumentar volume é usado para aumentar a intensidade da cor vermelha (LED VERMELHO) e o botão de diminuir volume diminui a intensidade do LED VERMELHO. A intensidade do LED VERMELHO é aumentada de 1% para 100%. À medida que os botões são pressionados, a largura do pulso no pino 11 da saída analógica aumenta ou diminui de 1 a 100% para alterar a intensidade do LED vermelho. A mensagem é exibida em um monitor serial como “a intensidade do vermelho aumentou XX%” ou “a intensidade do vermelho diminuiu XX%”.

• Da mesma forma para alterar a intensidade da cor azul são utilizados outros dois botões CH+ e CH-. O botão CH+ aumentará a intensidade da cor azul e CH- a diminuirá. Esses dois botões aumentarão ou diminuirão a largura do pulso no pino 9 da saída analógica e assim variarão a intensidade do LED azul de 1 a 100%.

• Finalmente, para variar a intensidade do LED verde, são usados ​​os botões de seta para cima e para baixo. O botão de seta para cima aumentará a intensidade e a tecla de seta para baixo diminuirá a intensidade. Esses dois botões aumentarão ou diminuirão a largura do pulso no pino 10 da saída analógica e variarão a intensidade do LED verde de 1 a 100%.

• Assim, alterando/variando/definindo intensidades de cores diferentes usando todos esses seis botões, podemos obter cores diferentes da lâmpada RGB.

Código fonte do projeto

###

#include 


int IRpin = 12;  // pin for the IR sensor


int red = 9;

int green = 10;

int blue = 11;


/////////////////// initial values of colour intensity/////////////////////

int red_intensity=130,i; 

int blue_intensity=130;

int green_intensity=130;

IRrecv irrecv(IRpin);

decode_results results;


void setup 

{

  Serial.begin(9600); // initialize serial communication

  Serial.println("Remote control RGB Light");

  irrecv.enableIRIn ;  // Start the receiver

 }


void loop  

{

 // loop until no button is pressed no code is received

 while(!(irrecv.decode(&results))); 

 if (irrecv.decode(&results))  // when code is received

    { // start comparing results

      if(results.value==6296)  // for power on button

        {

          analogWrite(red,red_intensity);          // turn ON bulb with

          analogWrite(green,green_intensity); // default colour

          analogWrite(blue,blue_intensity);

          Serial.println("RGB Bulb ON");        // display message

        }

      else if(results.value==2200)  // for even times

        {

          analogWrite(red,255); // turn OFF bulb

          analogWrite(green,255);

          analogWrite(blue,255);

          Serial.println("RGB Bulb OFF");

        }

      else if(results.value==6338) // for volume UP button

        {

          // decrease pulse width means increase colour intensity

if(red_intensity>5) red_intensity-=25; 

          Serial.print("red intensity increased to ");

          i = 100-red_intensity*100/255; // convert it into 1 to 100%

          Serial.println(i);          // display it on serial monitor 

          analogWrite(red,red_intensity);  

        }

      else if(results.value==6292) // for volume down button

        {

          // increase pulse width means decrease colour intensity

if(red_intensity<255) red_intensity+=25; 

          Serial.print("red intensity decreased to ");

          i= 100-red_intensity*100/255; // convert it into 1 to 100%

          Serial.println(i);           // display it on serial monitor

          analogWrite(red,red_intensity);    

        }    

       else if(results.value==2205) // same as above for green colour LED

        {

          if(green_intensity>5) green_intensity-=25; 

          Serial.print("green intensity increased to ");

          i=100 - green_intensity*100/255;

          Serial.println(i);           

          analogWrite(green,green_intensity);  

        }

      else if(results.value==2199)

        {

          if(green_intensity<255) green_intensity+=25; 

          Serial.print("green intensity decreased to ");

          i=100 - green_intensity*100/255;

          Serial.println(i);          

          analogWrite(green,green_intensity);    

        } 

      else if(results.value==6377) //same as above for blue colour LED 

        {

          if(blue_intensity>5) blue_intensity-=25; 

          Serial.print("blue intensity increased to ");

          i=100 - blue_intensity*100/255;

          Serial.println(i);           

          analogWrite(blue,blue_intensity);  

        }

      else if(results.value==6378)

        {

          if(blue_intensity<255) blue_intensity+=25; 

          Serial.print("blue intensity decreased to ");

          i=100 - blue_intensity*100/255;

          Serial.println(i);           

          analogWrite(blue,blue_intensity);    

        }                

      delay(200);       // wait for 200 ms

      irrecv.resume ;   // Receive the next value

  }  

}

###

Diagramas de circuito

Diagrama de circuito-Arduino-IR-Remte-Based-RGB-Bulb-Controller

Vídeo do projeto

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.