Introducción

El protocolo consiste en un tren de pulsos cuadrados de 36Khz (la denominada "portadora"). Cada "1" esta codificado como 889 microsegundos de pulsos, y 889 microsegundos de "silencio". El "0" se codifica como 889 microsegundos de "silencio" y 889 microsegundos de pulsos. La longitud total del "0" y del "1" es idéntica, y son 1778 microsegundos (o 1,778 milisegundos). El grafico siguiente ilustra claramente esto:

 

Dentro de un bit "caben" exactamente 64 pulsos, si la portadora es de 36KHz. Es decir, el periodo de una señal de 36KHz es de 1/36.000 = 27.78125... us, que multiplicado por 64 da exactamente 1778 us. Este es un buen dato para tener en cuenta el diseño del software de nuestro receptor.


Para que el receptor sepa que le está "diciendo" el emisor remoto, debe poder interpretar las "tramas" de ceros y unos que este le envía. Cada trama es un comando, y esta compuesto por 14 bits (15 en el caso del RC5X). De esos 14 bits, los primeros 2 bits son de "start" (arranque): siempre son "1". El tercer bit se invierte cada vez que una tecla se pulsa y se suelta nuevamente, para poder distinguir si una tecla permanece presionada o se ha presionado mas de una vez. Los siguientes 5 bits corresponden a la dirección del dispositivo receptor, y los últimos 6 al comando trasmitido. Esto permite utilizar un mismo control remoto para comandar diferentes equipos, simplemente asignando a cada uno un código de dirección diferente.

 


 Trama RC5 Completa

 

Hay una variación del código RC5 llamada RC5X que dispone de 7 bits para determinar el comando (lo que permite 128 comandos diferentes vs. los 64 comandos del RC5 tradicional). La forma de la trama es la misma, pero el segundo bit de start (S2) es utilizado como el bit 7 del comando.

 

Tanto en la dirección como en el comando, primero se transmite el bit mas significativo (MSB) y por ultimo el menos significativo (LSB)


La longitud completa de la trama es igual a 14 * 1.778 us = 24.892 us. Si la tecla se mantiene presionada, la trama se reenvía continuamente, pero con una pausa de equivalente a 50 bits ( 50 x 1.778 us = 88.900us) entre una y otra transmisión. Como dijimos antes, viendo el estado del tercer bit podemos determinar si se trata de pulsaciones sucesivas de la misma tecla (el bit cambiaria) o de una misma pulsación "larga" (el bit permanece en el mismo estado)

 


   Diagramas de tiempo para una transición completa.

Hardware

El circuito total está formado por una placa Arduino Duemilanove, un receptor infrarrojo de 36KHz, 2 resistencias, un condensador y un diodo led para ver que llega correctamente el tren de pulsos del mando a distancia. Para ello he descompuesto el esquema en 2 partes, una el receptor como tal (El traductor de señales infrarrojas a señales eléctricas) y el esquema para conectarlo al arduino. Por tanto tenemos que dichos esquemas son:

Esquema del receptor

 

Conexión al Arduino

 

Ahora, les muestro unas fotos del módulo de infrarrojos ya pasado a la placa PCB, tanto por delante y por detrás y una foto del sistema completo.

 

Foto del receptor visto desde arriba.

 

Foto del receptor visto desde abajo.

 

Foto del sistema completo.

 

Imagen del mando a distancia Philips AV5657.

 

Foto del sistema completo junto con el mando a distancia.

Comandos predefinidos

Si estamos creando nuestro propio control remoto, podemos adoptar cualquier dirección y comando para las funciones que implementemos. Pero lo más posible es que queramos utilizar un control remoto de algún aparato en desuso o incluso un control remoto "genérico" nuevo, que seguramente nos costara menos que armarnos uno. En ese caso, deberíamos consultar las siguientes tablas para saber cuales son los comandos pre-definidos por Philips:

Tabla de direcciones.

 

Tabla de Teclas.

Firmware

El firmware para el microcontrolador está implementado en C y por el Pin 12 del arduino leemos la trama de pulsos que decodificaremos posteriormente para obtener la dirección del dispositivo y la tecla pulsada y en función de estos parámetros ejercer nuestro control sobre nuestros proyectos de electrónica.

Captura de pantalla del sistema funcionando.