• COMPONENTE
    CONTROLE REMOTO

O que é?

O controle remoto é um componente eletrônico de comunicação IR (infrared ou infravermelho). Existem vários modelos, este em questão, possui 21 teclas e opera na faixa de 38KHz. A tecnologia utilizada é a mesma dos controles remotos de TVs onde há um sistema de comunicação por infravermelho que requer um transmissor e um receptor.

O transmissor, localizado na parte frontal do controle, tem a aparência de um LED padrão, mas ao invés de produzir uma luz visível comum, produz luz invisível no espectro IR. O receptor de infravermelho é um fotodiodo que é capaz de converter a luz de infravermelho emitida pelo transmissor em um sinal elétrico.

Controle remoto arduino

Propriedades

Cada vez que um botão do controle é pressionado, um código hexadecimal exclusivo é gerado. Esta informação é modulada e enviada por IR para o receptor do sinal. Para decifrar qual tecla está sendo pressionada, o microcontrolador utilizado com receptor precisa saber qual código corresponde a cada tecla no controle remoto. A comunicação por infravermelho (IR) é uma tecnologia sem fio amplamente utilizada atualmente, além de ser fácil de implementar em projetos.

Como o infravermelho é um tipo de luz, sua comunicação requer uma linha direta de visão do transmissor para o receptor, ou seja, não pode transmitir através de paredes ou outros obstáculos, como WiFi ou Bluetooth.

Montagem dos componentes

Abaixo temos um código exemplo onde, usando o controle remoto 38Khz, pode-se acender a apagar os leds que estão conectados no receptor.

LISTA DOS COMPONENTES

  • 1 x Arduino Uno SMD
  • 1 x Cabo USB para comunicação
  • 1 x Protoboard 400 pontos
  • 1 x Controle remoto
  • 1 x Receptor VS1838B
  • 3 x Leds de 5mm
  • 1 x Resistor 100Ω
  • 1 x Resistor 220Ω
  • 1 x Resistor 10kΩ
  • 7 x Jumpers macho/macho
Esquema montagem controle remoto

Código exemplo

O código de exemplo abaixo é referente ao esquema ilustrado acima.

IDE Arduino
#include <IRremote.h> // Biblioteca IRemote

const int Controle_Pin = 12; // Arduino pino 12 conectado no Receptor IR
IRrecv irrecv(Controle_Pin); // criando a instância
decode_results resultados; // declarando os resultados
unsigned long key_value = 0;
bool Led_1, Led_2, Led_3 = false;

void setup(){
    Serial.begin(9600);
    pinMode(5, OUTPUT); // LED vermelho no pino D05
    pinMode(6, OUTPUT); // LED amarelo no pino D06
    pinMode(7, OUTPUT); // LED azul no pino D07
    irrecv.enableIRIn();
    irrecv.blink13(true); // Pisca o led 13 do arduino, apenas para uma referencia visual
            // pois nao conseguimos ver a luz infravermelha do controle
}

void loop(){
    if (irrecv.decode(&resultados)){
        if (resultados.value == 0XFFFFFFFF)
            resultados.value = key_value;
            switch(resultados.value){
            case 0xFF30CF:
                Serial.println("Botão 1");
                Led_1 = !Led_1; // alterna o estado do LED D05
                digitalWrite(5, Led_1); // acende ou apaga LED vermelho (D05)
                delay(300); // atraso de 250 ms
                break;
            case 0xFF18E7:
                Serial.println("Botão 2");
                Led_2 = !Led_2; // alterna o estado do LED D06
                digitalWrite(6, Led_2); // acende ou apaga LED amarelo (D06)
                delay(300); // atraso de 250 ms
                break;
            case 0xFF7A85:
                Serial.println("Botão 3");
                Led_3 = !Led_3; // alterna o estado do LED D07
                digitalWrite(7, Led_3); // acende ou apaga LED azul (D07)
                delay(300); // atraso de 250 ms
                break;
            }
            key_value = resultados.value;
            irrecv.resume(); 
        }
}
IDE Arduino