Bei einer Suchaktion ist mir mein alter PS3-Controller wieder in die Hände gefallen, mit dem ich meinen Buggy gebaut hatte. Damals hatte ich mein Pairing-Problem mit Bluetooth umschifft und stattdessen eine USB-Kabelanbindung verwendet. Mit dem ESP32 hätte ich eigentlich wieder Bluetooth zur Verfügung, daher ist es Zeit wieder einen neuen Versuch zu starten. Auch fürs Debug-Logging wäre es schön, wenn über Bluetooth ohne USB-Kabel gearbeitet werden könnte.
Projekt: ESP32 Bluetooth Basics
Kontakt: Boris Dirnfeldner
Link: – eigenes Projekt –
Ziel:
Es soll für ESP32-basierende Projekte das Bluetooth-Modul verfügbar gemacht werden. Als unmittelbare Features will ich den PS3-Controller per Bluetooth verwenden können und das Debug-Logging über Bluetooth verfügbar machen.
Konzept:
Der ESP32 hat ja eigentlich ein recht ordentliches Bluetooth-Modul eingebaut (bisher ungenutzt). Dafür gibt es bereits fertige Libs, die unter Arduino verwendbar sind und recht einfache Einbindung versprechen.
Debug-Logging:
An sich ist das ein No-Brainer. Die Lib einbinden (ESPSoftwareSerial), eine Instanz erzeugen und wie Serial als Ausgabe nutzen. Das Teil hat lediglich einen beachtlichen Speicherhunger, so dass die Standardeinstellungen zum Partition-Schema nicht mehr nutzbar sind. Wenn man der App aber mehr Platz zugesteht (Huge App/ 3MB) dann ist das wirklich so einfach. Ob die Lib so riesig ist oder Bluetooth einfach den Platz braucht habe ich nicht nachgeprüft, da ich ohnehin früher oder später auf diese Konfiguration hätte wechseln müssen und das Interesse daran erst mal eher akademisch ist. Das Ganze habe ich auch gut in meine Basisumgebung integrieren können, so dass ich das für alle ESP-basierenden Programme gut verwenden kann. Der ESP meldet sich als Bluetooth-Serial-Gerät und kann z.B. am Handy per App (z.B. Serial Bluetooth Terminal) als Debug-Hilfe ohne bauliche Änderung verwendet werden. Bei manchen schnellen Tests hätte ich mir das schon viel früher gewünscht.
PS3 Bluetooth Controller:
Der Controller liegt bei mir schon länger rum. Ursprünglich hatte ich damit meinen Buggy gelenkt, allerdings kabelgebunden. Da mein Hexapod auch wieder einen Controller nutzt (PS2 mit Funkdongle) und Probleme macht (Funkdongle hat manchmal Verbindungsverluste und ist groß) wäre eine reine Funklösung schon schön. Auch hat der PS2-Controller auf den Analog-Sticks deutliche Totpunkte, die am PS3-Controller weniger ausgeprägt waren.
Auch hier gibt es bereits ordentliche Libs, wobei ich mich für ESP32-PS3 entschieden habe. Von der Anbindung auch einfach und mit den Beispiel-Programmen auch toll dokumentiert. Und es hat mir endlich erklärt warum ich damals damit nicht weitergekommen bin. Die Playstation-Controller verbinden sich nicht wie ein normales Bluetooth-Gerät, sondern verlangen ein kabelgebundenes Pairing und akzeptieren dann auch nur Verbindung mit der dabei übergebenen MAC-Adresse. Zum Glück findet sich ein entsprechendes Tool für diesen Vorgang (SixaxisPairTool). Damit kann ich sowohl die aktuelle MAC auslesen oder auch neu setzen. Und damit funktioniert auch die Anbindung an den ESP32 schon fast zu einfach. Das Beispielprogramm zeigt mir, das ich auf alles Knöpfe und Knüppel Zugriff habe und auch die Spieler-ID korrekt setzen kann. Akkustand gibt es auch gemeldet, lediglich der Lage- oder Beschleunigungssensor scheint nix zu liefern. Ob der Controller überhaupt einen hat weiß ich aber auch nicht. Das Teil wird auf jeden Fall auch in meine Basis-Library integriert, dann kann auch mein Hexapod ab sofort auch ohne Dongle arbeiten.
Fazit:
Bluetooth war ein wichtiger Schritt vorwärts, zumal der ESP32 bei mir derzeit das Mittel für praktisch alle Projekte ist (wenn es kein Raspberry oder mehr sein muss). Es gibt hier schon recht ordentliche Lösungen die auch recht einfach gehalten sind, gerade weil die ESP-eigene Umgebung doch recht komplex ist (wenn auch leistungsfähiger). Ich schätze es aber, wenn ich durch das Arduino-Konzept einfach Zeit und Mühen spare. Und derzeit gibt es keine zwingenden Gründe hier eine Umstellung zu machen.
BTW: Bei der Gelegenheit habe ich mir noch einen PS4-Controller bestellt. In der Theorie geht der auch, hat aber zusätzlich ein Touchpad und eine Mono-Soundausgabe. Ob das klappt ist aber ein eigenes Mini-Projekt und Thema eines anderen Artikels.
To be continued….