[TUTO] Raspbmc : Utiliser une telecommande infrarouge


23 posts
by wouldsmina » Sat Dec 29, 2012 9:59 am
Bonjour,
J'ai cherché comment utiliser une télécommande infrarouge sur RPi sur la toile et je suis tombé sur http://forum.stmlabs.com/showthread.php?tid=1954 en anglais! Après 1 heure, je pu m’affaler sur la canapé avec ma vieille télécommande de démodulateur!
Alors pour ceux qui ne veulent pas perdre de temps a comprendre l'anglais, voici mon tuto.

Pour commencer, vous devez avoir un récepteur infrarouge. Il y en a pour moins de 5 euros sur internet mais si vous êtes impatient comme moi démontez en un sur le premier appareil avec télécommande infrarouge...

Brancher le récepteur
Si vous avez récupérer le récepteur directement sur un appareil électronique, vous devez trouver la masse et le plus. En général, les broches sont disposé ainsi (en regardant le récepteur coté bombé).

led.jpg
led.jpg (2.38 KiB) Viewed 24128 times


Il faut brancher le récepteur directement sur les ports GPIO comme suit : 3.3V sur la broche 1, Masse sur la broche 6 et Sortie sur la broche 1 (la broche 1 est la plus pres de la carte SD).

gpio.jpg
gpio.jpg (10.74 KiB) Viewed 24128 times

Voila, l'aspect électronique est terminé. Passons aux logiciels.

Configurer lirc
Commençons par activer le module lirc dans le Kernel par la commande
Code: Select all
modprobe lirc_rpi


Pour s'assurer que l'infrarouge passe bien, exécuter la commande
Code: Select all
mode2 -d /dev/lirc0

Normalement vous devriez avoir des chiffres qui s'affichent lorsque vous appuyez sur une touche de la télécommande, sinon il va falloir creuser d’où viens le problème (Bon courage !)

Configurer la télécommande avec Lirc
Dans le fichier /etc/lirc/hardware.conf assurez vous que les paramètres suivants sont bien renseignés :

Code: Select all
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
LIRCD_ARGS="--uinput"


Le dernier paramètre ne semble pas obligatoire, en tout cas moi je l'ai pas saisie et ça marche...

Lirc est maintenant configuré par défaut. Certaines télécommandes sont déjà implémenté pour vous en assurer, exécutez la commande "irw". Pour ma part, j'utilise une télécommande de démodulateur analogique...

Pour générer la configuration de votre télécommande, il faut arrêter Lirc et exécuter irrecord

Code: Select all
/etc/init.d/lirc stop
irrecord -d /dev/lirc0 ~/lircd.conf

Cette configuration ce passe en plusieurs étapes :
- appuyez sur les touches au hasard pendant une seconde à chaque fois jusqu'à que deux lignes de point s'affichent a l'écran ( Attention : si vous n'appuyez pas sur une touche pendant 10 secondes le processus s’arrête.)
- Saisissez le nom de la touche que vous souhaitez référencer puis appuyer sur le bouton correspondant les touches les plus utiles sont les suivantes :

KEY_HOME
KEY_BACK
KEY_SELECT
KEY_LEFT
KEY_RIGHT
KEY_UP
KEY_DOWN
KEY_FASTFORWARD
KEY_FORWARD
KEY_REWIND
KEY_PLAYPAUSE
KEY_STOP
KEY_INF

Si vous souhaitez configurer d'autres touches vous pouvez afficher toutes les commandes possible par la commande "irrecord –list-namespace"

Enfin copiez le contenu du fichier /home/pi/lircd.conf à la fin du fichier /etc/lirc/lircd-full.conf en vous assurant que la deuxième ligne contient bien "name default".
Pour je ne sais quelle raison, Lirc ne veux pas repartir après un irrecord. Vous devez maintenant redémarrer raspbmc.

Il ne vous reste plus qu'a faire la correspondance des touches de Lirc avec raspbmc. Pour cela, créer le fichier "/home/pi/.xbmc/userdata/Lircmap.xml" pour y insérer les valeurs suivantes :

Code: Select all
<lircmap>
  <remote device="default">
    <back>KEY_BACK</back>
    <menu>KEY_HOME</menu>
    <up>KEY_UP</up>
    <left>KEY_LEFT</left>
    <select>KEY_SELECT</select>
    <right>KEY_RIGHT</right>
    <down>KEY_DOWN</down>
    <stop>KEY_STOP</stop>
    <info>KEY_INFO</info>
    <skipminus>KEY_REWIND</skipminus>
    <play>KEY_PLAYPAUSE</play>
    <skipplus>KEY_FASTFORWARD</skipplus>
  </remote>
