FlyStick — Umbauten
In der CAVE der TU Chemnitz, IWP wird dieses Eingabegerät verwendet,
aber auch an der POWERWALL sowie im benachbarten IWU (FhG).
Teuer gekauft, aber von überall werden Huddeleien gemeldet.
Handgerät
So sieht er aus. Ein Hohlstecker steckt an seinem Ende, damit der Akku nicht leer läuft.
An den fünf retroreflektierenden
(ansonsten gleichartigen) Kugeln wird mit Hilfe mehrerer Infrarot-Kameras
(mit IR-Scheinwerfern) die Lage des Flysticks im Raum ermittelt
(einige Bildverarbeitung erforderlich).
Für die beiden Knöpfe (einer oben, der andere an der Unterseite)
ist ein 869-MHz-Funksender eingebaut.
Es ist sogar ein Transceiver (also mit Empfänger),
so dass man damit eine störungsfreie, zuverlässige Datenübertragung realisieren kann,
oder auch ein Firmware-Update des enthaltenen Mikrocontrollers.
Und das ist der herausgefundene Schaltplan.
Schaltplan, mal schnell „disassembliert“
Der Grund für diese Untersuchung ist die unzuverlässige Übertragung der
Steuerkommandos.
Noch mehr stört, dass manchmal unkontrolliert Kommandos ausgeführt werden!
Dies scheint etwas von der Auslastung des WLANs im Raum,
vom Gebrauch von Bluetooth, Handys und Drahtlosmikrofonen abzuhängen.
Von der Herstellerfirma wurde keine Verbesserung in Aussicht gestellt.
Beim genauer Analyse des Schaltplans, der Signale und der
mechanischen Konstruktion fallen eine Menge Ungereimtheiten auf:
- Die Speisespannung beträgt 2,4 V (2
NiMH-Akkus
R3).
Die angegebene Mindestspannung des Funkmoduls beträgt jedoch 2,7 V.
Ein Glück also, dass es überhaupt funktioniert.
Und dann mit angezogener Handbremse.
- Die Antenne ist alles andere als 8 cm lang.
Eher 16 cm. Doppelt hält besser? Nein, ½ λ ist perfekte Fehlanpassung!
Außerdem verknotet sie sich im Innern des Aluminium-Rohrs.
Da sind 5 hübsche M3-Gewindestäbe an der Vorderseite,
die als Antenne geradezu einladen!
- Der Sender sendet ständig — auch ohne Tastendruck. Energieverschwendung!
Haben Sie schon mal den Einschalter bei Ihrer TV-Fernbedienung gesucht?
Und wie lange halten da die Batterien?
Bei manchen länger als der Fernseher.
- Der verwendete Mikrocontroller (AT89C51AC2) ist laut Datenblatt
für eine derartige Fernbedienung ebenfalls ungeeignet, mit einem Ruhestrom
von 350 µA.
Zum Vergleich: Ein geeigneter und viel billigerer Mikrocontroller
ATtiny2313 — gleichfalls von der Firma Atmel — verbraucht maximal 0,1 µA.
- Der Quarzoszillator (14,74 MHz) läuft durch,
also verbraucht der Mikrocontroller Betriebsstrom (nicht Ruhestrom)
von einigen mA.
- Vom Funkmodul wird nur der Sende-Teil verwendet, dadurch prinzipiell
keine gesicherte Übertragung möglich
- Das Funkmodul arbeitet am besten mit gleichspannungsfreien Signalen,
das sieht hier nicht danach aus.
Gesendet wir schlichtweg ein
RS-232-Signal.
- Die eingesetzte Zweifarb-Leuchtdiode kann nur einfarbig
angesteuert werden.
Sie ist auffallend schlecht (will sagen: letzter China-Dreck),
die LED-Chips sitzen extrem auffallend außerhalb der optischen Achse,
und die LED „schielt“.
Das ganze Gerät kostete sicherlich einige 100 €!
Hand aufs Herz, so etwas nenne ich Fehlkonstruktion!
Erste Umbaumaßnahme: Höhere Abstrahlungsleistung
Ohne die Firmware zu ändern oder den Mikrocontroller zu wechseln.
- 1 Akku mehr passt ja auch noch in das Rohr, also
3 x 1,2 V = 3,6 V, mehr Sendeleistung
- Antenne mit kurzem Draht an den längsten Gewindestab angeschlossen,
ergibt 24 cm Antennenlänge, also ¾ λ.
Auch eine Anpassung, wenn auch nicht ganz so gut wie ¼ λ.
Dazu müsste man das Sendemodul umdrehen.
Zweite Umbaumaßnahme: Einfaches Ladegerät
Mitgeliefert wird ein Standfuß und ein professionelles Ladegerät
Ansmann ACS110 traveller.
So weit, so gut.
Immer wieder kommt es vor,
dass das Ladegerät nicht fertig wird mit Laden und die Akkus zerbrät.
Das ist eben das Problem der Schnellladegeräte:
Volle und noch warme Akkus werden als leer erkannt und geladen,
bis sie glühen und kaputt gehen. Wirklich!!
Von der Brandgefahr ganz zu schweigen.
Ladegeräte, bei denen man die Akkus einlegen muss, haben dafür wenigstens
eine Temperaturüberwachung.
Hin wie her, der Flystick wird maximal 1 Stunde pro Tag benutzt und
minimal 23 Stunden pro Tag geladen. Wer braucht da einen Schnell-Lader?
Richtig: niemand.
Eine Konstantstromquelle samt Miniatur-Trafo passt in den Standfuß
und erspart obendrein die ewig störende
Wandwarze.
Mit 50 mA Ladestrom (viel weniger als ein Zehntel der Nennkapazität)
kann man keine Akkus totbrennen.
Zum Glück ist der Standfuß genügend dickwandig zum Basteln und bietet
genug Hohlraum für den Trafo.
Pardon, Kein Foto vorhanden
Beim Ersatz der Schaltung mit einem besseren Mikrocontroller würde ich
von Akkus zu Trockenbatterien umschwenken wollen, das ist letztlich
zuverlässiger.
Empfangsteil
Es verbleiben immer noch die gelegentlichen Fehl-Tastendrücke.
Obwohl es nun deutlich seltener passiert.
Was wohl die Empfangseinheit macht?
Wahrscheinlich einfach nur das Signal des Funkempfängers durchreichen.
Der Funkempfänger. Gespeist von einem Steckernentzteil.
Beim Anblick habe ich prompt die Hände über den Kopf zusammengeschlagen!
Zwei Mikrocontroller! Zwei gleiche Quarze.
Womöglich nur zur Baudraten-Konvertierung.
Und das ist der Schaltplan:
Schaltplan, mal schnell „disassembliert“
Die Schaltung ist derart trivial, dass diese keiner weiteren Erklärung bedarf.
Neubau
Da die vorhandenen FlySticks nicht für die Zeit des Umbaus abgezogen werden können,
wird hier auf Neubau gesetzt.
Mit NC-Fräsmaschinen sollte es keine Hürde sein, den Kopf nachzubauen.
Auf PC-Seite geht es stets per USB in den Rechner.
Das erspart Wandwarzen und ähnliche Stromversorgungsprobleme.
Das Gerät meldet sich schließlich als Joystick mit 2 Tasten und null Hebeln.
Unser Nachbau ist kürzer. drahtgebunden: An seinem Ende ist ein 4-poliger Binder-Stecker
(Typnummern Kupplung: 719-09-9765-30-04, Einbaustecker: 719-09-9764-70-04) für den USB-Anschluss.
Mechanisch wurde hier das Elektronikteil samt LED und Taster komplett in den verlängerten Plast-Kopf gesteckt.
Dadurch kann das Aluminium-Gehäuserohr per Zentralgewinde angeschraubt werden,
und die fummeligen radialen Schrauben des Originals entfallen.
drahtgebunden: Im Gehäuse ist genügend Platz für das reichlich lange Kabel zum Buchsenstopfen,
welches beim Eindrehen entsprechend verwunden im Innern zu liegen kommt.
drahtlos: Im Gehäuse ist Platz für 2 R3-Primärzellen, so wie im Original.
Da die Ruhestromaufnahme extrem gering ist, ist keine Lademöglichkeit notwendig
oder vorgesehen.
So ist der Stopfen frei von Kabeln und kann problemlos aufgeschraubt werden,
etwa zum Batteriewechsel.
drahtgebunden
Einfach zwei Joystick-Knöpfe und ein Joystick-zu-USB-Konverter.
Mal ganz einfach.
Der Konverter wurde bereits 1× in der Bastelkiste vorgefunden.
Ein weiterer wird mittels V-USB
und ATtiny44 aufgebaut.
Hier ist die Firmware.
Diese gibt sich als Joystick mit 2 Tasten und null Hebeln aus
und überträgt pro Report gerade mal 1 Byte mit sinnvollen 2 Bits.
Zumindest Windows XP kommt damit problemlos zurecht.
Ob es die VR-Software auch tut? - Ja, problemlos!
Leiterplatten-Bestückung als kabelgebundener HID-Joystick.
Die zusätzlichen Bauelemente sind 2 Serienwiderstände und 2 Dioden zur Speisespannungsreduktion
drahtlos
Kompletter Ersatz sowohl der Sende- als auch Empfangselektronik,
mit folgenden Eigenschaften:
- Verwendung des preisgünstigen Sende-Empfangs-Moduls
RFM12B-433-S,
für volle Sendeleistung bei 3,3 V und geringster Schlafstromaufnahme
- Verwendung des ATtiny44
als Mikrocontroller auf Sendeseite, ATmega8 auf Empfangsseite
(Vorteile des ATmega8: Firmware-Update via USB, mehr Platz im Flash-Speicher
für ZigBee- oder ZigBee-ähnliche Sensornetzwerk-Arbitrierung,
Beacon-Aussendung und -Repetierung)
- Verwendung von
V-USB
für USB-Anschluss (HID; seriell optional, dann USB für Stromversorgung, oder
FT232RL)
- Mehrere Sendekanäle einstellbar
(zur Vermeidung gegenseitiger Beeinflussung benachbarter VR-Labors)
- Multi-Master-Fähigkeit
(mehrere FlySticks können kollisionsfrei mit einem Empfänger benutzt werden)
- Mehrjähriger Batteriebetrieb (wie in TV-Fernbedienungen) aus 2 Zellen R3
- Ohne Steckernetzteil
- 100-prozentige Übertragungssicherheit durch Handshake-Verfahren
- Konfigurierbarkeit über HID-Feature-Requests

