Raspberry Pi Xbox 360 Wireless Controller

Projekte

Raspberry Pi mittels Xbox 360 Controller steuern

Neben der Steuerung des Raspberry Pi’s über Infrarot Fernbedienungen, 433 Mhz Sender, Instant Messenger und vielen weiteren, kann auch ein kabelloser Xbox 360 Controller vom Raspberry Pi ausgelesen werden und entsprechend darauf reagiert werden. So kann das Gamepad als externe Maus (im Desktop Modus) verwendet werden oder Skripte und somit die GPIOs angesteuert werden. In RetroPie kann der Xbox Controller außerdem als Eingabemedium für Spiele auf dem Raspberry Pi genutzt werden.

In diesem Tutorial werden mehrere dieser Möglichkeiten aufgezeigt. Angefangen von der Installation der benötigten Software, über die Verwendung als Maus bis hin zum Schalten der GPIOs und dem Steuern eines Servo Motors mit Hilfe des Joysticks.



 

Zubehör

Um den Raspberry Pi mit dem Xbox 360 Controller nutzen zu können, ist nicht viel Zubehör erforderlich:

Jedes Raspberry Pi mit mind. einem freien USB Port kann also verwendet werden, wie z.B. das leistungsstärkere Raspberry Pi 3.

Falls du das kleine Projekt unten nachbauen willst, benötigst du außerdem noch:

 

 

Raspberry Pi Software für Xbox 360 Controller

Für Linux Distributionen gibt es einen entwickelten Treiber, speziell für die Kommunikation mit Xbox Controllern.

Wir installieren also zuerst den Treiber, damit mit dem Controller kommuniziert werden kann:

sudo apt-get install xboxdrv

Jetzt kann der USB Empfänger angeschlossen werden. Mit lsusb kannst du überprüfen, ob er erkannt wurde:

pi@raspberrypi:~ $ lsusb
Bus 001 Device 005: ID 045e:0291 Microsoft Corp. Xbox 360 Wireless Receiver for Windows
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

Nun kannst du den Controller anschalten und testen, ob er erkannt wird. Dazu startest du den Treiber mittels:

sudo xboxdrv --detach-kernel-driver

Anschließend sollte sich beim Drücken der Tasten der Log verändern, der angibt, welche Taste(n) gedrückt sind und ggf. dessen Wert.

 

Auf der Dokumentation-Seite gibt es alle Befehle mit kurzer Erklärung dazu. So ist es bspw. möglich die LEDs des Xbox 360 Controllers leuchten/blinken zu lassen (--led NUM) oder vibrieren lassen (-r 255,255).  Insgesamt können bis zu 4 Funkcontroller verwendet werden und angesprochen bzw. ausgelesen werden.

 

Xbox 360 Controller als Rasbperry Pi Maus verwenden

Eine Funktion die mir besonders gefällt, ist die Maus-Option. Da ich bereits selten eine Tastatur am Raspberry Pi angeschlossen habe (ich nutze fast ausschließlich SSH und manchmal den Remotedesktop) und noch seltener eine Maus, finde ich es sehr praktisch den Xbox 360 Wireless Controller auch als Maus für den Raspberry Pi nutzen zu können. Alles was dazu benötigt wird, haben wir bereits installiert.

Lediglich ein weiterer Parameter muss angegeben werden:

sudo xboxdrv --detach-kernel-driver --silent --mouse

Die Geschwindigkeit und Auswahl der Tasten kannst du außerdem auch ändern (wie steht in der Dokumentation). Falls der Befehl bereits bei Systemstart ausgeführt werden soll, kannst du entweder ein Autostart Skript schreiben oder crontab nutzen.

Folgende (Standard) Belegung der Tasten für die Verwendung als Maus gilt:

  • A: Linksklick
  • B: Rechtsklick
  • X: Mittlere Maustastenklick
  • Y: Eingabe / Enter
  • Linker Controller: Mausbewegung
  • Rechter Controller: Scrollrad
  • Steuerkreuz: Pfeiltasten
  • Start: Vorwärts
  • Back: Zurück
  • LB: Bild auf
  • RB: Bild ab

 

 

Mit dem Xbox 360 Controller Skripte und Befehle starten

Eine Möglichkeit den Treiber in eigenen Skripten zu vewenden wäre das manuelle Auslesen der Ausgabewerte. Um uns diesen Aufwand zu ersparen, können wir aber auf eine bereits erstellte Python Bibliothek zurückgreifen.

 

git clone https://github.com/FRC4564/Xbox
cd Xbox

Anbei ist auch ein Beispiel (sample.py), welches man sich ggf. ansehen kann.

Ich habe daher mal ein kleines Beispiel mit einem Servomotor und 4 LEDs als Inspiration aufgebaut. Die Verkabelung ist recht einfach (Vorwiderstand an die LEDs), daher nur hier als schematischer Aufbau gezeigt:

Raspberrya Pi Xbox 360 Steckplatine

Wie ein Servomotor genau angesteuert werden kann, ist in diesem Tutorial nachzulesen.

 

Der Code dazu ist folgender (Datei z.B. mit sudo nano xbox360_example.py erstellen und mit STRG+X,O speichern und beenden):

Anschließend kannst du den Code ausführen (sudo nano xbox360_example.py) und mit den Buttons die LEDs an und ausschalten, sowie mit dem linken Joystick den Servomotor lenken. Um zu stoppen, drücke die BACK Taste.

Im nachfolgenden Video kannst du dir dieses kleine Projekt außerdem anschauen:

Darüber hinaus können noch viele weitere Sachen mit dem Raspberry Pi und Xbox 360 Controller angestellt werden. Ich plane z.B. eine Robotersteuerung mit Hilfe des Joysticks und verändern der Modi anhand der Knöpfe.

Nun, was wären eure nächsten geplanten Projekte mit dem Controller? 🙂



, , , , , , ,


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!