Está en la página 1de 12

16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

LUIS LLAMAS
INGENIERA, INFORMTICA Y DISEO

TUTORIALES ARDUINO

CONTROLAR ARDUINO CON UN


MANDO A DISTANCIA INFRARROJO
6 OCTUBRE, 2016 SHARE ON:

QU ES UN MANDO A DISTANCIA INFRARROJO?


Un mando a distancia es un dispositivo de control que emplea un LED infrarrojo para enviar una
seal al receptor. La seal puede ser detectada para controlar un autmata o procesador como Arduino.

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 1/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

Todos estamos acostumbrado a emplear mandos a distancia infrarrojos, para la televisin, Dvd,
equipos de msica De hecho, es posible emular cualquiera de estos mandos, lo que permite controlar
estos dispositivos desde Arduino.

Un mando a distancia emplea un emisor de luz en el infrarrojo cercano, invisible para el ojo humano,
pero que puede ser captado con facilidad por un receptor infrarrojo.

Es posible ver la luz del mando mirando el LED infrarrojo con una cmara digital, por ejemplo de un
mvil. La luz del led de muestra como un resplandor morado. Esto puede ser til para detectar si el
mando funciona correctamente.

Al emplear luz como medio de transmisin, los mandos a distancia necesitan una lnea de visin
directa con el receptor. El haz puede ser re ejado por supercies re ectantes, como espejos.

El alcance es limitado, tpicamente inferior a 3m. La distancia depende fuertemente del ngulo de
emisin, disminuyendo rpidamente a medida que nos desviamos de la direccin frontal.

Podemos emplear un mando a distancia como control remoto para controlar Arduino. Podemos, por
ejemplo, encender o apagar un sistema de luces o sonido, encender o apagar un dispositivo por rel, o
controlar un robot o un vehculo.

Por otro lado, tambin es posible emplear Arduino para clonar un mando a distancia y, por ejemplo,
controlar el encendido de la televisin a travs de un smartphone, temporizar el encendido de un equipo
de msica, o encender el aire acondicionado a travs de internet.

PRECIO
En el campo de los hobbies y la electrnica casera podemos encontrar kits especialmente diseados
para Arduino, que incluyen mando y receptor HX1838 o similar, instalado en un mdulo para conectar
fcilmente a Arduino.

Podemos encontrar este tipo de kits por 0.75, buscando en vendedores internacionales en eBay o
AliExpress.

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 2/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

Si nicamente queremos el receptor, por ejemplo, porque queremos controlar ms de un dispositivo


o porque queremos emplear el mando de algn aparato (TV, dvd, etc), podemos adquirir nicamente el
receptor HX1838 por unos 0.10.

CMO FUNCIONA UN MANDO A DISTANCIA


INFRARROJO?
Un mando a distancia transmita un cierto mensaje al receptor empleando luz infrarroja como sistema
de transmisin. La luz empleada tpicamente est en el rango de 940 nm.

Como en cualquier transmisin el mensaje tiene que seguir unas determinadas normas (forma de los
pulsos, duracin, contenido) que deben ser conocidas tanto por el emisor como por el receptor para
que la comunicacin sea correcta.

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 3/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

Sin embargo, no existe un nico protocolo adoptado como estndar. En su lugar cada fabricante ha
desarrollado los suyos propios. As, tenemos el RC-5 y RC-6 de Philips, el SIRC de Sony, el protocolo NEC
desarrollado por la compaa japonesa Nippon Electronic Company, entre muchos otros.

Por otro lado, el mensaje nunca se enva directamente como un pulso, si no que se enva modulada
sobre una onda portadora. Esto se hace para mejorar el rechazo al ruido y a la luz ambiental la seal de
control se enva modulada en una onda portadora. La frecuencia de la onda portadora depende de
protocolo empleado pero, en general, vara entre 36-50 kHz, siendo el ms habitual en torno a los 38 kHz.

Uno de los protocolos ms habituales, que es el que emplearemos con Arduino, es el protocolo NEC,
que emplea una onda portadora de 38 kHz y modulacin por distancia de pulsos (PDM Pulse Distance
Modulation).

La onda portadora tiene un periodo de 26s, y la seal transmitida distingue entre 0 y 1 por la
duracin de los pulsos, siendo.

Logical 0 Un pulso de 562.5s seguido por un espacio de 562.5s.


Logical 1 Un pulso de 562.5s seguido por un espacio de 1.675s.

En cuanto al contenido del mensaje enviado, el protocolo NEC enva una direccin 8 bits y un
comando de 8 bits. Esto signica que pueden controlarse hasta 256 dispositivos sin interferir entre ellos, y
enviar hasta 256 comandos diferentes.