Schaltung Handgerät
Das Handgerät (der eigentliche FlyStick) bekommt immer ein und dieselbe
Leiterplatte.
Hier der
Schaltplan, das Layout
oben und
unten sowie die
Eagle-Quelle
(Einsicht).
Aufgebaut wird in 3 Bestückungsvarianten. Diese stehen im Schaltplan.
Die Anschlussvarianten hierzu sind:
| Variante | Ausführung/Anschlüsse | X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | X9 | D+ | D–
|
|---|
| A | Mit vorgefundenem USB-Joystick-Konverter (drahtgebunden) | - | - | - | - | - | GND | T1 zum Konv. | T2 zum Konv. | 5 V vom Konv. | - | -
|
|---|
| Am Joystick-Port (15-pol. SubD-Buchse) | - | - | - | - | - | Pin 4 | Pin 2 | Pin 7 | Pin 1 | - | -
|
| B | USB-HID-Joystick im Mikrocontroller (drahtgebunden) | - | 5 V von USB | - | - | - | GND | - | - | - | D+ | D–
|
|---|
| C | mit UHF-FM-Transceiver RFM12 (drahtlos) | - | 3-V-Batterie + | - | - | - | Batterie – | - | - | - | - | -
|
|---|
| B+C | Firmware programmieren | RESET | 3..5 V | SCK | MISO | MOSI | GND | - | - | - | - | -
|
|---|
Die Schaltung mit den zwei gegenüber liegenden Tasten passt in den FlyStick-Kopf

