Arduino, Internet das Coisas e Computação vestível

Você está em » Home : Módulos :: Comunicação

[Voltar]

[Avançar]

Controle Remoto Ir + Módulo Sensor Receptor Ir

Descrição

Controle remoto infravermelho de 38Khz com 21 teclas. Pode ser usado em vários equipamentos ou em projetos que necessitem de um controle remoto IR com protocolo de fácil utilização (NEC). O módulo receptor infravermelho utiliza o sensor AX-1838HS que é semelhante ao TSOP1838, usado em sistemas de controle remoto. Esse Módulo trabalha na mesma frequência do controle (38kHz).

Caracteristicas do controle

  • Tensão: 5V
  • Faixa de alcance: 8m ~ 10m
  • Consumo de corrente stand-by: 3 - 5uA
  • Consumo de corente em trabalho: 3 – 5mA
  • Bateria: 3V CR2025, capacidade 160 mah
  • Frequência de trabalho: 38Khz
  • Vida útil das teclas: 20000 acionamentos
  • Dimensões: 86 x 40 x 6.0 mm

Características do receptor

  • Tensão de trabalho: 5V
  • Consumo de corrente: 1,5mA
  • Frequência de trabalho: 38Khz - Ângulo: +/- 60°
  • Tensão em nível lógico baixo: 0,4V
  • Tensão em nível lógico alto: até 4,5V
  • Temperatura de trabalho: -20° ~ 85°

Pinagem do receptor

  • VCC: 3-5V
  • GND: GND
  • IN: Input Digital

Como funciona o controle remoto infravermelho

O Controle Remoto Transmissor (emissor infravermelho) envia mensagens codificadas por meio da luz infravermelha – invisível ao olho humano – para um dispositivo receptor. Ou seja, quando apertamos o botão do controle, fazemos essa luz piscar, emitindo pulsos longos e curtos que compõem um código binário, convertido em comandos pelo dispositivo ao qual se destina. A cada botão do Controle Remoto Transmissor corresponde um código específico, gerado chip do Microcontrolador, que por sua vez, aciona um gerador de freqüências que envia os sinais para o dispositivo controlado. Alguns controles trabalham com frequências diferentes de modulação, mas a mais comum é a frequência de 38 KHz.

Biblioteca

Para programar o sensor utilize a biblioteca abaixo:


Projeto(s) relacionado(s)


Identifica código Hexadecimal (HEX Code) do controle remoto

O projeto usa Arduino Uno R3, Controle Remoto Ir e Módulo Sensor Receptor IR ou Sensor Receptor IR e resistor de 10 kΩ para imprimir o código Hexadecimal (HEX Code) programado para cada tecla do controle remoto.

1) Esquema com Controle Remoto Ir + Módulo Sensor Receptor IR e Display LCD 16x2 (+ resistores de 200Ω)

// Projeto: Identifica código Hexadecimal das teclas do controle remoto  
// Autor: André Silveira
// Data: 22/09/2019

#include   	                                         // Biblioteca LiquidCrystal
#include "IRremote.h"                         // Biblioteca IRemote

int PINO_REC = 10;                            // Declara pino conectado ao Receptor IR

IRrecv irrecv(PINO_REC);                   // Criando instância de objeto IRrecv
decode_results results;                       // declarando os resultados

// Inicializa instancia de classe do LiquidCrystal
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
 
void setup() {
      Serial.begin(9600);                      // Velocidade do Monitor serial
      Serial.println("Aperte uma tecla para descobrir o codigo Hexadecimal");
      irrecv.enableIRIn();                     // Inicializa a recepção de códigos
  
      lcd.begin(2,16);
      lcd.print("Aperte uma tecla");
}
 
void loop() {

// --- Se alguma tecla for apertada imprime seu código Hexadecimal --- //
       
      if (irrecv.decode(&results)) {                 // Tecla apertada
          Serial.println(results.value, HEX);      // Imprime codigo Hexadecimal
          irrecv.resume();                               // Reinicializa o receptor
          
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print(results.value, HEX);        
          delay(10);                               
      }
  
}


2) Esquema com Controle Remoto Ir + Módulo Sensor Receptor IR

3) Esquema com Controle Remoto Ir, Sensor Receptor IR e resistor de 10 kΩ.


// Projeto: Identifica código Hexadecimal das teclas do controle remoto  
// Autor: André Silveira
// Data: 22/09/2019

#include "IRremote.h"                             		// Biblioteca IRemote
int PINO_REC = 10;                                		// Declara pino conectado ao Receptor IR

IRrecv irrecv(PINO_REC);                        		// Criando instância de objeto IRrecv
decode_results results;                        		// declarando os resultados
 
