Trabalhando com Sensores de Infravermelho

Dentre todas as radiações que somos expostos diariamente, somente uma pequena porção (espectro visível) que se manifesta atraves da emissão de luz é possivel ser observada pelo olho humano. Na figura 1 um espectro eletromagnético é apresentado onde podemos observar que há varias outras radiações invisível com comprimento de onde especifico e bem conhecidos.

Figura 1.   Espectro eletromagnético - créditos Shutterstock.com 



Dentre as ondas eletromagneticas não visiveis, podemos citar o Infravermelho (IR) cujo nome significa "abaixo do vermelho" e seu comprimento de onda varia de 750 nm a 1mm.
Devido da facilidade de trabalhar com o infravermelho, nos anos 40 (2ª Guerra mundial) apareceram os primeiros controles remotos que usavam o infravermelho para enviar uma sequencia de pulsos para um receptor que interpretava esse sinal e executar alguma função, nesse casos especifico, o controle remoto detonava bombas a distancia. Até os dias de hoje o controle remoto trabalha da mesma maneira o que nos permite usa-lo para realizar algum tipo de automação.

Para realizar nosso projeto com controle remoto, você poderá comprar qualquer sensor de IR (por exemplo Hx1838) assim como qualquer controle remoto IR.......


Identificando cada botão do controle:

No principio de funcionamento do controle, cada botão corresponde um código específico, gerado por um microprocessador que fará o emissor IR piscar numa determinada sequencia binária. Quando essa sequencia pulsada chega ao receptor, o microcontrolador do receptor irá processar essa sequencia bits e realizar uma ação. 
Como você comprou qualquer controle e não conhece a codificação de cada botão, será preciso criar um circuito simples para "mapear" seu controle. Na figura 2 temos um circuito simples usando um sensor IR ligando a saída do seu Arduino. Quando qualquer botão do controle for apertado o Arduino irá receber o sinal via porta 11.

Figura 2. Circuito simples para receber dados de controle IR

Para verificar o código de cada botão, iremos pressionar um botão qualquer do controle. O sinal emitido pelo controle será capturado pelo Arduino através do sensor IR e repassado para a porta serial.  Na porta serial será possível associar cada botão a um código em Hexadecimal.
Para realizar esse e qualquer outro projeto usando sensores de IR, vamos precisar usar a biblioteca IRremote.h que pode ser facilmente achada na net. (Não sabe o que é uma biblioteca? clique aqui), os comando da biblioteca serão comentados no código abaixo:

Programa usado para códigos de cada botão do controle IR

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);  // indicando que pino 11 será usado como entrada de dados o sensor IR
decode_results results;

void setup()  
{
    Serial.begin(9600);   // incializa porta Serial
    irrecv.enableIRIn(); // Inicializa o receptor IR
}
 
void loop()  
{
    if (irrecv.decode(&results)) //verifica se algo foi capturado no sensor IR
   {
       Serial.println(results.value, HEX); //Exibir na serial valor em Hexa lido no sensor
       irrecv.resume();  //Le o próximo valor 
   }
}

Se tudo deu certo, agora você sabe qual a codificação de cada botão do controle.
Agora com base no circuito da figura 3, vamos controlar 4 Led's que serão ligados nas portas 4,5,6 e 7. Cada Led será ligado por um botão do controle (1,2,3 e 4) e todos os Leds serão apagados quando o botão 5 for pressionado.
Figura 3. Circuito de controle de Led's por controle IR.
Segue código equivalente  ao problema apresentado acima:

#include <IRremote.h>

int RECV_PIN = 11;
int pino1 = 7;
int pino2 = 6;
int pino3 = 5;
int pino4 = 4;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()  
{
    Serial.begin(9600);   // incializa porta Serial
    pinMode(pino1, OUTPUT);
    pinMode(pino2, OUTPUT);
    pinMode(pino3, OUTPUT);
    pinMode(pino4, OUTPUT);
    irrecv.enableIRIn(); // Inicializa o receptor IR  
}
 
void loop()
{
   if (irrecv.decode(&results))
  {
    Serial.println(results.value, HEX);
    irrecv.resume();
  }

    if (results.value == 0xFD08F7) //Verifica se a tecla 1 foi acionada  
    {
      digitalWrite(pino1, HIGH);  //Acende o led vermelho  
    }
    if (results.value == 0xFD8877) //Verifica se a tecla 2 foi acionada  
    {
      digitalWrite(pino2, HIGH); //Acende o led verde  
    }
    if (results.value == 0xFD48B7) //Verifica se a tecla 3 foi acionada  
    {
      digitalWrite(pino3, HIGH); //Acende o led Amarelo  
    }
    if (results.value == 0xFD28D7) //Verifica se a tecla 4 foi acionada
    {
      digitalWrite(pino4, HIGH); //Acende o led azul  
    }
    if (results.value == 0xFDA857) //Verifica se a tecla 5 foi acionada  
    {
      //Apaga todos os leds  
      digitalWrite(pino1, LOW);
      digitalWrite(pino2, LOW);
      digitalWrite(pino3, LOW);
      digitalWrite(pino4, LOW);
    }
 
}


Agora Pratique:

Exercício 1. Reproduza o mesmo projeto apresentado na figura 3 e adicione mais tres funções ao controle:

      - O botão "play" fará todos os Led's piscarem ao mesmo tempo com intervalo de 0,5s.
   - O botão "avançar" fará com que os Led's acendam de maneira sequencial da direita para a esquerda com intervalos de 0,5s 
    - O botão "retroceder" fará com que os Led's acendam de maneira sequencial da esquerda para a direita com intervalos de 1s
Na figura 4 temos os botões que serão usados nessa automação 
Figura 4. Botões que serão usados

Exercício 2. Reproduza o mesmo projeto apresentado no exercício 1 só que agora a frequência com os Led's irão oscilar pode variar. Neste projeto, cada numero do controle representará uma velocidade (e.g.   botão 1 = 0,1 s - botão 8 = 0,8s, etc)

Desafio:

Desafio 1. Agora que você já domina o uso de controles IR, tente controlar dois motores CC usado uma ponte H e o controle IR. Não sabe controlar motor CC ou usar a ponte H? Acesse nossa postagem sobre assunto clicando aqui.

Desafio 2. Você tem controle de vídeo-game, TV ou celular que possui IR na sua casa? Tente fazer uma automação de maneira semelhante ao vídeo que pode ser acessado clicando na figura abaixo.


 Clique aqui e assista um vídeo sobre o assunto no Youtube.


Ainda ta com duvida, curta nossa pagina no facebook no link abaixo e poste sua duvida lá.


Nenhum comentário:

Postar um comentário