Schaltung „Empfänger“
Die
Schaltung
passt in das gern verwendete Reichelt-Kleingehäuse KS21.
Die Antenne wurde im Stegreif um die Schaltung herum gelegt (nicht berechnet!).
Hier ist das Layout
oben und
unten zu sehen.
Die aufgebaute Schaltung kommt mit nur wenigen Bauelementen aus
Hier habe ich, um Probleme mit dem USB-Bootloader bei hochgezogenem OSCCAL zu umgehen,
den 12-MHz-Quarz bestückt.
Firmware
Welch ein Glück, Variante A braucht keine Firmware,
der vorgefundene Mikrocontroller ist bereits fertig programmiert.
Für die übrigen Varianten wird Firmware benötigt.
Firmware Handgerät mit USB-Kabel (Variante B)
Firmware Handgerät mit UHF-FM-Transceiver (Variante C)
In Arbeit. Vorüberlegungen:
- Auf Tastendruck muss Mikrocontroller aufwachen, den Empfänger aktivieren und den Äther abhören
- Findet er nach 1 s auf allen (4) zu suchenden FM-Kanälen keinen „Beacon“, rote LED blinken lassen (Verbindungsfehler), sonst
- In einem festgelegten (für Neugeräte reservierten) Zeitschlitz nach dem Beacon sendet es den Gerätekode und den Tastenstatus
- In einem für den Host reservierten Zeitschlitz wird die Bestätigung gelesen. Wenn OK dann grüne LED blinken lassen, alles OK, sonst
- 1 s lang wiederholen bis OK oder nicht OK (Sendezeitschlitz-Nummer wird stochastisch ausgewählt.)
- Auch beim Loslassen der Taste wird ein Ereignis abgesetzt; ansonsten schlafen Mikrocontroller und Transceiver
Tatsächliche Implementierung:
Wegen der spürbaren Latenzzeit und der geringen effektiven Datenrate wurde das
Beacon-Konzept verworfen, und der FlyStick sendet bei Tastendruck einfach drauflos.
Jedem der drei FlySticks und jedem der drei Empfänger wird je eine von 12
Frequenzen im 433-MHz-Band zugewiesen, nichts weiter.
Das Acknowledge kommt vom Empfänger unmittelbar danach.
Den RFM12
in Betrieb zu nehmen erwies sich als recht kompliziert,
da das Datenblatt keine vernünftige Auskunft über das Funktionsprinzip
und das how-to-use gibt.
Daher kursieren im Netz jede Menge Halbwahrheiten.
Ich habe deshalb etwas auf der o.a. Webseite ergänzt.
Firmware „Empfänger“ (Variante C)
In Arbeit. Vorüberlegungen
- Gerät kann mehrere FlySticks empfangen; Selektion bspw. per Konfiguration, oder eben 3 Joystick-Collections bereitstellen!
- Gerät kann als Master (sendet Beacon) oder Repeater (wiederholt Beacon) fungieren,
in letzterer Funktion vergößert er die Reichweite des Sensornetzes — und empfängt trotzdem die bis zu 3 FlySticks
- Frequenz-Hopping, wie und wann?
- Solange nicht im USB-Schlafmodus sendet das Gerät ständig Beacons (bspw. 125 Hz = 1/8 USB-SOF-Takt)
oder wiederholt diese in einem festen Zeitschlitz direkt nach dem empfangenen Beacon;
ab und zu muss der Repeater aussetzen um zu horchen, ob jemand anderes schon repeatet, wenn ja, dann nächstes Repeat-Level (?)
- Im Zeitschlitz für Anmeldung von Neugeräten horchen
- Bei Empfang USB-Interrupt-IN entsprechend setzen
Einsatzerfahrungen
In Arbeit.
Bedrahtete FlySticks
Die zwei bedrahteten Geräte funktionieren erwartungsgemäß störungsfrei.
Funk-Flysticks
Bei den drei Funk-FlySticks bin ich bereits bei der
Schaltplanerstellung
in eine böse Falle getappt:
Beim USI des ATtiny44
ist SDO auf MISO
und SDI auf MOSI,
unabhängig ob SPI-Master
oder -Slave.
Somit habe ich die falschen Leitungen für die Nutzung von USI
angeschlossen, und damit muss das SPI-Protokoll per Software
implementiert werden, was so nicht beabsichtigt war.
Die Ruhestromaufnahme liegt bei 0,7 µA.
Die zwei R3-Zellen mit angenommenen 500 mAh Kapazität halten somit
rechnerisch 70 Jahre; ein Ausschalter erübrigt sich wie geplant.
Beim Senden liegt die Stromaufnahme bei 30 mA,
in den Sendepausen bei 3 mA
(zz. laufen beide Oszillatoren weiter, könnte man noch deutlich reduzieren).
Mitten in der Entwicklungsphase streikte der ATtiny44 vollends.
Dies lag schließlich daran, dass der RFM12 ein Reset-Kommando beim Programmieren
abbekommen haben muss und daraufhin
RES
permanent nach LOW zog.
Man sollte es also vermeiden, die beiden Reset-Eingänge zu verbinden,
wenn man noch genügend Pins frei hat.
Schließlich wurden VDI,
IRQ
und FFIT gar nicht gebraucht.
Ausblick
Es bleibt bei der infrarot-optischen Lageerkennung des FlySticks im Raum.
Dies ist aber schon der nächste Wackelkandidat …
Next Generation: Kompletter Neubau (Überlegung)
Bei den V-USB-Projekten
ist mir AetherSense aufgefallen.
Mit Ultraschall habe ich ja auch schon mal gearbeitet,
und dieser erlaubt einfache Entfernungsmessungen in cm-Genauigkeit.
Genau das richtige für einen Next-Generation-FlyStick.
Die Positionserkennung erfolgt hierbei durch Aussenden von kodierten
Ultrascall-Signalen am FlyStick, den Empfang an mindestens 3 Ecken der Projektionswand
und der Berechnung durch Laufzeit und Triangulation.
Der Wandler am Handgerät sollte möglichst Kugelcharakteristik haben.
Zur Schallgeschwindigkeitsbestimmung wird die Lufttemperatur gemessen.
Vielleicht auch andersherum, zur Energieeinsparung im Handgerät.
Dies erfordert allerdings rechentechnisch aufwändige Signaltrennung.
Oder Zeitmultiplex und Bewegungsprädiktion mit den Beschleunigungssensoren
für angestrebte 100 Messwerte pro Sekunde.
Die Lageerkennung erfolgt wie beim WII-Eingabegerät
mit Beschleunigungssensoren
sowie einem Magnetkompass.
Zugegeben, der Kompass ist das schwächste Glied der Berechnungskette,
da er gern durch Fremdfelder verfälscht wird.
Eine Alternative wären mehrere Ultraschall-Sender (bzw. Empfänger) am FlyStick.
Um Problemen mit Funknetzen aus dem Weg zu gehen ist eine Infrarotübertragung
der Synchronisations- und Bediensignale angedacht.
Allerdings beißt sich das mit anderen Infrarot-Fernbedienungen geben.
Im VR-Bereich ist die Verwendung von Infrarot zur Fernsteuerung unüblich.
In Stichpunkten die Eigenschaften und Vorteile des Systems:
- Kompaktes, Energie sparendes, schnurloses oder drahtgebundenes (batterieloses) Handgerät
- Kleine, unauffällige Ultraschall-Mikrofone an den 4 Ecken der VR-Fläche oder den 8 Ecken des VR-Raumes, kombiniert mit IR-Empfängern
- Komplett USB-basiert, Verkabelung mit USB-Steckern (und -Hubs?), Geräte vereinzelbar
- Handgerät kompatibel zu WII
Alles in allem haben wir es mit einem
Local Positioning System (LPS) zu tun.
Henrik Haftmann, letzte Änderung:
28.04.2012