Tutorial Arduino y control remoto Infrarrojo
[Link]
Tutorial Arduino y control remoto Infrarrojo
Posted by
2 Comments
ago 23, 2015
feb 19, 2015
jun 04,
2015
En este tutorial usaremos un mdulo sensor infrarrojo para recibir la
seal de controles remotos IR que usan muchos de los equipos
domsticos como TVs, equipos de sonidos, etc. A travs de estos
controlaremos las salidas de nuestro Arduino.
Para este tutorial usaremos el siguiente sensor de Infrarrojos:
ago 06,
2016
jun 15, 2016
1 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
may 25, 2016
Este sensor tiene un filtro interno para detectar solo frecuencias
infrarrojos cercanas a 38KHz, lo que lo hace compatible con la
mayora de mandos infrarrojos, posee 3 pines de conexin GND, VCC
y DATA , el cual nos permite conectar directamente a un pin digital de
nuestro Arduino o cualquier microcontrolador que deseemos usar.
Como mando usaremos uno que viene junto al sensor en el
Con este mdulo
podrs detectar...
S/. 8,00 S/. 10,00
Este Mando usa el protocolo NEC que trabaja a 38KHz de frecuencia,
el formato del tren de pulsos que enva al presionar una tecla se
muestra en la siguiente grfica:
Lo particular de este protocolo es que enva doble vez tanto la
direccin como el comando, de forma normal y negado, con esto
posteriormente se puede validar los datos.
Pantalla Oficial LCD
Touch de 7 pulgadas
2 de 16
La direccin est asociada a un dispositivo, por ejemplo un TV, una
equipo de sonido, un VCR, etc. Y el comando est asociado a la
accin o funcin del botn. Por ejemplo subir el volumen, apagar, el
nmero 1 o 2, etc.
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
S/. 470,00
[Link]
Para este tutorial vamos a trabajar como si se tratase de un solo
bloque de datos 32 bits.
A continuacin se muestra los valores de los datos correspondientes a
los botones del control en mencin:
Soporte para montaje
en superficies
paralelas a las guas
de 8mm dimetro
Botn
Direccin
(HEX)
comando
(HEX)
Dato 32 bits
(HEX)
OK
0x00
0x02
0x00FF02FD
Arriba ()
0x00
0x62
0x00FF629D
Abajo ()
0x00
0XA8
0x00FFA857
Izquierda
()
0x00
0x22
0x00FF22DD
Derecha
()
0x00
0xC2
0x00FFC23D
0x00
0x68
0x00FF6897
0x00
0x98
0x00FF9867
0x00
0xB0
0x00FFB04F
0x00
0x30
0x00FF30CF
0x00
0x18
0x00FF18E7
0x00
0x7A
0x00FF7A85
0x00
0x10
0x00FF10EF
0x00
0x38
0x00FF38C7
0x00
0x5A
0x00FF5AA5
0x00
0x4A
0x00FF4AB5
0x00
0x42
0x00FF42BD
0x00
0x52
0x00FF52AD
S/. 10,00
S/. 30,00
Rodamiento polimrico
para gua de 8mm de
dimetro
S/. 15,00
3 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
*Como se observa el dato est formado por la direccin, comando
y sus negaciones, por ejemplo para la tecla OK: el dato de 32bits
es 0x00FF02FD, donde la direccin es 00 y su negacin FF, y el
comando o funcin es 02 y su negacin FD.
Cristal oscilador de
16 MHz de
frecuencia. Utilizado
en Arduino Uno,...
En este tutorial tambin se realizarn ejemplos usando mandos de TV,
en particular usaremos un control remoto de un TV SONY
S/. 2,00
Ideal para unir los
extremos de nuestra
correa GT2.
S/. 10,00
EL protocolo SONY trabaja con una frecuencia de 40KHz, en la
siguiente figura se muestra los pulsos que se envan cuando se
presiona una botn
El mdulo Relay te
permite controlar el
encendido/apagado
de equipos de...
Trabaja con 12 bits de datos , de los cuales 5bits son para la direccion
y 7 bits para comando o funcion. Existen variaciones de 15 bits y 20
bit pero en todos los bits de comando son de 7 bits.
S/. 6,00
A continuacin se muestra algunos de los datos correspondientes al
protocolo SONY
Sensor capacitivo te
permite detectar
objetos metlicos y
no metlicos...
4 de 16
Botn
Direccin
(DEC)
Comando
(DEC)
Dato 12bits
(Hex)
Power
21
0xA90
Men
96
0X070
Arriba
116
0x2F0
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
S/. 40,00
Botn
Direccin
(DEC)
Comando
(DEC)
Dato 12bits
(Hex)
Abajo
117
0xAF0
izquierda
52
0x2D0
Derecha
51
0xCD0
0x010
0x810
0x410
0xC10
0x210
0xA10
0x610
0xE10
0x110
0x910
*Para convertir el dato de 12 bits en su direccin y comando se toma
empezando desde el bit menos significativo considerndolo de mayor
peso.
Explicado lo anterior Implementemos ambos controles en Arduino.
IRremote es una de las libreras ms usadas y completas para
trabajar con protocolos de controles infrarrojos, tiene implementado
varios protocolos de las marcas ms conocidas como Sony, LG,
Samsung, Sanyo, etc
Pueden descargarlo y encontrar ms informacin en:
5 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
Es necesario descargar e importarla a nuestro IDE Arduino para poder
trabajar los ejemplos de este tutorial
Las conexiones son simples el sensor tiene un pin VCC el cual se
alimenta con 5V un pin GND y un pin de DATA, que es una salida
digital el cual conectaremos al pin 11 del Arduino
Empecemos con nuestros ejemplos:
En este ejemplo se encender y apagar el led del pin 13 con
cualquier tecla de nuestro control remoto, incluso con cualquier
control.
El cdigo es el siguiente:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
[Link](); // Empezamos la recepcin
pinMode(13, OUTPUT);
}
por IR
boolean on = LOW;
void loop() {
6 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
if ([Link](&results)) {
// Dato recibido, conmutamos el LED
on = !on;
digitalWrite(13, on? HIGH : LOW);
[Link](); // empezamos una nueva recepcin
}
delay(300);
}
Expliquemos un poco el cdigo:
Con IRrecv irrecv(RECV_PIN) creamos la variable u objeto para el
receptor IR, en el pin especificado, luego creamos la variable result,
que es una estructura en donde se guardaran todos los datos
relacionados cuando se recibe un dato por sensor. En Setup()
inicializamos la recepcin de datos con [Link]() y
configuramos el pin 13 como salida.
En el void loop() simplemente comprobamos si le llega un dato al
receptor, esto lo hacemos con if([Link](&results)), si hay un
dato, encendemos o apagamos el LED.
Despus de cargar el programa, al presionar cualquier tecla de
cualquier control remoto, deber encender o apagar el LED.
En este ejemplo obtendremos los datos correspondientes a las teclas
de los diferentes mandos infrarrojos.
El cdigo es el siguiente:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
[Link](9600);
[Link](); // Empezamos la recepcin
}
por IR
void dump(decode_results *results) {
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
[Link]("(");
7 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
[Link](results->bits, DEC);
[Link](" bits)");
if (results->decode_type == UNKNOWN) {
[Link]("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
[Link]("Decoded NEC: ");
}
else if (results->decode_type == SONY) {
[Link]("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
[Link]("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
[Link]("Decoded RC6: ");
}
else if (results->decode_type == PANASONIC) {
[Link]("Decoded PANASONIC - Address: ");
[Link](results->address, HEX);
[Link](" Value: ");
}
else if (results->decode_type == LG) {
[Link]("Decoded LG ");
}
else if (results->decode_type == JVC) {
[Link]("Decoded JVC ");
}
else if (results->decode_type == AIWA_RC_T501) {
[Link]("Decoded AIWA RC T501 ");
}
else if (results->decode_type == WHYNTER) {
[Link]("Decoded Whynter ");
}
[Link](results->value, HEX);
[Link](" (HEX) , ");
[Link](results->value, BIN);
[Link](" (BIN)");
}
void loop() {
if ([Link](&results)) {
dump(&results);
[Link](); // empezamos una nueva recepcin
}
delay(300);
}
8 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
El cdigo anterior enva por el puerto serial los datos correspondientes
a la tecla presionada.
A continuacin se muestra los datos recibidos al presionar las teclas
del control remoto que viene con el kit del sensor.
Y si utilizamos el control remoto de SONY les debe mostrar valores
similares al de la siguiente imagen:
Con este programa podemos averiguar el valor del dato
correspondiente a la tecla presionada, el mismo programa funciona
para otras marcas de control remoto.
Ahora que ya sabemos el valor del dato que corresponde a cada
tecla, vamos a asociar una tecla a un pin digital y prender o pagar
leds, que se podran remplazar por cualquier otro actuador.
Para este ejemplo vamos a hacer las siguientes conexiones:
9 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
Implementemos el siguiente sketch:
#include "IRremote.h"
int receiver = 11;
IRrecv irrecv(receiver);
decode_results results;
void setup()
{
[Link](9600);
[Link]();
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
if ([Link](&results))
{
switch([Link])
10 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
{
case 0x00FF629D: [Link]("Tecla: Arriba");
break;
case 0x00FF22DD: [Link]("Tecla: Izquierda");
break;
case 0x00FF02FD: [Link]("Tecla: OK");
break;
case 0x00FFC23D: [Link]("Tecla: Derecha");
case
case
case
case
case
case
break;
0x00FFA857: [Link]("Tecla: Abajo");
break;
0x00FF6897: [Link]("Tecla: 1");
break;
0x00FF9867: [Link]("Tecla: 2");
break;
0x0FFB04F: [Link]("Tecla: 3");
break;
0x00FF30CF: [Link]("Tecla: 4");
digitalWrite(4, !digitalRead(4));
break;
0x00FF18E7: [Link]("Tecla: 5");
digitalWrite(5, !digitalRead(5));
break;
case 0x00FF7A85: [Link]("Tecla: 6");
digitalWrite(6, !digitalRead(6));
break;
case 0x00FF10EF: [Link]("Tecla: 7");
digitalWrite(7, !digitalRead(7));
case 0x00FF38C7:
case 0x00FF5AA5:
case 0x00FF42BD:
case 0x00FF4AB5:
case 0x00FF52AD:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
8");
9");
*");
0");
#");
}
[Link]();
}
delay(300);
}
11 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
Como se observa en el cdigo solo comparamos el dato recibido del
mando con los valores correspondientes a las teclas, si coinciden con
el valor de la tecla, se realiza la accin correspondiente en el switch(),
solo implementamos las teclas del 4 al 7 con leds, pero enviamos por
el puerto serial una confirmacin de cada tecla presionada.
A continuacin se muestra el monitor serial despus de presionar
algunas teclas
De igual manera se trabaja con el control remoto de SONY:
#include "IRremote.h"
int receiver = 11;
IRrecv irrecv(receiver);
decode_results results;
void setup()
{
[Link](9600);
[Link]();
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
if ([Link](&results))
{
switch([Link])
{
case 0xA90: [Link]("Tecla: Power");
12 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
case
case
case
case
case
case
case
case
case
case
[Link]
break;
0x070: [Link]("Tecla: Menu");
break;
0x2F0: [Link]("Tecla: Arriba");
break;
0x2D0: [Link]("Tecla: Izquierda");
break;
0xCD0: [Link]("Tecla: Derecha");
break;
0xAF0: [Link]("Tecla: Abajo");
break;
0x010: [Link]("Tecla: 1");
break;
0x810 : [Link]("Tecla: 2");
break;
0x410: [Link]("Tecla: 3");
break;
0xC10: [Link]("Tecla: 4");
digitalWrite(4, !digitalRead(4));
break;
0x210: [Link]("Tecla: 5");
digitalWrite(5, !digitalRead(5));
break;
case 0xA10: [Link]("Tecla: 6");
digitalWrite(6, !digitalRead(6));
break;
case 0x610: [Link]("Tecla: 7");
digitalWrite(7, !digitalRead(7));
case 0xE10:
case 0x110:
case 0x910:
case 0x490:
case 0xC90:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
[Link]("Tecla:
break;
8");
9");
0");
Vol+");
Vol-");
}
[Link]();
}
delay(300);
}
13 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
Tags:
14
14 de 16
Compartir
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
Arturo
ago 25, 2016
Disculpa amigo muy buen post pero una pregunta como
puedo colocar 4 receptores infrarrojos al mismo arduino
necesiti hacer una aplicacin a si te agradecera me
podras orientar gracias.
Naylamp
ago 26, 2016
Hola Arturo, no veo la necesidad de poner
ms receptores al mismo arduino si todos van
a recibir la misma seal, salvo intentes ponerlo
en diferentes posiciones para ganar ms
ngulo de recepcin. Intenta crear diferentes
objetos para cada receptor, por ejemplo para
un segundo receptor: IRrecv irrecv2(10);
decode_results results2;
* Name:
* E-mail:
(Not
Published)
Website:
(Site url
with[Link]
* Comment:
Submit
15 de 16
03/10/2016 18:43
Tutorial Arduino y control remoto Infrarrojo
[Link]
Introduzca su direccin de correo electrnico
Naylamp Mechatronics,
Trujillo Per
Llmanos ahora:
997646858
Email:
16 de 16
03/10/2016 18:43