Una particularidad del protocolo NEC es que se enva cada bloque dos veces, una normal y una
negada, como sistemas de prevencin de errores. La transmisin comienza con una seal de 9ms,
seguido de un espacio de 4.5ms.

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 4/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

Por tanto, la seal completa es a seal completa

Pulso 9ms + espacio 4.5ms


8 bits, direccin del receptor
8 bits, direccin del receptor invertida
8 bits, comando enviado
8 bits, comando enviado invertido

Finalmente recibir la seal de control se emplean receptores especcos como el AX-1838HS


(HX1838). Estos receptores son dispositivos normalmente de tres de terminales, que consisten en un
sensor infrarrojo que incluyen un demodulador en la banda de 36-38kHz, un ltro PCM (Pulse Code
Modulation) y preamplicacin rechazo de luz ambiental.

De esta forma, la salida que llega a Arduino es la seal digital ya demodulada, lo que simplica
enormemente el proceso respecto a tener que emplear un fotodiodo y realizar los clculos nosotros.

ESQUEMA DE MONTAJE

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 5/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

Si usamos un mdulo con el receptor integrado la conexin es sencilla. Alimentamos el mdulo


conectando Vcc y Gnd, respectivamente, a 5V y Vcc de Arduino.

Por otro lado, conectamos la salida del mdulo Sig a una entrada digital cualquiera de Arduino. En el
ejemplo usaremos la D9, pero podis usar cualquier entrada digital.

Por tanto, la conexin queda como en el siguiente esquema,

Que vista desde el lado de Arduino resulta,

Si queris usar el receptor directamente, deberis consultar el datasheet del mismo para vericar su
esquema de montaje. En el caso del AX-1838HS (HX1838) es el siguiente, donde, al menos, la resistencia
de 100 es obligatoria y el resto opcionales (los mdulos comerciales slo incorporan la resistencia de
100).

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 6/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

EJEMPLOS DE CDIGO
Existen mltiples libreras para emplear mandos a distancia con Arduino. Nosotros usaremos la
librera Arduino-IRremote desarrollada por Ra Khan (z3t0) disponible en este enlace.

El siguiente cdigo realiza la lectura del valor recibido por el mando, y lo muestra por pantalla. El
cdigo se muestra en formato hexadecimal.

1 #include<IRremote.h>
2
3 constintRECV_PIN=9;
4
5 IRrecvirrecv(RECV_PIN);
6 decode_resultsresults;
7
8 voidsetup()
9 {
10 Serial.begin(9600);
11 irrecv.enableIRIn();
12 }
13
14 voidloop()
15 {
16 if(irrecv.decode(&results))
17 {
18 Serial.println(results.value,HEX);
19 irrecv.resume();
20 }
21 }

El siguiente ejemplo emplea el comando hexadecimal para imprimir por puerto de serie la tecla
pulsada. La tecla depender del mando que estemos usando, pero sirve como ejemplo de como actuar en
caso de recibir diferentes cdigos.

1 #include<IRremote.h>
2
3 constintKEY_UP=0xFF629D;
4 constintKEY_LEFT=0xFF22DD;
5 constintKEY_OK=0xFF02FD;
6 constintKEY_RIGHT=0xFFC23D;

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 7/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

