Controlar Arduino Con Un Mando a Distancia Infrarrojo
Short Description
Descripción: 9O...
Description
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
LUIS LLAMAS INGENIERÍA, INFORMÁTICA Y DISEÑO
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 señal al receptor. La señal puede ser detectada para controlar un autómata o procesador como Arduino.
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
1/12
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
Todos estamos acostumbrado a emplear mandos a distancia infrarrojos, para la televisión, Dvd, equipos de música… 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 cámara digital, por ejemplo de un móvil. 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 transmisión, los mandos a distancia necesitan una línea de visión directa con el receptor. El haz puede ser re ejado por superᑹ�cies re ectantes, como espejos. El alcance es limitado, típicamente inferior a 3m. La distancia depende fuertemente del ángulo de emisión, disminuyendo rápidamente a medida que nos desviamos de la dirección 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 vehículo. Por otro lado, también es posible emplear Arduino para clonar un mando a distancia y, por ejemplo, controlar el encendido de la televisión a través de un smartphone, temporizar el encendido de un equipo de música, o encender el aire acondicionado a través de internet.
PRECIO En el campo de los hobbies y la electrónica casera podemos encontrar kits especialmente diseñados para Arduino, que incluyen mando y receptor HX1838 o similar, instalado en un módulo para conectar fácilmente 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
Controlar Arduino con un mando a distancia infrarrojo
Si únicamente queremos el receptor, por ejemplo, porque queremos controlar más de un dispositivo o porque queremos emplear el mando de algún aparato (TV, dvd, etc), podemos adquirir únicamente el receptor HX1838 por unos 0.10€.
¿CÓMO FUNCIONA UN MANDO A DISTANCIA INFRARROJO? Un mando a distancia transmita un cierto mensaje al receptor empleando luz infrarroja como sistema de transmisión. La luz empleada típicamente está en el rango de 940 nm. Como en cualquier transmisión el mensaje tiene que seguir unas determinadas normas (forma de los pulsos, duración, contenido…) que deben ser conocidas tanto por el emisor como por el receptor para que la comunicación sea correcta.
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
3/12
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
Sin embargo, no existe un único protocolo adoptado como estándar. 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 compañía japonesa Nippon Electronic Company, entre muchos otros. Por otro lado, el mensaje nunca se envía directamente como un pulso, si no que se envía modulada sobre una onda portadora. Esto se hace para mejorar el rechazo al ruido y a la luz ambiental la señal de control se envía modulada en una onda portadora. La frecuencia de la onda portadora depende de protocolo empleado pero, en general, varía entre 36-50 kHz, siendo el más habitual en torno a los 38 kHz. Uno de los protocolos más habituales, que es el que emplearemos con Arduino, es el protocolo NEC, que emplea una onda portadora de 38 kHz y modulación por distancia de pulsos (PDM Pulse Distance Modulation). La onda portadora tiene un periodo de 26µs, y la señal transmitida distingue entre 0 y 1 por la duración de los pulsos, siendo. Logical 0 – Un pulso de 562.5µs seguido por un espacio de 562.5µs. Logical 1 – Un pulso de 562.5µs seguido por un espacio de 1.675µs.
En cuanto al contenido del mensaje enviado, el protocolo NEC envía una dirección 8 bits y un comando de 8 bits. Esto signiᑹ�ca que pueden controlarse hasta 256 dispositivos sin interferir entre ellos, y enviar hasta 256 comandos diferentes. Una particularidad del protocolo NEC es que se envía cada bloque dos veces, una normal y una negada, como sistemas de prevención de errores. La transmisión comienza con una señal de 9ms, seguido de un espacio de 4.5ms.
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
4/12
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
Por tanto, la señal completa es a señal completa Pulso 9ms + espacio 4.5ms 8 bits, dirección del receptor 8 bits, dirección del receptor invertida 8 bits, comando enviado 8 bits, comando enviado invertido
Finalmente recibir la señal de control se emplean receptores especíᑹ�cos 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 preampliᑹ�cación rechazo de luz ambiental.
De esta forma, la salida que llega a Arduino es la señal digital ya demodulada, lo que simpliᑹ�ca enormemente el proceso respecto a tener que emplear un fotodiodo y realizar los cálculos nosotros.
ESQUEMA DE MONTAJE http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
5/12
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
Si usamos un módulo con el receptor integrado la conexión es sencilla. Alimentamos el módulo conectando Vcc y Gnd, respectivamente, a 5V y Vcc de Arduino. Por otro lado, conectamos la salida del módulo Sig a una entrada digital cualquiera de Arduino. En el ejemplo usaremos la D9, pero podéis usar cualquier entrada digital. Por tanto, la conexión queda como en el siguiente esquema,
Que vista desde el lado de Arduino resulta,
Si queréis usar el receptor directamente, deberéis consultar el datasheet del mismo para veriᑹ�car 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 módulos comerciales sólo incorporan la resistencia de 100Ω).
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
6/12
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
EJEMPLOS DE CÓDIGO Existen múltiples librerías para emplear mandos a distancia con Arduino. Nosotros usaremos la librería Arduino-IRremote desarrollada por Raᑹ� Khan (z3t0) disponible en este enlace. El siguiente código realiza la lectura del valor recibido por el mando, y lo muestra por pantalla. El código se muestra en formato hexadecimal. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include const int RECV_PIN = 9; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); } }
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 códigos. 1 2 3 4 5 6
#include const int KEY_UP = 0xFF629D; const int KEY_LEFT = 0xFF22DD; const int KEY_OK = 0xFF02FD; const int KEY_RIGHT = 0xFFC23D;
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
7/12
16/1/2017
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
Controlar Arduino con un mando a distancia infrarrojo
const int KEY_DOWN = 0xFFA857; const int KEY_1 = 0xFF6897; const int KEY_2 = 0xFF9867; const int KEY_3 = 0xFFB04F; const int KEY_4 = 0xFF30CF; const int KEY_5 = 0xFF18E7; const int KEY_6 = 0xFF7A85; const int KEY_7 = 0xFF10EF; const int KEY_8 = 0xFF38C7; const int KEY_9 = 0xFF5AA5; const int KEY_0 = 0xFF4AB5; const int KEY_ASTERISK = 0xFF42BD; const int KEY_POUND = 0xFF52AD; const int KEY_REPEAT = 0xFFFFFFFF; const int RECV_PIN = 9; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { switch (results.value) { case KEY_UP: Serial.println("KEY_UP"); break; case KEY_LEFT: Serial.println("KEY_LEFT"); break; case KEY_OK: Serial.println("KEY_OK"); break; case KEY_RIGHT: Serial.println("KEY_RIGHT"); break; case KEY_DOWN: Serial.println("KEY_DOWN"); break; case KEY_1: Serial.println("KEY_1"); break; case KEY_2: Serial.println("KEY_2"); break; case KEY_3: Serial.println("KEY_3"); break; case KEY_4: Serial.println("KEY_4"); break; case KEY_5: Serial.println("KEY_5"); break; case KEY_6: Serial.println("KEY_6");
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
8/12
16/1/2017
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
Controlar Arduino con un mando a distancia infrarrojo
break; case KEY_7: Serial.println("KEY_7"); break; case KEY_8: Serial.println("KEY_8"); break; case KEY_9: Serial.println("KEY_9"); break; case KEY_0: Serial.println("KEY_0"); break; case KEY_ASTERISK: Serial.println("KEY_ASTERISK"); break; case KEY_POUND: Serial.println("KEY_POUND"); break; case KEY_REPEAT: Serial.println("KEY_REPEAT"); break; } irrecv.resume(); } }
Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección tutoriales de Arduino
TAGS: ARDUINO
ARDUINO INTERMEDIO
CONTROLES
PREVIOUS POST
USAR UN TECLADO MATRICIAL CON ARDUINO
NEXT POST
CONTROLAR ARDUINO CON EL MANDO 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
Controlar Arduino con un mando a distancia infrarrojo
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
Controlar Arduino con un mando a distancia infrarrojo
3 Comentarios Recomendar
1
Luis Llamas
⤤ Compartir
Acceder
Ordenar por los más nuevos
Únete a la conversación... Osqui • hace 3 meses
Hola. Impresionante blog, de verdad. ¡Es de calidad superior! Solo tengo una pregunta muy simple respecto este post...: ¿hay algún motivo concreto por el que has elegido la librería z3t0 en vez de otras? Muchas gracias!
△ ▽ • Responder • Compartir › luisllamas
Moderador > Osqui • hace 3 meses
Bueno, dentro de que hay varias que pueden considerarse un "empate" entre ellas, a mi me gusta esta porque por un lado, para los ejemplos sencillos es muy sencilla pero, a la vez, incorpora bastantes protocolos además del NEC. Este permite, además de emplear estos mandos tipo "kit" que se venden, poder copiar, recibir, y emular mandos a distancia de aparatos, algo sobre lo que quiero hacer una entrada en el futuro. Esto me parece mucho más útil, por ejemplo, que usar un mando a distancia tipo Kit para controlar un robot, como frecuentemente se muestra en internet, porque para eso hay mandos mucho mejores (como un smartphone con android, un mando de la ps2, etc) Sin embargo la posibilidad de, por ejemplo, controlar el aire acondicionado desde Internet es mucho más interesante.
△ ▽ • Responder • Compartir › Osqui > luisllamas • hace 3 meses
Muchas gracias!!
△ ▽ • Responder • Compartir › ✉ Suscríbete d Añade Disqus a tu sitio web Añade Disqus Añadir
http://www.luisllamas.es/2016/10/arduinomandoadistanciainfrarrojo/
🔒 Privacidad
11/12
16/1/2017
Controlar Arduino con un mando a distancia infrarrojo
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
View more...
Comments