En este proyecto, aprenderemos cómo controlar nuestros proyectos de Arduino usando un mando y receptor infrarrojos
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.
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
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:
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
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:
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
Hola muy buena en realidad me sirvió arto...
ResponderBorrarPero quisiera encender un led cuando mantenga presionado un botón del control... X favor le estaré muy agradecido
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.
ResponderBorrarMuchas gracias
Infinito python
infinitopython.blogspot.com
no me vale abrir el codigo puedes ayudarme
ResponderBorrar