Angetestet: Futuro Cube

Seite 2: Eigene Software entwickeln

Inhaltsverzeichnis

Wer möchte, kann auch eigene Spiele und Anwendungen für den Cube programmieren. Dafür steht Entwicklern das offizielle SDK kostenlos zur Verfügung. Hauptbestandteil des SDK ist eine Anwendung namens Rubik's Futuro Cube Suite. Sie ist sowohl für Windows, OS X und inzwischen auch für Linux verfügbar und dient in erster Linie zur Aktualisierung der Firmware. Über das Menü View > SDK Mode lässt sich aber ein erweiterter Modus freischalten, der einen Shell-Zugriff auf den Cube ermöglicht und auch einen Compiler für eigene Skripte bereitstellt.

Für die Programmierung unter Linux sind noch einige Python- und i386-Pakete nötig, sowie einige Einstellungen zur Rechtefreigabe. Dazu wird ein Benutzer der dialout-Gruppe hinzugefügt:

sudo usermod -aG dialout <username>

Danach ist eine erneute Ab- und Anmeldungen ans System notwendig:

sudo apt-get install python python-imaging
sudo apt-get install python-serial
sudo apt-get install python-wxgtk2.8
sudo apt-get install ia32-lib

Nun wird eine udev-Regel erstellt:

sudo sh -c 'echo SUBSYSTEM==\"tty\",
ATTRS{idVendor}==\"0483\",
ATTRS{idProduct}==\"a0a2\",
ENV{ID_MM_CANDIDATE}=\"0\"
> /etc/udev/rules.d/95-futurocube.rules'

Anschliessend kann man die Anwendung mit der Eingabe ./rubriks-futuro-cube starten.

Die Shell bietet eine umfangreiche Sammlung von Kommandos, mit denen man unter anderem Sounds abspielen und die RGB-LEDs des Cubes steuern kann. Darüber hinaus gibt es jede Menge Befehle, zur Verwaltung des Cubes und seiner Prozesse. Beispielsweise kann man sich mit dem appinfo-Kommando einen Überblick über die Speichernutzung verschaffen:

$>appinfo
Application info:

Flash size: 393216 bytes, available: 8% (20480 bytes)
Bootloader size: 40960 bytes
Application size: 249856 bytes
Script area size: 30720 bytes, start at 0x0804E800, end at 0x08055FFF
MyCube Script area size: 10240 bytes, start at 0x0804C000, end at 0x0804E7FF
Variables size: 40960 bytes
BootKey data size: 256 bytes.
NoInit data size: 2048 bytes.
Init data size: 3116 bytes.
UnInit data size: 59763 bytes.
RAM used: 65187/65536 bytes, 99% used.
RAM bootkey starts at: 0x20000000
RAM noinit starts at: 0x20000100
RAM init starts at: 0x20000900
RAM uninit starts: 0x20001530 bytes
RAM free for stack: 349 bytes
sdata: 0x20000900
edata: 0x2000152c
etext: 0x803c3d4
sbss: 0x20001530
ebss: 0x2000fea3

Der Befehl dir listet alle gespeicherten Audio-Dateien auf und mit dem play-Kommando kann man eine Audio-Datei im Hintergrund abspielen. Der Befehl q unterbricht die Sound-Ausgabe. Für den Shell-Zugriff ist die offizielle Suite nicht notwendig, denn die Cubes werden unter Windows, Mac OS X und Linux als serielle Geräte eingebunden (für Windows ist zusätzlich die Installation eines Treibers notwendig).

Man kann sich mit einem seriellen Monitor wie zum Beispiel screen oder PuTTY direkt mit einem Cube verbinden:

$ screen /dev/tty.usbmodem24321
echoon
$>pleds 4 3 255
__OK__

In der obigen Session wird zuerst das Kommando echoon an den Cube gesendet. Es muss blind getippt werden, denn ohne dieses Kommando sind die Ausgaben des Cubes erst einmal nicht zu sehen. Anschließend werden mit dem pleds-Befehl alle LEDs der Oberseite des Würfels auf weiß gesetzt. Die Shell unterstützt keine Skript-Programmierung. Trotzdem lässt sich mit den Bordmitteln schon einiges anstellen. Beispielsweise kann man den Cube leicht als audiovisuellen Alarm für eingehende E-Mails einsetzen.

Auch die Daten aller Sensoren sendet der Cube auf Wunsch kontinuierlich über die serielle Schnittstelle. Dazu ist lediglich das Kommando motion abzusetzen. Die Ausgabe der Daten erfolgt ähnlich wie bei GPS-Empfängern als komma-separierte Liste von Werten:

$MOT,-003,-249,0000,4,4,00,1,-,-,-,-,-*46
$MOT,-004,-250,-002,4,4,00,1,-,-,-,-,-*56
$MOT,-003,-250,-002,4,4,00,1,-,-,-,-,-*51
...

Auf dem eigenen Futuro-Cube-Channel auf Youtube sind einige Lernvideos zur Programmierung des Würfels verfügbar.