void setup() {
      Serial.begin(9600);                         		// Velocidade do Monitor serial
      Serial.println("Aperte uma tecla para descobrir o código Hexadecimal");
      irrecv.enableIRIn();                        		// Inicializa a recepção de códigos
}
 
void loop() {

// --- Se alguma tecla for apertada imprime seu código Hexadecimal --- //
    
      if (irrecv.decode(&results)) {             		// Tecla apertada
          Serial.println(results.value, HEX);    		// Imprime codigo Hexadecimal
          irrecv.resume();                            		// Reinicializa o receptor
          delay(10);                               
      }
}


Acende e apaga LEDs pelo controle remoto

O projeto usa Arduino Uno R3, Display LCD 16x2 (+ resistores de 200Ω), Controle Remoto Ir e Módulo Sensor Receptor IR (ou Sensor Receptor IR e resistor de 10 kΩ) e resistores de 120Ω para acender e apagar LEDs.

1) Esquema com Controle Remoto Ir + Módulo Sensor Receptor IR

2) Esquema com Controle Remoto Ir, Sensor Receptor IR e resistor de 10 kΩ.


// Projeto: Acende e apaga LEDs pelo controle remoto  
// Autor: André Silveira
// Data: 22/09/2019

#include <LiquidCrystal.h>  			// Biblioteca LiquidCrystal
#include <IRremote.h>                		// Biblioteca IRemote

int PINO_REC = 10;                         		// Declara pino conectado ao Receptor IR

IRrecv irrecv(PINO_REC);                  		// Criando instância de objeto IRrecv
decode_results results;                    		// declarando os results

int Pino_Vermelho = 4;              	   		// Pino da cor vermelho do LED
int Pino_Verde = 5;                 	   		// Pino da cor verde do LED
int Pino_Azul = 6;                		   	// Pino da cor azul do LED

// Inicializa instancia de classe do LiquidCrystal
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);

void setup() {
  
      Serial.begin(9600);                         
      Serial.println("Aperte uma tecla");      
      irrecv.enableIRIn();                        	// Inicializa a recepção de códigos

      pinMode(Pino_Vermelho, OUTPUT);                     
      pinMode(Pino_Azul, OUTPUT);                        
      pinMode(Pino_Verde, OUTPUT); 

      lcd.begin(2,16);
      ligaled(0,0,0,"Aperte uma tecla");
  
}
 
void loop() {

 // --- Se alguma tecla foi apertada imprime o código Hexadecimal --- //
 
      results.value = 0;                      		
      if (irrecv.decode(&results))  {
          Serial.print(" > Apertou: "); 		
          Serial.print(results.value, HEX); 	// imprime o HEX Code
          irrecv.resume();                    		// reinicializa o receptor
      }

// --- Se alguma tecla for apertada testa o código Hexadecimal --- //
  
      switch (results.value) {
          case 0xFD30CF:
                Serial.print(" > Ligou Led Branco");
                Serial.println("");        
                ligaled(255,255,255,"Ligou Led");
                break;
          case 0xFD08F7: 
                Serial.print(" > Ligou Led Vermelho");                                       
                Serial.println("");
                ligaled(255, 0, 0,"Cor vermelha");
                break;
          case 0xFD8877: 
                Serial.print(" > Ligou Led Verde");                                       
                Serial.println("");
                ligaled(0, 255, 0,"Cor verde");
                break;        
          case 0xFD48B7: 
                Serial.print(" > Ligou Led Azul");                                       
                Serial.println("");
                ligaled(0, 0, 255,"Cor azul");
                break; 
          case 0xFD28D7: 
                Serial.print(" > Desligou Led");                                       
                Serial.println("");
                ligaled(0, 0, 0,"Desligou Led");
                break;         
          case 0: // --- Tecla não digitada       
                break; 
        default:
                Serial.print(" > Tecla invalida");  
                Serial.println("");        
                lcd.clear();
                lcd.setCursor(0,0);
                lcd.print("0 1 2 3 4");
                lcd.setCursor(0,1);
                lcd.print("Tecla errada");
                delay(400);
                break;
  	}
  	delay(100); 
            
}

// --- Função que liga ou desliga os Leds --- //  

void ligaled(int r, int g, int b, String mensagem) {   
 
    analogWrite(Pino_Vermelho, r);  
    analogWrite(Pino_Verde, g);  
    analogWrite(Pino_Azul, b); 

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("0 1 2 3 4");
    lcd.setCursor(0,1);
    lcd.print(mensagem);
}

 

[Voltar]

[Avançar]