Tutorial Emissor e Receptor Infra-vermelho com Arduino

Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial, mostraremos como implementar o emissor e receptor de infravermelho com Arduino.

Para este tutorial você irá precisar de dois arduinos, um emissor de infravermelho, um receptor de infravermelho, um resistor de 200 Ohm e pushbuttons. Você pode utilizar o controle remoto de sua tv ao invés do emissor!

Antes de mais nada, é preciso ver a pinagem do Receptor IR está demonstrada abaixo:

Agora, podemos fazer as ligações para o emissor e receptor IR.

A figura abaixo mostra as ligações a serem feitas:

Esquema de ligações para o Emissor IR:

Esquema de ligações para Receptor IR:

Agora, podemos ir para a programação. Antes de mais nada, baixe a bilbioteca para controlar o IR clicando aqui.

Extraia a bilbioteca na pasta "libraries" da IDE do Arduino. Para a versão 1.0 da IDE do Arduino, abra o arquivo "IRRemoteInt.h" com um editor de texto( bloco de notas, gedit, etc). Dentro do editor de texto, troque a seguinte linha:

"#include <WProgram.h>" para "#include <Arduino.h>". 

As programações abaixo foram retiradas e modificadas do livro Arduino Cookbook. Clique aqui para maiores informações.

Agora abra a IDE do arduino e passe a seguinte programação para o arduino emissor IR:

/*
irSend sketch
this code needs an IR LED connected to pin 3
and 5 switches connected to pins 4 - 8
*/
#include <IRremote.h>
// IR remote control library
const int numberOfKeys = 1;
const int firstKey = 4;
// the first pin of the 5 sequential pins connected to buttons
boolean buttonState[numberOfKeys];
boolean lastButtonState[numberOfKeys];
long irKeyCodes[numberOfKeys] = {
0x18E758A7, //0 key

};
IRsend irsend;
void setup()
{
for (int i = 0; i < numberOfKeys; i++){
buttonState[i]=true;
lastButtonState[i]=true;
int physicalPin=i + firstKey;
pinMode(physicalPin, INPUT);
digitalWrite(physicalPin, HIGH); // turn on pull-ups
}
Serial.begin(9600);
}
void loop() {
for (int keyNumber=0; keyNumber<numberOfKeys; keyNumber++)
{
int physicalPinToRead=keyNumber+4;
buttonState[keyNumber] = digitalRead(physicalPinToRead);
if (buttonState[keyNumber] != lastButtonState[keyNumber])
{
if (buttonState[keyNumber] == LOW)
{
irsend.sendSony(irKeyCodes[keyNumber], 32);
Serial.println("Sending");
}
lastButtonState[keyNumber] = buttonState[keyNumber];
}
}
}

Clique em "UPLOAD" e passe a programação.

Agora para o Arduino Receptor IR, a programação está abaixo:

/*
IR_remote_detector sketch
An IR remote receiver is connected to pin 2.
The LED on pin 13 toggles each time a button on the remote is pressed.
*/
#include <IRremote.h> //adds the library code to the sketch
const int irReceiverPin = 2; //pin the receiver is connected to
const int ledPin = 13;
IRrecv irrecv(irReceiverPin); //create an IRrecv object
decode_results decodedSignal; //stores results from IR detector

void setup()
{
pinMode(ledPin, OUTPUT);
irrecv.enableIRIn();
}
boolean lightState = false;
unsigned long last = millis();

// Start the receiver object
//keep track of whether the LED is on
//remember when we last received an IR
void loop()
{
if (irrecv.decode(&decodedSignal) == true) //this is true if a message has been received
{
if (millis() - last > 250) {
//has it been 1/4 sec since last message
lightState = !lightState;
//toggle the LED
digitalWrite(ledPin, lightState);
}
last = millis();
irrecv.resume();
// watch out for another message
}
}


Agora que você passou as programações, você pode testar! Ao clicar o botão do Arduino emissor e direcionando o LED infravermelho na direção do receptor, o LED do Arduino Receptor acenderá. Ao clicar o botão novamente, o LED do Arduino receptor apagará! E é isso aí!! Esperamos que tenham gostado! Se tiverem dúvidas, postem aqui neste blog! Caso tiverem sugestões, vocês podem sugerir aqui neste POST e vocês podem ver os outros tutoriais que fizemos clicando aqui e os projetos clicando aqui! Até a próxima!!


Referências:

http://www.arcfn.com/2009_08_01_archive.html

http://arduino.cc/playground/

http://www.datasheetcatalog.org/datasheets/2300/301522_DS.pdf


Exibições: 122031

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Mateus Diel em 4 abril 2016 às 10:54

Oi pessoal, seguinte, eu tenho um receptor IR. Usei um controle remoto normal para enviar os dados.
Mas assim, se eu pressiono a tecla 1 ele me da um código e se eu pressiono denovo a tecla 1 ele me da outro codigo.
Ou seja, nunca é o mesmo codigo. O que fazer?

Comentário de robson rodrigues da silva em 11 março 2014 às 18:04

ola amigos, gostaria de saber se esta biblioteca IRremote pode ser usada em um microship pic?

Comentário de Rogerio A. Filho em 17 janeiro 2013 às 19:17

cara. como que eu faço controlar mais de uma TV, arcondicionado.. pois tenho 2 TVs da mesma marca e o controle funciona nas duas.. se eu coloco o infra ele controla as duas ao mesmo tempo.
tenho como controlar separadamente?

Comentário de Luís Bulek em 29 abril 2012 às 19:42

TIL78, esse muito parecido com um led, é apenas um fototransistor, não se presta para a decodificação de IR e seu uso mais simples é conforme o esquema: http://www.scielo.br/img/revistas/rbef/v30n1/a12fig06.gif .

Para você capturar e decodificar sinais de controle remoto IR, tem que usar necessariamente os recepetores IR, com 3 terminais. 

Comentário de Wallace Navarro Carvalho em 28 abril 2012 às 12:47

Eu  não consegui encontrar um Receptor de 3 pernas, como o da imagem, 

Só consegui o de 2 pernas que parece um LED. da pra usa-lo mesmo assim ?

Comentário de Ale em 27 abril 2012 às 20:46

Só complementando: Como tem muitos sensores IR com pinagem diferente no mercado, teste antes ele usando esta dica.

http://www.sabereletronica.com.br/secoes/leitura/943

Use um led bem nitido (ou diminua o resistor limitador por um de até 100R), pois com alguns sensores o acionamento do led é bem fraco.

Acrescentei na imagem o 2236 que é muito comum nas lojas da Sta. Ifigênia em SP.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço