Physical Computing with Drawn, Organic Electronics

DIY Gamepad

Mit den 10 Touch-Inputs die uns auf unserem ESP zur Verfügung stehen könnte man einen interaktiv erstellbares Gamepad bauen. Die Nutzer können sich ihre 10 Knöpfe frei auf ein Blatt Papier malen und dort beliebig verteilen (das Layout und die Größe der Knöpfe ist so frei wählbar). Diese Knöpfe kann dann der ESP interpretieren und entsprechende Signale an z.B. einen PC senden (Über WLAN/Bluetooth/USB). Der PC erkennt den Mikrocomputer dann als normales Gamepad/Controller.

Gamepad: Vorderseite
Gamepad: Rückseite mit "Circuits"

Der Nutzen eines solchen Gamepads ist natürlich nur beschränkt da Papier wohl nicht das beste Material für ein Gamepad darstellt (nutzt sich extrem schnell ab / quasi kein haptisches Feedback). Auch scheint die Leitfähigkeit von Graphit nur beschränkt zu sein weshalb Knöpfe sehr nah am Inputkabel des ESP platziert sein müssen damit dieser noch einen Input ermitteln kann. Unter anbetrachtet dieser Umstände sollte vielleicht auf ein anderes Material zurückgegriffen werden, hierzu ist mir aber zum Zeitpunkt des Schreibens noch nichts besseres eingefallen.

Update

Anstelle Papier und Graphit zu benutzen kam ich nach rücksprache mit Kommilitonen auf die Idee für meinen Controller lieber Pappe und Alufolie zu nutzen. Folgendes Konzept wurde erdacht:

Konzept Cube Controller

Der Controller besteht aus einem Würfel aus Pappe in dessen Mitte sich der Esp befindet. Die Kontakte werden durch die Wände des Würfels durchgesteckt und von aussen zum Komfor mit Alufolie verkleidet. 8 Knöpfe sollen zur Verfügung stehen und der Grafik entsprechend um den Würfel verteilt sein.
Ein solcher Controller ist zum spielen natürlich eigentlich eher unhandlich aber es könnte dennoch interessant sein damit zu spielen. Die Herausforderung sollte dann nicht das Spiel sein sondern eben das Eingabegerät also der Controller.

Konzept Cube Controller
Konzept Button-Verteilung

Umsetzung

Zunächst wurde eine Sketch geschrieben damit sich der ESP wie ein Bluetooth-Controller verhält. Dazu wurden folgende Repositories als Vorbild verwendet: espjoy und ESP32-BLE-Gamepad. Da ich eine Aufteilung des Codes in mehrere Dateien vermeiden wollte habe ich meinen gesamten Code in eine einzige Sketch gepackt. Vier der 8 Knöpfe verhalten sich in meinem Controller als D-pad (Steuerkreuz). Die anderen vier Knöpfe sind Aktionsknöpfe.

Entsprchend dem Konzept wurde ein Prototyp angelegt:

Würfel Schablone einzeichen
Nach dem ausschneiden
Esp mit weichem Material fixieren
ESP im Controller

Der Controller wurde wie geplant von aussen mit Alufolie-Knöpfen versehen

Fertiger Controller

Test

Windows präsentiert sich mein Controller als "Custom Controller" und kann auch einfach über Bluetooth gekoppelt und verbunden werden.

Fertiger Controller
Fertiger Controller

Um die Controller-Funktionalität zu testen wurde joy.cpl aufgerufen. Hier lassen sich angschlossene Controller überprüfen. Die zwei Knöpfe an der Oberseite entsprechen einer Eingabe von Links und Rechts auf dem Steuerkreuz. Die zwei auf der linken Seite Oben und Unen auf dem Steuerkreuz. Die anderen 4 Knöpfe entsprchen den generischen Knöpfen 1, 2, 3, 4. Werden auf dem Steuerkreuz zwei Richtungstasten gleichzeitig gedrückt also z.B. Oben und Rechts ergibt sich die Richtung Oben-Rechts. Folgendes Video zeigt die Funktionalität:

Im Video werden noch 8 Knöpfe angezeigt dies wurde inzwischen korrigiert und es weden Korrekterweise nuch noch 4 angezeigt:

joy.cpl

Probleme

Leider musste ich feststellen, dass sich wirkliche Spiele nicht ohne weiteres mit meinem Controller spielen lassen. Dieser wird zwar von Windows erkannt aber praktisch von keinem Spiel unterstützt. Die meisten Spiele unterstützen eine Eingabe über die Xinput-Schnittstelle (XBox-Controller). Ein Xinput-Controller kann z.B. über Steam simuliert werden. Auch mein Controller wird von Steam erkannt (siehe linkes Bild) auf diesem stehen wie geplant nur insgesamt 8 Knöpfe zur Verfügung. Diese 8 Knöpfe reichen aber nicht aus um einen vollen Xinput-Controller zu belegen (siehe rechtes Bild) und das hat zur folge das sich mein Controller leider nicht in Steam benutzen lässt. Aus diesem Grund konnte ich den Controller bisher auch noch nicht zum spielen benutzen.

Ebenfalls ist im linken Bild zu erkennen, dass der Controller unter dem merkwürdigen Namen "0-Achse 8-Taste Gerät mit Mehrwegschalter" gelistet wird. Dieser Name lässt sich nicht ohne weiteres ändern da er von der Bluetooth Vendor ID und anderen IDs abhängig ist. Eine Vendor ID muss gekauft werden weshalb ich für meinen Controller einfach irgendeine verwendet habe.

Steam Controller Settings
Button Mapping

Vielleicht kann der Controller mithilfe von anderen Programmen genutzt werden. Auch ein Mapping des Controllers auf Tastatureingaben wärde denkbar. Im Angesicht der bisher aufgewendeten Zeit und der erzielten Ergebnisse wurden diese Lösungen nicht mehr weiter verfolgt.