En esta entrada os vamos a enseñar como conseguir manejar vuestro XBMC con el mando del salón, sin tener que recurrir a mandos especiales (mandos universales o configurables) de una manera más o menos sencilla y lo mejor de todo muy económica.
Tabla de contenidos
Materiales que necesitamos
Lo primero de todo es buscar aquellas partes que vamos a utilizar y que seguramente tendremos que comprar:
- Una Raspberry Pi, el manual está pensado para hacerlo con este aparato y no sé si se podría hacer con otro aparato.
- Unos cables con conectores, es la manera más sencilla de poder usar los pines GPIO de la Raspberry Pi y evitar tener que soldar y conseguir que cada conector quede aislado. (Los podéis buscar poniendo “Dupont Wire Color Jumper”).
- Un receptor Infrarrojo, esto es como un pequeño LED montado en un transistor. Yo he utilizado este: TSOP4838
Cómo hacer un sensor IR
Todo nuestro manual se basa en la tecnología infrarroja, para no extendernos diremos que los mandos de televisión y otros controles remotos, suelen usar una parte del espectro que no es visible denominado infrarrojo, por esos “canales” envían la información de manera que no interfieran con otras tecnologías como el WiFi o el propio Bluetooth, que también usan parte del espectro no visible al ser humano.
Lo que nosotros vamos a realizar es, instalar un receptor IR para capturar la señal de nuestro mando y una vez capturada, asignar cada señal a un botón de XBMC (desplazamientos, play/pause, stop etc). Así podremos manejar nuestro XBMC con el mismo mando que el de la televisión.
El circuito
Lo primero que debemos hacer es conectar nuestro sensor IR a nuestro Raspberry Pi para ello solo tenemos que usar los cables anteriormente mencionados, no hace falta ninguna resistencia ni electrónica auxiliar.
Configurando el sensor
Lo mejor para esta parte es utilizar un ordenador portátil o tableta y conectarnos vía ssh a nuestra Raspberry Pi en el mismo lugar donde tengamos el dispositivo y el mando.
Lo primero de todo es instalar LIRC que es el software que vamos a utilizar, para ello si no lo tienen instalado deberán poner:
$ sudo apt-get install lirc
Una vez que ya está instalado, usaremos los siguientes comandos en este orden:
$ sudo modprobe lirc_rpi
Esto lo que hace es cargar el driver
$ sudo kill $(pidof lircd)
Que lo que hace es matar el proceso lircd por si está funcionando.
mode2 -d /dev/lirc0
Ahora es cuando debemos pulsar botones de nuestro mando, se tendría que recibir algo similar a esto:
Esto significa que el sensor recibe datos de nuestro mando.
Asignando cada tecla a nuestro mando
Aquí hay dos maneras de seguir el manual:
- La manera más sencilla, entrar aquí y descargar el archivo lirc.conf de vuestro mando.
- Generar el lirc.conf a mano, solo se debería de hacer si no encontramos el archivo, ya que es muy tedioso, consiste en ejecutar $ irrecord –list-namespace para ver los “botones” que tiene XBMC y apuntar esto en un papel y luego ejecutar $ irrecord -d /dev/lirc0 ~/lircd.conf con esto nos saldrá un asistente que nos pedirá el nombre de un botón y que luego pulsemos la tecla del mando que queramos asignar a ese botón. Esto proceso se repetirá con todos los botones que queramos configurar.
Una vez que tenemos el archivo lirc.conf descargado o creado “a mano”, debemos moverlo a la carpeta de lirc, para ello:
luego ejecutamos $ mv ruta-a-lirc.conf/lirc.conf /etc/lirc/lirc.conf
Luego de reiniciar, ejecutamos $ irw y deberíamos ver como ya nos reconoce las teclas:
Asignación de teclas a XBMC
Este paso puede ser innecesario para los usuarios que en irw en lugar de salirle los mensajes que me salen a mi de Up, Down le salgan mensajes del tipo KEY_PLAYPAUSE, como en mi caso no era, os enseño como arreglarlo. Se basa en decirle a XBMC que las teclas se van a llamar de forma distinta para ello:
$ cd
$ cd .xbmc/userdata
$ nano Lircmap.xml
Tendréis que ver algo así:
Seguramente os salgan menos líneas, la manera de editar el fichero es:
- Los tags <title> <down> etc se pueden ver aquí y son los botones que tiene oficialmente XBMC.
- Entre esos tags lo que debemos colocar es el texto tal cual, sale cuando ejecutamos irw y pulsamos el botón del mando que queremos asociar a ese botón.
De esta manera le estamos diciendo, cuando LIRC reconozca el botón X asociado al Play, te dará el mensaje por ejemplo Play/Pause, pues cuando XBMC reciba el mensaje Play/Pause debe accionar el botón play. Todo esto se hace poniendo:
<play>Play/Pause</play>
Así uno a uno vamos ajustado los botones según queramos personalizar nuestra configuración y de esta manera se adapta a nuestro mando.
Esperamos que este tutorial os sea útil y para cualquier duda o sugerencia, os contestaremos a vuestros comentarios lo más rápido que podamos.
50 comentarios en “Raspberry Pi sensor IR y mando a distancia”
Agostina Alcaraz
Buenas! al introducir “irw” en la consola de mi Raspberry pi 3, me responde “Segmentation fault”, los pasos anteriores funcionaron correctamente.
SomosBinarios
No tengo ese modelo de dispositivo, por lo que no puedo ayudarle :S
Juan
Hola, estoy intentando instalar el lirc y me sale esto:
sudo apt-get install lirc
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Tal vez quiera ejecutar «apt-get -f install» para corregirlo:
Los siguientes paquetes tienen dependencias incumplidas:
expect : Depende: tcl8.5 (>= 8.5.0) pero no va a instalarse
lirc : Depende: libftdi1 (>= 0.20) pero no va a instalarse
Depende: liblircclient0 (>= 0.6.4) pero no va a instalarse
E: Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución).
y no se instala, alguien sabe la solución?
Muchas gracias
SomosBinarios
Ejecutando sudo apt-get -f install no se te arregla?
Juan
Gracias por la respuesta, he conseguido instalarlo gracias a ese comando, pero ahora, al insertar el siguiente me da el siguiente error:
$ sudo modprobe lirc_rpi
modprobe: ERROR: could not insert ‘lirc_rpi’: No such device
puede ser que no reconozca el receptor ir?
GRacoas de nuevo.
Juan
Ya está solucionado, no me había fijado que anteriormente otro usuario había tenido el mismo problema, ya lo he solucionado, sigo con el manual, gracias 😉
Juan
Hola de nuevo, continuando con el tema, ahora me lanza otro error cuando ejecuto “irw”:
Irw connect: no such file or directory
Y ahí estoy atascado ahora , alguna idea?
Mil gracias
SomosBinarios
Prueba a reiniciar a ver si te lo reconoce
Juan
Que ejecuto justo después de reiniciar?
Perdona si pregunto mucho pero soy novato con eso de Linux.
Gracias.
SomosBinarios
Ha conseguido obtener este resultado anteriormente?
Me extraña que irw no le reconozca el mando.
Juan
Después de ejecutar
“mode2 -d /dev/lirc0” lee las pulsaciones del mando, pero después de hacer lo demás, cuando tengo que ejecutar “irw” me sale esto:
“irw connect: no such file or directory”
SomosBinarios
ejecute ps -e | grep lir a ver si está ejecutándose el programa
Juan
Ok gracias, cuando llegue esta noche a casa lo pruebo, un apunte, no se si influirá, pero solo tengo conectado a la rpi el receptor ir.
Juan
No sale nada, en blanco.
SomosBinarios
Pruebe a ejecutar sudo service lircd start
Juan
:~ $ sudo service lircd start
Failed to start lircd.service: Unit lircd.service failed to load: No such file or directory.
SomosBinarios
El problema es que el servicio de lirc no se ha iniciado, creo que ejecutando:
/etc/init.d/lircd start
se puede iniciar.
Juan
Ok muchas gracias, ya parece que funciona, digo parece porque no da error, pero cuando pulso los botones del mando no hace nada, y parece ser que es porque no graba nada en el archivo lircd.conf:
“pi@Djuan:~ $ sudo nano lircd.conf
GNU nano 2.2.6 Fichero: lircd.conf
aeps 100
header 4441 4531
one 506 1723
zero 506 609
ptrail 508
gap 107652
min_repeat 8
# suppress_repeat 8
# uncomment to suppress unwanted repeats
toggle_bit_mask 0x505
begin codes
end codes
end remote
Juan
Ya lo he conseguido, era un problema a la hora de grabar los códigos, otra pregunta, se pueden guardar códigos de diferentes mandos en un solo archivo?
Mil gracias.
SomosBinarios
En un mismo archivo no, pero se pueden poner en archivos diferentes y luego indicarle en el fichero hardware.conf (si mal no recuerdo) las rutas a los distintos ficheros, de tal manera que debería funcionar con, por ejemplo, 2 mandos distintos.
Juan
Ok, gracias.
David
Muy buenas chic@s,
Llevo semanas intentando enviar comandos a un script bash en ejecución pero parece tarea imposible. Ejecuto un script /etc/init.d/data/omxplayer.sh que tiene una lista de reproducción pero si quiero bajar el volumen o darle a pause/stop con el teclado si le doy a menos o más si me sube y baja el volumen, pero con el mando de lirc he probado mil formas y no las hay.
He puesto echo “-” como config por si colaba o “sudo bash /etc/init.d/data/omxplayer.sh -” y tampoco. También en prog he puesto bash y nada. ¿Se os ocurre de que forma puedo atribuir al mando la misma función que una tecla del teclado?
Muchas gracias de antemano y un saludo.
SomosBinarios
No se si OMXPlayer va a “leer” los datos de lirc porque no se si XBMC se los manda.
Según veo aquí http://raspberrypi.stackexchange.com/questions/27248/how-to-control-omxplayer-via-lirc hay que configurar con tuberías ( http://www.somosbinarios.es/manual-de-bash-completo/ ) y crear un script. No se puede manejar de manera tan sencilla como con XBMC.
Espero que te sirva
SomosBinarios
Creo que tu mando y sistema es de este tipo http://pmitev.blogspot.com.es/2014/01/raspberry-pi-and-ir-remote-control-with.html por lo que ese manual te debería funcionar.
David
Buenas,
Sigo atascado intentandolo solucionar dando vueltas sin entender el problema, no se si podéis ayudarme. Lo he configurado tal y como me dicen ustedes, y al salir: “ERROR: could not insert ‘lirc_rpi’: No such device” he probado el tutorial http://alexba.in/blog/2013/01/… pero tampoco, cambién 23 y 22 por 18 como dice J. Luis, en Boot que es lo que él dice, también en Boot y modules, he probado con 23 y 18, 23 y 5, 6 y 8, 18 y 1, 18 y 5, 23 y 22 y 23… Y así hasta todas las opciones que se os ocurran reiniciando siempre y escribiendo: $ sudo modprobe lirc_rpi para que me vuelva a decir ERROR: could not insert ‘lirc_rpi’: No such device. Como el que yo tenía era este: http://www.ebay.es/itm/3313085… y vosotros en el tutorial otro, he comprado el mismo que tienen en el tutorial por si ese era el problema y sigue saliendo lo mismo, he probado cambiando los cables por si el problema era el cable y con 3 raspberrys por si el problema era el raspberry. Entonces empiezo a pensar que el problema soy yo. ¿Me sabríais decir que hago mal por favor? Porque en el tutorial me pareció todo muy fácil pero no se si es que yo solo me estoy complicando. He probado con: http://dukkon.blogspot.com.es/2009/06/moovida-lirc-ubuntu-media-center.html
http://tonyjevi.blogspot.com.es/2014/02/configuracion-mando-distancia-en-debian.html
http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/
Y varios más, no se si conocéis algún tutorial para rubios… Muchas gracias de antemano y un saludo.
SomosBinarios
Hola David que sistema estas usando en la Raspberry Pi? Nos podrías mandar una foto (o un par de ellas) donde se vea como lo has conectado a la Raspberry Pi.
Un saludo
David
Muy buenas,
Os paso una foto del receptor que compré en ebay http://www.ebay.es/itm/331308548921?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT que tiene el cable amarillo en señal (Pin 18 – El sexto empezando por arriba de la parte exterior de la Raspberry), rojo en tierra (el tercero por arriba del exterior) y naranja en 5V (el primero del interior) con las conexiones a la Raspberry igual que en vuestro gráfico lo que en 5V en lugar de 3V.
Según todo eso debería ir, pero no, así que también con el que vosotros proponen en el gráfico lo compré y lo pruebo también pero cambio el naranja y el rojo porque el de tierra es el central y lo conecto a 3V.
En ambos casos he hecho sudo apt-get instalo lidc le he dicho yes, lo he instalado me ha salido lo que hay en pantalla y escribo sudo modprobe lirc_rpi y me dice lo mismo. He escrito en sudo nano /etc/modules que pin in es 23 y out 22 e igual en /boot/config.txt y tampoco. He probado con pin in 18 como dice J. Luis y tampoco. Y con mil maneras diferentes. No se cual es el error o que hago mal.
¿Se os ocurre? Si que veo que en vuestro tutorial dice: xbian en mi caso estoy con usuario pi y el hostname lo cambié pero eso no debería afectar a nada. También he probado todo con root pero estamos en las mismas.
Muchísimas gracias de antemano y un saludo.
SomosBinarios
Como bien dices para este http://a.disquscdn.com/uploads/mediaembed/images/2297/7315/original.jpg es amarillo al pin 18 (sexto de fuera), naranja a 5v (el 1º de fuera) y rojo a masa (tercero de fuera).
Luego eso es correcto http://a.disquscdn.com/uploads/mediaembed/images/2297/7318/original.jpg
Después aquí http://a.disquscdn.com/uploads/mediaembed/images/2297/7319/original.jpg deberías quitar la # de delante de dtoverlay…
Reiniciar y probar con
$ sudo modprobe lirc_rpi
PD: a mi me sale xbian porque yo uso Xbian en lugar de Raspbian pero eso no tendría que tener nada que ver.
Un saludo
David
No me lo puedo creer, siento entre frustración y alegría porque llevo semanas dedicando tiempo a descubrir el problema para que al final fuese algo tan simple… ¡Muchísimas gracias! Funciona genial. Ayer además me descargué el xbian y lo puse y me funcionó a la primera pero lo necesito para Raspberry y ciertamente funciona genial solamente tuve que quitar la almohadilla. Muchas gracias de nuevo, un saludo.
SomosBinarios
Siento no darme cuenta antes pero muchas veces pido las fotos del montaje y la configuración porque se suelen cometer errores minúsculos como la ausencia de un carácter que hace que nada funcione.
Usar Xbian o Raspbian no debería ser un problema.
Acabo de ver y parece que en Source Force han tenido problemas técnicos https://twitter.com/sfnet_ops y están restaurando la copia de seguridad. Lamentablemente el proyecto lirc está allí así que tocará esperar a que acaben de recuperar y subir todos los datos (no creo que tarden mucho).
Un saludo
SomosBinarios
Vamos por partes, creo que el kit consiste en:
Receptor IR
Emisor IR (el led blanco que tu dices)
Mando con emisor IR incorporado.
El led desde mi punto de vista no habría que configurarlo.
Según veo el circuito que te pone de muestra tiene 3 patas, señal, masa y 5v. En la imagen superior de este artículo se ve donde tiene la Raspberry Pi estas salidas. En nuestro caso lo conectamos a 3.3V pero en el tuyo habría que conectarlo al de 5V.
Pero necesito más datos, que Sistema usas en tu Raspberry Pi, cual es el número de serie de ese Led IR (lo pondrá debajo o en un lateral normalmente) que datos te venían en el paquete etc.
un saludo
PD: mejor mover no responder dentro de las preguntas de otro usuario 😉
Luis Llorent
Hola.Tengo el sensor conectado pero me indica “ERROR: could not insert ‘lirc_rpi’: No such device”.
Luis Llorent
Solucionado el problema.He instalado openelec y ya funciona.Saludos.
SomosBinarios
Ok, si tienes alguna duda intentaremos ayudarte por aquí.
Un saludo
Luis Llorent
Perdón por molestar otra vez, no encuentro la forma de hacerla funcionar en raspbian.Me sigue saliendo ese mismo error.
SomosBinarios
Creo que es porque está fallando el driver con modprobe lirc_rpi se supone que añades ese módulo al núcleo de Linux para que te lo reconozca.
aqui hay una guia para Raspbian http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/
quizás esta parte sea lo que necesites:
Add this to your /etc/modules file:
lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22
January 25th 2015: Marc W. in the comments pointed out that in the 3.18.x RaspberryPi firmware you must modify one additional file for the lirc-rpi kernel extension to be loaded:
Edit your /boot/config.txt file and add:
dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22
Reboot your RaspberryPi after making this change.
Un saludo
Luis Llorent
Muchísimas gracias por la ayuda.Cuando llegue a casa lo pruebo y te comento. 😀
Luis Llorent
Problema solucionado.Me faltaba añadir “dtoverlay=lirc-rpi,gpio_in_pin=18” en “/boot/config.txt” .Gracias.
David
Hola! Finalmente he podido configurar todo tal y como lo has descrito, y funciona. Lo único que de vez en cuando el sensor parece no recibir ninguna señal, durante algunos segundos (incluso algún minuto), y sin hacer nada vuelve a dar señal. Lo atribuyo a que no tengo los cables soldados (sólo los enrollé en las patillas del sensor), y debe haber alguna mala conexión. Pero cuando funciona, (que es el 98% del tiempo), va de fábula!
Gracias por todo!
SomosBinarios
Si hace mal contacto siempre puedes usar algo de http://www.foroelectricidad.com/download/file.php?id=106 o http://www.cablematic.es/Funda-termoretractil/ lo venden en ferreterías o tiendas de electronica, es barato y no necesita herramientas.
Un saludo y me alegro de que te funcione
David
Hola Jorge, voy a intentar hacer lo que dices, pero tengo una duda.
Estos cables con conectores, son los adecuados? :
20 CM Male to Male Dupont Wire Color Jumper Cable, 2.54mm 1P-1P For Arduino
Gracias!
SomosBinarios
Si son de ese tipo, el problema es que la raspberry pi tienes pines (macho) deberías comprar unos que fueran hembra por un lado para meterlos en los pines de la Raspberry Pi algo como esto http://www.amazon.com/gp/product/B00A6SOGC4/ref=pd_lpo_sbs_dp_ss_1/179-4350012-3262033?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=lpo-top-stripe-1&pf_rd_r=0QFSHJP1992AWTP5DWR7&pf_rd_t=201&pf_rd_p=1944687702&pf_rd_i=B00AX3PHV6
David
Gracias Javier!
Otra cosa, el sensor infrarojos, entiendo que debe ajustarse a la frecuencia que use el mando del salón, no?
Es decir, debería comprar un sensor que reciba en la misma frecuencia que emita la portadora del mando. Es así?
En mi caso tengo un mando BEKO C4A187F. En google no he sido capaz de averiguar la frecuencia de ese mando … investigaré más.
Gracias!
SomosBinarios
La verdad es que me imagino que debería funcionar con cualquier mando ya que todos deberían emitir en esa frecuencia o muy cercana a ella. Porque el receptor (el sensor) medirá en un rango de frecuencias. Pero si es verdad que dice en el artículo original que hay que mirar el rango de frecuencias o elegir otro TSOP
https://learn.adafruit.com/ir-sensor
Este es el articulo original e indica en qué rango de frecuencias puede usarse. De todas maneras hay varios integrados que permiten hacerlo, así que la cosa debería ser mirar uno que sea compatible con el tuyo. Pero de todas maneras no cuesta mucho el chip 1€ si mal no recuerdo. Así que tampoco es mucha pérdida el intentarlo con el
David
Ok, gracias. Lo pruebo y te digo algo!
David
Hola, creo que el conector Dupont tiene que ser hembra a hembra, no?
Tanto la Rasp como el sensor son machos.
Por tanto, el link anterior es incorrecto. Es así?
(es que lo he comprado pero ya he visto que el conector macho no conecta ni por asomo con el sensor 😀 )
SomosBinarios
Para unirlo con el sensor tienes que cortar el extremo y soldarlo o empalmarlo así que te da igual el conector que lleve al final
David
La verdad es que no tengo material para soldar.
Si compro hembra-hembra, funcionará, no?
Gracias!
SomosBinarios
Yo creo que sí, pero las patas del transistor creo que son algo más finas que las patas del conector hembra.
Siempre puedes pelar los extremos y enrollarlos a cada una de las patas.
David
si, haré eso 😀 Gracias por contestarme. Te cuento qué tal me ha ido.