7 constintKEY_DOWN=0xFFA857;
8 constintKEY_1=0xFF6897;
9 constintKEY_2=0xFF9867;
10 constintKEY_3=0xFFB04F;
11 constintKEY_4=0xFF30CF;
12 constintKEY_5=0xFF18E7;
13 constintKEY_6=0xFF7A85;
14 constintKEY_7=0xFF10EF;
15 constintKEY_8=0xFF38C7;
16 constintKEY_9=0xFF5AA5;
17 constintKEY_0=0xFF4AB5;
18 constintKEY_ASTERISK=0xFF42BD;
19 constintKEY_POUND=0xFF52AD;
20 constintKEY_REPEAT=0xFFFFFFFF;
21
22 constintRECV_PIN=9;
23
24 IRrecvirrecv(RECV_PIN);
25 decode_resultsresults;
26
27 voidsetup()
28 {
29 Serial.begin(9600);
30 irrecv.enableIRIn();
31 }
32
33 voidloop()
34 {
35 if(irrecv.decode(&results))
36 {
37 switch(results.value)
38 {
39 caseKEY_UP:
40 Serial.println("KEY_UP");
41 break;
42 caseKEY_LEFT:
43 Serial.println("KEY_LEFT");
44 break;
45 caseKEY_OK:
46 Serial.println("KEY_OK");
47 break;
48 caseKEY_RIGHT:
49 Serial.println("KEY_RIGHT");
50 break;
51 caseKEY_DOWN:
52 Serial.println("KEY_DOWN");
53 break;
54 caseKEY_1:
55 Serial.println("KEY_1");
56 break;
57 caseKEY_2:
58 Serial.println("KEY_2");
59 break;
60 caseKEY_3:
61 Serial.println("KEY_3");
62 break;
63 caseKEY_4:
64 Serial.println("KEY_4");
65 break;
66 caseKEY_5:
67 Serial.println("KEY_5");
68 break;
69 caseKEY_6:
70 Serial.println("KEY_6");

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 8/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

71 break;
72 caseKEY_7:
73 Serial.println("KEY_7");
74 break;
75 caseKEY_8:
76 Serial.println("KEY_8");
77 break;
78 caseKEY_9:
79 Serial.println("KEY_9");
80 break;
81 caseKEY_0:
82 Serial.println("KEY_0");
83 break;
84 caseKEY_ASTERISK:
85 Serial.println("KEY_ASTERISK");
86 break;
87 caseKEY_POUND:
88 Serial.println("KEY_POUND");
89 break;
90 caseKEY_REPEAT:
91 Serial.println("KEY_REPEAT");
92 break;
93 }
94 irrecv.resume();
95 }
96 }

Si te ha gustado esta entrada y quieres leer ms sobre Arduino puedes consultar la seccin tutoriales
de Arduino

TAGS:
ARDUINO ARDUINO INTERMEDIO CONTROLES

PREVIOUS POST NEXT POST

USAR UN TECLADO MATRICIAL CON CONTROLAR ARDUINO CON EL MANDO


ARDUINO NUNCHUK DE LA WII (WIICHUCK)

RELATED POSTS
DETECTOR DE CRUCE POR CERO CON ARDUINO Y OPTOACOPLADOR H11AA1

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 9/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

SALIDAS Y ENTRADAS AISLADAS CON ARDUINO Y OPTOACOPLADOR

MEDIR TENSIONES DE 220V-230V CON ARDUINO Y TRANSFORMADOR

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 10/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

3Comentarios LuisLlamas
1 Acceder

Recomendar Compartir Ordenarporlosmsnuevos

netealaconversacin...

Osquihace3meses
Hola.
Impresionanteblog,deverdad.Esdecalidadsuperior!
Solotengounapreguntamuysimplerespectoestepost...:hayalgnmotivoconcretoporelquehas
elegidolalibreraz3t0envezdeotras?
Muchasgracias!
Responder Compartir

luisllamas Moderador >Osqui hace3meses

Bueno,dentrodequehayvariasquepuedenconsiderarseun"empate"entreellas,amime
gustaestaporqueporunlado,paralosejemplossencillosesmuysencillapero,alavez,
incorporabastantesprotocolosademsdelNEC.

Estepermite,ademsdeemplearestosmandostipo"kit"quesevenden,podercopiar,recibir,
yemularmandosadistanciadeaparatos,algosobreloquequierohacerunaentradaenel
futuro.

Estomeparecemuchomstil,porejemplo,queusarunmandoadistanciatipoKitpara
controlarunrobot,comofrecuentementesemuestraeninternet,porqueparaesohaymandos
muchomejores(comounsmartphoneconandroid,unmandodelaps2,etc)
Sinembargolaposibilidadde,porejemplo,controlarelaireacondicionadodesdeInternetes
muchomsinteresante.
Responder Compartir

Osqui>luisllamashace3meses
Muchasgracias!!
Responder Compartir

Suscrbete d AadeDisqusatusitiowebAadeDisqusAadir Privacidad

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 11/12
16/1/2017 ControlarArduinoconunmandoadistanciainfrarrojo

Search

SIGUENOS EN

TWITTER G+ LINKEDIN RSS

SIGUE LEYENDO EN

TUTORIALES ARDUINO

DETECTOR DE CRUCE POR CERO CON ARDUINO Y OPTOACOPLADOR H11AA1

SALIDAS Y ENTRADAS AISLADAS CON ARDUINO Y OPTOACOPLADOR

MEDIR TENSIONES DE 220V-230V CON ARDUINO Y TRANSFORMADOR

MEDIR VOLTAJES DE HASTA 25V CON ARDUINO Y FZ0430

EJERCER GRANDES FUERZAS CON ACTUADOR LINEAL Y ARDUINO

http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/ 12/12

También podría gustarte