Controlar Arduino con control remoto infrarrojo

En este proyecto, aprenderemos cómo controlar nuestros proyectos de Arduino usando un mando y receptor infrarrojos


En muchos controles remotos hay un LED infrarrojo que sirve para enviar un rayo de luz (señal) a un dispositivo receptor, ya sea un TV, un DVD, un equipo de sonido, etc. Esta señal es invisible al ojo humano, puesto que su longitud de onda se encuentra en el rango del infrarrojo. El espectro electromagnético distribuye todas las ondas electromagnéticas de acuerdo a su energía (longitud de onda y frecuencia), la luz que podemos observar en nuestro diario vivir es sólo una pequeña fracción de ese espectro, como lo vemos en la siguiente gráfica:


La señal enviada por el control remoto corresponde a un tren de pulsos infrarrojos cada vez que se presiona una tecla. Los pulsos forman un patrón que es único para cada tecla del control, así el dispositivo receptor reconoce dicho patrón y responde a él. Sin embargo, estos trenes de pulsos se envían de forma modulada a través de una onda portadora con el fin de evitar ruido e interferencias. Aquí es donde nacen los protocolos, varios fabricantes han optado por desarrollar el suyo, como Sony, Philips, NEC, Sharp, etc.

En el mercado encontramos receptores infrarrojos como lo es el KY-022, que además de ser un receptor compatible con muchos fabricantes, nos demodula y amplifica la señal recibida, ahorrándonos así un gran trabajo. La conexión con el Arduino es sencilla, el - va al GND del Arduino, VCC se conecta a 5V y el pin de señal (S) se conecta a algún pin digital.


Materiales
  • Receptor infrarrojo KY-022
  • Control remoto infrarrojo
  • 10 LEDs de cualquier color
  • 10 resistencias de 220 ohms
  • 1 servomotor
  • Protoboard
  • Cables
  • Tarjeta Arduino
Para poder programar el receptor, vamos a necesitar una librería que se puede descargar en este enlace. Al descargarla, extraemos el archivo .zip y la carpeta resultante la guardamos en la carpeta "libraries", la cual se encuentra en el directorio donde está instalado el programa de Arduino.

Nuestro primer ejemplo consiste en probar el receptor y el control. Para esto, realizamos un código que lea la señal recibida y la muestre en forma hexadecimal en el monitor serie. Sólo se necesita conectar el receptor al Arduino para realizar la prueba


El código para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1R0AQWEc0kR6R0p6KHi0cTstczjJSx3N6

Al observar los datos captados por el receptor, vemos que cada tecla posee un código propio, los cuales vemos a continuación:

Tecla
1
2
3
4
5
6
7
8
9
Código
 FF6897 
 FF9867 
 FFB04F 
 FF30CF 
 FF18E7 
 FF7A85 
 FF10EF 
 FF38C7 
 FF5AA5 

Tecla
OK
Arriba
Abajo
 Izquierda 
 Derecha 
*
0
#
Código
 FF02FD 
 FF629D 
 FFA857 
FF22DD
FFC23D
 FF42BD 
 FF4AB5 
 FF52AD 

Con estos datos, ya estamos listos para realizar nuestro segundo ejemplo, el cual consiste en controlar 10 LEDs de acuerdo a la señal que llegue al receptor y posteriormente al Arduino. Esto se realizará teniendo en cuenta los códigos propios de cada tecla del control. El programa analiza la señal recibida y por medio de un switch-case decide qué acción realizar. El esquemático es el siguiente:


El funcionamiento se ve así:


El código para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1vXSiWPpHeC3xLxfFEw2atUYwBiiAZuME

Nuestro tercer ejemplo consiste en controlar el movimiento de un servo por medio del control remoto. Resulta que si mantenemos presionada cualquier tecla del control, la señal que se recibe corresponde a 0xFFFFFFFF como lo vimos en el monitor serie, pero justo antes, llega la señal correspondiente a la tecla que se está presionando. Entonces, si queremos saber a qué tecla pertenece la señal 0xFFFFFFFF, debemos mirar la señal inmediatamente anterior recibida. Esto sirve para que se pueda mantener presionada una tecla y hacer girar el servo constantemente hacia la posición deseada.

En este ejemplo, también utilizamos un switch-case para que el programa decida qué acción realizar de acuerdo a la señal recibida. El esquema correspondiente a este ejemplo es el siguiente:


El funcionamiento se ve así: 


El código para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1QNevoiLEUkAeoJMPgUCTj6l0w5XYXnjd

Ahora surge la pregunta: ¿Es posible realizar todo lo anterior con un control remoto de los que tenemos en casa, como el de un TV? La respuesta es sí. En este tutorial realizamos los mismos ejemplos que aquí se hicieron pero modificados para que funcionen con un control de TV. Recomiendo echarle un vistazo

Comentarios

  1. Hola muy buena en realidad me sirvió arto...
    Pero quisiera encender un led cuando mantenga presionado un botón del control... X favor le estaré muy agradecido

    ResponderBorrar
  2. Hola, tiene unos proyectos muy buenos, pero el problema, es que con algunos mandos no funciona, por ello, podría publicar también el código para saberlo.
    Muchas gracias
    Infinito python

    infinitopython.blogspot.com

    ResponderBorrar
  3. no me vale abrir el codigo puedes ayudarme

    ResponderBorrar

Publicar un comentario