</lircmap>


Voila, il n'y a plus qu'a...
A+
Posts: 8
Joined: Tue Oct 30, 2012 10:12 am
by Starkdop » Sat Dec 29, 2012 1:24 pm
Superbe tuto, félicitation :P
Personnellement, j'ai installé Raspbmc, j'ai branché mon RSP sur ma télé via HDMI et la magie fait que je peux contrôler mon RSP avec la télécommande de ma télé. Je n'ai absolument configuré.
Je te laisse imaginer la tête que je faisais quand j'ai vu ça :roll:
Posts: 14
Joined: Wed Dec 19, 2012 7:30 pm
by UltraByte » Sat Dec 29, 2012 1:48 pm
Oui sans recepteur IR sur le raspi c'est tres fort :lol:
Posts: 53
Joined: Sat Sep 08, 2012 12:40 pm
by Vincoll » Sat Dec 29, 2012 4:19 pm
@Starkdop
La Magie c'est du CEC 8-)

Merci pour le tuto ! Moi qui décourageait à brancher le dongle IR de la Xbox1 (qui était enfaite mort).

Est-il possible d'envoyer des Informations en plus d'en recevoir afin qu'elle soient capté par une Chaine Hifi :?:
Par exemple.
But de la manœuvre Play/Pause...Éteindre en IR ma Chaine Hifi via une commande ssh

J'ai un peu réfléchit à la chose :
Une phase d’apprentissage du Rpi grâce à la télécommande qui contrôle la chaine.
Puis un clonage de l'onde IR envoyé par le raspberry Pi à la chaine .
Posts: 19
Joined: Sat Dec 29, 2012 4:06 pm
by wouldsmina » Sat Dec 29, 2012 11:22 pm
oui il est aussi possible de brancher un emetteur sur la broche 11. les details sur le pilote sont ici: http://aron.ws/projects/lirc_rpi/
Posts: 8
Joined: Tue Oct 30, 2012 10:12 am
by Starmina » Sun Dec 30, 2012 3:38 pm
Yo j'ai un petit souçis, quand je fais sudo mode2 -d /dev/lirc0
il me dit
Code: Select all
mode2: could not open /dev/lirc0
mode2: default_init(): Device or resource busy


Une idée :/ ?
Posts: 4
Joined: Sun Dec 30, 2012 3:37 pm
by wouldsmina » Mon Dec 31, 2012 9:13 am
il faut arreter lirc. ou tuer le processus avec killall lirc
a+
Posts: 8
Joined: Tue Oct 30, 2012 10:12 am
by sky99 » Tue Jan 01, 2013 12:33 am
très intéressant, j'avais commencé à coder quelque chose pour décoder les signaux IR, mais
il y avait beaucoup de filtrage à faire ^^
Du coup c'est plus pratique s'il y a un module déjà codé :)

Ceci dit, je vais quand même regarder dans leur code la procédure de filtrage des signaux IR,
comme ça du coup je pourrai proposer une mini lib à intégrer dans ses programmes C...
Posts: 6
Joined: Wed Nov 07, 2012 4:12 pm
by Starmina » Fri Jan 04, 2013 5:19 am
wouldsmina wrote:il faut arreter lirc. ou tuer le processus avec killall lirc
a+


Super ça marche ! Merci !

J'voulais savoir, il y moyen de faire fonctionner ça sur Raspbian sachant que lirc n'est pas inclu :/ ?
Posts: 4
Joined: Sun Dec 30, 2012 3:37 pm
by maxkweeger » Tue Nov 05, 2013 9:08 am
Bonjour,
Super tuto !

Il y a un truc pas claire

Il faut brancher le récepteur directement sur les ports GPIO comme suit : 3.3V sur la broche 1, Masse sur la broche 6 et Sortie sur la broche 1 (la broche 1 est la plus pres de la carte SD).


Tu branches le 3,3v sur la broche 1, c'est OK
La masse sur la broche 6, c'est OK
Mais la Sortie tu la branche aussi sur la 1 ???

++
MaxKweeger
Posts: 8
Joined: Tue Mar 05, 2013 12:52 pm
by i-zerocool » Tue Nov 05, 2013 9:15 am
non c'est sur la broche 12 qu'il faut brancher la sortie du récepteur IR.
d'ailleurs on le voit sur le schéma: la broche 12 est indiqué.
Posts: 98
Joined: Tue Oct 02, 2012 10:27 am
by maxkweeger » Tue Nov 05, 2013 9:33 am
Merci i-zerocool

Effectivement, sur le site en anglais aussi ils parlent de la broche12.
C'est juste une coquille, je suis allé trop vite.

