Installation du pilote
J’utilise une manette sans-fil de Xbox 360 prévue pour PC. Pour installer les pilotes :
sudo apt-get install xboxdrv
On vérifie que la manette est prête à être utilisée :
sudo xboxdrv
Comme indiqué, s’il y a une erreur Error couldn't claim the USB interface: LIBUSB_ERROR_BUSY
, il faut exécuter la commande sudo rmmod xpad
puis relancer xboxdrv, ou lancer xboxdrv avec l’option --detach-kernel-driver
.
On peut démarrer la manette si ce n’était pas déjà, et cette commande affiche les événements qu’elle reçoit. Si aucun événement ne s’affiche, il faut peut-être resynchroniser en appuyant 3 secondes sur le bouton du récepteur, puis sur celui de la manette.
Source : http://mattdyson.org/blog/2013/01/using-an-xbox-360-wireless-controller-with-raspberry-pi/
Utilisation avec Python
Pour l’utiliser avec Python, j’utilise ce script écrit par Zephod : https://github.com/zephod/lego-pi/blob/master/lib/xbox_read.py
Pour l’utiliser en tant que librairie, on le met dans un dossier lib
avec un fichier __init__.py
qui peut être vide. Ce fichier sert à indiquer que le dossier est un package importable.
L’arborescence des fichiers est :
. ├── lib │ ├── __init__.py Vide │ ├── xbox_read.py Script de Zephod pour traiter les évenements └── test.py Script principal
Le fichier test.py contient :
#!/usr/bin/python from lib import xbox_read for event in xbox_read.event_stream(deadzone=12000): print event
On lui donne les droits en exécution et on le lance :
chmod +x test.py sudo python test.py
Source : https://github.com/zephod/lego-pi
http://tomre.es/post/lego-xbox-raspberry-pi/
http://mattdyson.org/blog/2013/01/using-an-xbox-360-wireless-controller-with-raspberry-pi/
Contrôle de GPIO
En guise de Hello World, on va allumer une LED à l’appui du bouton A de la manette. Voici le schéma de montage associé :
On garde la même arborescence de fichier que précédemment :
. ├── lib │ ├── __init__.py Vide │ ├── xbox_read.py Script de Zephod pour traiter les évenements └── led.py Script principal
Pour interagir avec les entrées/sorties GPIO, on utilise le module RPi.GPIO. Je n’ai pas eu besoin de l’installer sur le Raspberry mais si jamais, voici les instructions d’installation.
#!/usr/bin/python import RPi.GPIO as GPIO from lib import xbox_read import time #-------------[ CABLAGE ]-------------------- LED_PIN = 04 #-------------[ INITIALISATION DES GPIOS ]-------------- GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) #-------------[ ECOUTE DU CONTROLEUR ]-------------- print 'En avant Guingamp !' # En attente d'evenement de la manette for event in xbox_read.event_stream(deadzone=12000): if event.key == 'A': GPIO.output(LED_PIN, event.value) if event.value == 1: print 'Bip'
Documentation de RPi.GPIO : https://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/
Merci ! Super tuto 🙂