Mit Hilfe des Programms tttool lassen sich, zwar mit etwas Aufwand aber auf recht einfache Art und Weise eigene Produkte für den tiptoi-Stift von Ravensburger erstellen. Der Artikel bietet einen ersten Überblick und eine Installationsanleitung für Ubuntu-User…
Was ist dieses tiptoi-Ding?
tiptoi-Hacking
Zunächst einmal für die, die das Gerät nicht kennen: Der tiptoi ist ein Stift von Ravensburger, der hauptsächlich für den Einsatz im Kinderzimmer konzipiert ist. Dieser Stift verfügt, vereinfacht gesagt, über ein optisches Lesegerät, einen Lautsprecher und einen Flashspeicher.
Mit Hilfe des Lesegeräts in der Spitze des Stiftes können Punktraster (OIDs = optical IDs) aus speziellen Büchern und von speziellen Objekten (z.B. Tierfiguren) abgelesen werden. Mit bloßem Auge sind diese Punktraster dabei kaum zu sehen und in den Büchern beispielsweise über Bilder gelegt.
Tippt man also in einem Buch auf einen Vogel, der auf einem Baum sitzt, zwitschert es aus dem Lautsprecher. Oder es kommt eine Erklärung, welcher Vogel das ist und wie er lebt. Oder das Lied „Alle Vögel sind schon da“. Oder es könnte auch „This is a bird“ zu hören sein, sofern es sich um ein Buch für den ersten Kontakt mit der englischen Sprache handelt.
Um den Stift mit dem entsprechenden Buch oder Objekt benutzen zu können, muss die Inhaltsdatei (.gme
-Datei) auf den Flash-Speicher des Stiftes kopiert werden. Diese Datei enthält alle OIDs, alle Sounds und die Zuordnung dazwischen.
Außerdem kann auch etwas Programmlogik enthalten sein, denn es gibt auch Brettspiele für den tiptoi und in den Büchern sind oft auch kleinere Spielinhalte zu finden.
Und wie jetzt hacken?
Gemeint ist natürlich, eigene Inhalte für den tiptoi-Stift zu erstellen. Dazu sind zwei Teile notwendig:
- Das Programm erstellen, also die
.gme
-Datei. Es muss natürlich die Datei für das Produkt erzeugt werden, und somit womöglich auch Soundfiles.
- Das Drucken der OID. Die zu der .gme-Datei gehörenden OIDs müssen erstellt, gedruckt und ggfs. auf das Objekt (z.B. ein Plastiktierchen) aufgeklebt werden.
Für beides kann das Programm tttool (Open Source) des Karlsruher Entropia e.V. verwendet werden. Zunächst muss die Quelldatei im YAML-Format erzeugt werden. Darin steht was auszuführen ist, wenn eine bestimmte OID gescannt wurde. Diese .yaml
-Datei kann dann zu einer .gme
-Datei umgewandelt werden.
Eigene Produkte: „Wie geht es dir heute?“ und Duplo-Giraffe mit OID
Aus der .yaml
-Datei können mit dem Tool außerdem die Anschalt-OID und alle übrigen OIDs extrahiert und dafür jeweils eine Grafikdatei erzeugt werden. Diese Grafiken, die Punkraster, müssen dann „nur noch“ ausgedruckt werden.
Das kann mitunter zum kniffligsten Arbeitsschritt werden, denn das Punktraster darf nicht verzerrt werden und es muss natürlich mit höchstmöglicher Auflösung bestmöglich auf Papier gebracht werden. Je nach Druckermodell muss man etwas mit den Einstellungen experimentieren – oder der eigene Drucker ist vielleicht sogar ungeeignet.
Bevor ihr jetzt loslegt, beachtet bitte den obligatorischen Hinweis, dass ihr beim Hacken das Risiko eines Defektes selbst tragt!
Nähere Informationen zum Funktionsumfang und zur Bedienung bietet die deutschsprachige Seite zum Projekt. Dort sind im Übrigen auch die Informationen zur Installation zu finden. Ich habe sie im Folgenden speziell aus der Ubuntu-Sicht und zum Teil etwas ausführlicher aufgeführt:
tttools kompilieren
Um tttools unter Linux benutzen zu können, muss man es selbst aus den aktuellen Quellen bauen. Ein fertiger Build liegt derzeit nur für Windows vor. Die Kompilation ist allerdings nicht sonderlich aufwendig. Etwas mehr Aufwand entsteht natürlich, wenn man das Programm auf einem separaten System (z.B. eine speziell dafür eingerichtete Virtual Machine) durchführen möchte, um nicht jede Menge Pakete installiert zu haben, die man im Anschluss nicht mehr benötigt.
Um das Programm zu bauen, wird auf einem frisch aufgesetzten Ubuntu 15.10 zunächst einmal ein Git-Client benötigt, mit dessen Hilfe die aktuellen Quellen aus dem Projekt-Repository bei GitHub bezogen werden können:
sudo apt-get install git
Mit dem Git-Kommando clone
werden dann die Quellen heruntergeladen:
cd ~
git clone https://github.com/entropia/tip-toi-reveng.git tttool
cd tttool
Da das Programm in der Sprache Haskell entwickelt wurde, muss natürlich die Haskell-Plattform installiert werden (bei einem „nackten“ 15.10 bedeutet das einen Download von ca. 70MB und einer Mehrbelegung auf der HDD von rund 700MB):
sudo apt-get install haskell-platform
Mit Hilfe des Haskell-Tools cabal können dann ganz einfach die Projekt-Abhängigkeiten installiert werden:
cabal update
cabal install --only-dependencies
Bei dem zweiten dieser beiden Befehle muss man zwingend in dem Verzeichnis stehen, in das man die tttool-Quellen heruntergeladen hat – lt. o.g. Kommando also das tttool
-Verzeichnis.
Außerdem wird es bei diesem Aufruf vermutlich zu folgender Fehlermeldung kommen:
cabal: The following packages are likely to be broken by the reinstalls:
network-uri-2.6.0.3
HTTP-4000.2.20
Use --force-reinstalls if you want to install anyway.
Das heißt der Befehl muss einfach noch einmal mit dem genannten Parameter wiederholt werden. Benutzt man kein temporäres Build-System, sollte man vorher aber eine Sandbox initialisieren, damit die Pakete darin installiert werden (und somit die Pakete global nicht in Mitleidenschaft geraten). Also erst:
cabal sandbox init
Und anschließend dann:
cabal install --only-dependencies --force-reinstalls
Nun kann der eigentliche Build – der Kompilierungslauf – gestartet werden:
cabal install --bindir=.
Ist der Buildlauf erfolgreich durchgelaufen, findet sich im aktuellen Verzeichnis dann das tttool
-Binary (ca. 14 MB groß). Das kann nun auf einen anderen Rechner (mit demselben Ubuntu-Release am besten) kopiert werden.
Zusätzliche Pakete installieren
Zusätzlich wird ggfs. das Paket sox
(Sound Exchange) benötigt. Grundsätzlich meldet das Tool aber, wenn ein benötigtes Paket fehlt.
Wer sich, z.B. bei den ersten Tests, nicht die Mühe machen möchte, Soundfiles zu produzieren, sollte außerdem die folgenden beiden Pakete installieren:
libttspico-utils
(SVOX Pico Software Speech Synthesizer)
vorbis-tools
(Werkzeuge für die Verarbeitung von ogg-Sounddateien)
Damit kann man in seinen YAML-Quelldateien einfach einen Text hinterlegen, der dann per Sprachausgabe generiert wird. Natürlich werden auch hierbei Sounddateien produziert, das funktioniert dann aber eben ohne weiteren Aufwand.
Selbstverständlich müssen diese Pakete auf dem System installiert werden, auf dem tttool ausgeführt werden soll, also nicht unbedingt dort wo kompiliert wurde!
Ein Tipp für den OID-Druck
Wie schon erwähnt, kann das Ausdrucken der Codes einige Anläufe kosten. In meinem Fall ging es noch nicht einmal darum, dass ich Codes über Bilder legen wollte. Mir reicht es eigentlich (erst einmal), die Punktraster auf dem blanken Papier zu haben. Trotzdem hatte ich erst einmal meine Schwierigkeiten. Mit dem Versuchsdrucker hatte ich nicht die Möglichkeit, in 1200 DPI zu drucken. 600 DPI waren das Maximum, und es das Ergebnis konnte der Stift leider erst einmal nicht lesen. Das Erhöhen des Kontrastes funktionierte leider auch nicht.
Der entscheidende Punkt für mich war letztendlich, die Codes mit doppelt so großen Pixeln zu erzeugen. Das geht, indem man dem oid-code
-Aufruf einen entsprechenden Parameter anhängt:
tttool oid-code -d 600d tester.yaml
Das d
bei der Auflösung (hier 600 DPI) löst die Verdoppelung der Pixel aus. Genauso wäre natürlich auch 1200d
möglich.
Und wozu jetzt das Ganze?!
Denkbar sind unzählige großartige Anwendungen:
- Personalisierte Produkte („Hey Kevin Ben Liam, lass uns zusammen spielen!„).
- Eigene Figuren mit Soundfiles verknüpfen (z.B. Tierfiguren von Playmobil, Lego Duplo o.ä.).
- Eigene Brettspiele erstellen.
- Exotischere Ideen: Ein Bastler namens Pronwan hat beispielsweise den ersten Teil von Monkey Island 3 als… „Point and Tip“-Adventure umgesetzt. Es gibt aber auch schon Sequencer, Taschenrechner, …
- Eine tiptoi-Schnitzeljagd für den Kindergeburtstag oder eine aufgemotzte Geocaching-Tour. Dabei müssen an den Stationen natürlich verschiedene Rätsel gelöst werden.
Schaut euch einfach mal auf den o.g. Seiten rund um das Projekt inspirieren.
So, sollte mich jemand suchen, ich will mal eine eigene Schnitzeljagd in Angriff nehmen…