¡Buenas de nuevo! Después de otro tiempo de inactividad volvemos a la carga con un tutorial para novatos que hará las delicias de muchos.
Hace apenas un mes recibí un correo de un seguidor del blog que me pedía si podía hacer un tutorial sobre control por IR (
infrared). Como me pareció una propuesta interesante pedí el componente necesario para hacerlo, que es tan sencillo y simple como un
TSOP 4838.
Para los que no sean entendidos en el tema, que me incluyo, el TSOP 4838 es un receptor de infrarrojo que funciona de 2,5 a 5,5v según su datasheet, aunque nosotros lo vamos a hacer funcionar a los 3,3v que nos dan de salida los pines de GPIO de la Raspberry Pi. No os preocupéis porque funciona de maravilla.
|
Imagen ampliada de un TSOP 4838 |
El precio es de risa, y es que podemos adquirirlo en
Farnell / element14 por menos de 1€. Os dejo con el enlace para los que queráis comprarlo:
|
Comprar TSOP 4838 en la web de Farnell España |
Las ventajas son muchas si trabajamos con una distribución como
Raspbmc, ya que nos va a permitir controlar XBMC con cualquier mando que tengamos en casa, sin necesidad de vernos limitados a la función
CEC que implemente nuestra TV con el mando (contando que contemos con una TV con dicha característica, claro). Sin ir más lejos yo he reaprovechado un mando multimedia que tenía abandonado de mi Xbox y le he dado un nuevo uso.
Lo primero que vamos a hacer es preparar el receptor. Para ello he utilizado lo siguiente:
- Receptor IR TSOP 4838
- Tubo (macarrón) termoretráctil para evitar hacer soldaduras o dejarlas al aire
- Tres cables del panel frontal (FPANEL) de un PC viejo, para no soldar a los pines GPIO
Lo que he hecho ha sido pelar los extremos de los cables del panel frontal, si mal no recuerdo el del reset y el del power, aunque da lo mismo los que uséis ya que el objetivo es aprovechar los conectores para los pines de la Raspberry. Un vez pelados he insertado en ellos el tubo termoretráctil y lo he calentado con un mechero para que haga la "soldadura" (vale, no lo hace, pero esto va a ir genial para aquellos que no tengan un soldador en casa o directamente no tengan los conocimientos para hacerlo). Os dejo con una foto del momento justo anterior a calentar dicho tubo con un mechero:
|
TSOP4838 con termoretráctil listo para "calentar" |
El resultado final debería ser algo parecido a lo siguiente:
|
Una vez calentado el tubo para que hagan contacto las patas del TSOP con el cable |
Ahora vamos a conectar directamente a la Raspberry. Para ello me he guiado de una excelente representación de los pines que tenemos en los foros de
Stmlabs (Raspbmc). Os dejo con la imagen en cuestión para que sepáis como hay que conectar el TSOP.
|
Esquema de conexión a GPIO |
|
|
|
En resumidas cuentas y para que no tengáis que comeros la cabeza: el pin 1 del TSOP al 18 de la Raspberry (DATA), el pin 2 del TSOP al 6 de la Raspberry (GROUND) y por úlitmo el pin 3 del TSOP al pin 1 de la Raspberry (3,3v).
Una vez conectado, y si no la hemos hecho nada mal a la hora de calentar el tubo termoretráctil. ya tendremos nuestro receptor funcional. La parte que viene a continuación ya es de software y vamos a necesitar Raspbmc, del que ya os he dado el enlace anteriormente. La ventaja de su última versión es que ya viene con
LIRC instalado y preconfigurado, por lo que vamos a tener que hacer poquita cosa para poder ponerlo todo en marcha. De nuevo, para los que no sepan qué es os puedo decir que LIRC es un software que permite leer las entradas que hacemos por IR y, dependiendo de lo que queramos, tomar control de programas multimedia o ejecutar comandos mediante el uso del fichero
lircrc (ver sección "
The .lircrc file format").
Como os decía antes en Raspbmc -en su última versión estable- ya viene todo instalado y listo para que procedamos a la configuración, por lo que lo primero que debéis hacer es saber si vuestro mando se encuentra entre los ya configurados por los
usuarios. Si tienes la gran suerte de tener uno de ellos puedes copiar el fichero en tu directorio personal con el nombre "
lircd.conf". En mi caso no ha sido así y me he hecho mi propia configuración, ya de paso he subido el fichero y espero que vosotros aportéis el vuestro.
Paso 1:
Vamos a detener el servicio de LIRC para comprobar si nuestro receptor esta funcionando correctamente. Para ello entraremos por SSH y escribiremos lo siguiente:
sudo service lirc stop
Deberá responderos con:
pi@raspbmc:~$ sudo service lirc stop
[ ok ] Stopping remote control daemon(s): LIRC:.
Ahora probaremos a ejecutar mode2 con:
mode2 -d /dev/lirc0
Paso 2:
Si presionamos cualquier tecla de nuestro mando deberían salir un montón de letras en pantalla, de lo contrario revisa las conexiones del receptor y comprueba que esté conectado en los pines correctos (o eso o el receptor está muerto :P) Suponiendo que todo haya ido correctamente listaremos todas las posibles teclas a las que podemos asignar una función, para ello escribimos:
irrecord --list-namespace
Anotad todas aquellas que os puedan servir en Raspbmc, como por ejemplo
KEY_STOP,
KEY_PLAY, etc. Podéis ver el listado de las que he mapeado yo
aquí, ya que me están funcionando todas sin problemas.
Paso 3:
Ahora pasaremos a crear nuestro fichero de configuración y asignaremos las teclas al mando. Para ello volvemos a escribir en la shell:
irrecord -d /dev/lirc0 ~/lircd.conf
Os pedirá que presioneis tantos botones del mando como sea posible hasta rellenar dos líneas de puntos en pantalla, es importante seguir las instrucciones que os va dando, porque de lo contrario no funcionará de forma posterior. Llegará un momento que os pedirá el nombre del botón que queréis asignar, y es entonces cuando debéis escribir los nombres que hemos obtenido en el paso 2 y presionar el botón al que queréis asignar dicha función.
Cuando hayáis terminado con todas las teclas deseadas pusláis "
Intro" y debería haberos guardado un fichero de nombre
lircd.conf en vuestro directorio personal en /home/pi. Con esto tenemos toda la faena hecha, por lo que volvemos a iniciar LIRC con:
sudo service lirc start
Paso 4:Ahora falta decirle a Raspbmc que vamos a usar control remoto por IR, para ello nos vamos al configurador que tenéis en "Programas" dentro del propio XBMC, a la pestaña de "
IR Remote" y allí marcad la opción "
Enable GPIO TSOP IR Receiver" y "
GPIO IR Remote Profile" seleccionad "
Custom", que irá a cargar el fichero lircd.conf de nuestro directorio home.
Ahora os pedirá reiniciar para aceptar la nueva configuración y... ¡listo! Ya tenéis vuestro mando funcionando en Raspbmc.
Os dejo con un
vídeo del mío funcionando para que os hagáis una idea.
Un saludo y espero haber sido de utilidad.