++
Max
Posts: 8
Joined: Tue Mar 05, 2013 12:52 pm
by totoharibo » Wed Nov 06, 2013 8:56 am
+10
j'ajoute que pour utiliser dans un script bash j'ai ajouté cela :
###################initialisation
#pipe pour liaison
PIPE=/tmp/lirc
#reglage telecommande
#cree pipe
mkfifo $PIPE
#tue les irw (télécommande) existants
pkill irw
#lance télécommande
irw | awk -Winteractive '{print $3}' > $PIPE &

###########ensuite pour lire les codes envoyés un simple :
read -e telecommande

Seul problème la répétition des commandes quand on laisse le doit sur la télécommande.
Posts: 2812
Joined: Thu Jan 24, 2013 8:43 am
by totoharibo » Wed Nov 06, 2013 8:59 am
j'ai oublié à la fin une boucle pour traiter :
while [ 1 ] ; do
read -e telecommande
<ce que je dois faire avec le code reçu (telecommande)>
done < $PIPE

Mes plus plates excuses.
Posts: 2812
Joined: Thu Jan 24, 2013 8:43 am
by Evo » Thu Jan 23, 2014 5:50 pm
Bonjour,
Les explications sont très claire! mais comme je suis sous Openelec cela ne marche pas..
Est ce que quelqu'un saurez faire la même chose mais sous Openelec?
Merci!
Posts: 1
Joined: Thu Jan 23, 2014 5:42 pm
by totoharibo » Sun Jan 26, 2014 9:42 pm
je ne connais pas openelec mais c'est du "sur mesure" pour un médiacenter.

Il n'y a pas d'extensions possibles à moins de développer spécialement.
À priori pas de console non plus mais un accès ssh. Peut-être possible de programmer lirc si les programmes sont présents.

Il y a un forum en particulier : http://openelec.tv/forum/103-infared-remotes. Ya sans doute des infos là bas.

Ou alors installer Raspbian et y ajouter XBMC (et lirc ...). Ça a déjà du être fait avec le RPi.
Sans doute plus gros mais sans bloquage pour des extensions et bidouilles éventuelles.
Posts: 2812
Joined: Thu Jan 24, 2013 8:43 am
by papiroff » Fri May 23, 2014 5:42 pm
Bonjour,
J'ai essayé de configurer ma télécommande, mais après :
Code: Select all
irrecord -d /dev/lirc0 ~/lircd.conf

J'ai eu :
Code: Select all
something went wrong

J'ai 10 tentatives mais à chaque fois, cela me met ça. Que dois-je faire ?
Merci pour votre aide :)

Bon au bout de la X tentative, cela a marcher mais ma telecommande ne telecommande rien du tout --'
Posts: 6
Joined: Tue Jul 23, 2013 8:49 am
by Clemzo » Sun Jan 25, 2015 2:35 pm
Bonjour et merci pour ce tuto de base simple d'approche.

Cependant, mes faibles connaissances me font bloquer sur la 2nd ligne de commande :
Quand je rentre :
Code: Select all
mode2 -d /dev/lirc0

mon Raspberry me répond :
Code: Select all
-bash: mode2 : commande introuvable


Je suis sous Raspbian

Faut-il installer autre chose avant ?

Merci pour votre indulgence.
Posts: 16
Joined: Thu Dec 25, 2014 9:03 am
by jelopo » Sun Jan 25, 2015 9:07 pm
@clemzo
Il faut installer lirc
Code: Select all
sudo apt-get install lirc
Posts: 985
Joined: Wed Oct 17, 2012 7:53 pm
by Clemzo » Sun Jan 25, 2015 10:32 pm
C'était simple.
Merci.
Posts: 16
Joined: Thu Dec 25, 2014 9:03 am
by totoharibo » Mon Jan 26, 2015 1:54 pm
Clemzo wrote:C'était simple.
Merci.

et pour ajouter des touches sous Raspbian ça se passe dans /home/pi/.config/openbox/rc.xml
sous menu "keyboard"
Utiliser geany pour éditer le fichier (aller dans document -> tout plier) et cliquer sur les + pour ouvrir les menus.
Posts: 2812
Joined: Thu Jan 24, 2013 8:43 am
by Clemzo » Mon Jan 26, 2015 6:18 pm
Super, merci beaucoup pour ce complément.
Posts: 16
Joined: Thu Dec 25, 2014 9:03 am
by mauricefabre » Thu Feb 19, 2015 9:46 am
avec un peu de retard, il y a une petite coquille : la broche out du TSOP se branche sur la broche 12 du raspberry, et non pas sur la 1 comme indiqué dans le tuto.
Posts: 1
Joined: Sun Jun 23, 2013 8:48 pm