BlockWerk Dokumentation
🕹️

Phone Controller

Connectivity

PhoneController ist ein Quellen-Block, der jedes Smartphone in einen drahtlosen Joystick mit zusätzlichem, unabhängigem Gierregler (Yaw) verwandelt. Wird der Block auf der Leinwand platziert, erzeugt er einen Kopplungs-QR-Code; nach dem Scannen öffnet sich auf dem Telefon eine Controller-Oberfläche mit einem großflächigen Touch-Joystick und einem horizontalen Yaw-Schieberegler darunter. Das Smartphone streamt normalisierte X/Y/Yaw-Steuerwerte (−1…+1) mit ~30 Hz über denselben Peer-to-Peer-WebRTC-Kanal in die Simulation, der auch vom RemoteSensor-Block genutzt wird — kabellos und ohne App-Installation.

Für das Joystick-Feld stehen auf dem Telefon zwei Steuermodi zur Verfügung (der Yaw-Regler verhält sich in beiden identisch):

  • Touch (Standard): Daumenbedienung auf dem On-Screen-Joystick. Beim Loslassen federt der Regler in die Mitte zurück.
  • Tilt: Nutzt die Lagesensoren des Smartphones (DeviceOrientation). Neigen nach links/rechts steuert X, Neigen nach vorne/hinten steuert Y. Die neutrale Position wird beim Aktivieren des Modus kalibriert; durch Antippen der Fläche kann jederzeit neu zentriert werden.

Der Yaw-Streifen ist ein eigenständiges horizontales Bedienelement unterhalb des Pads — nach links/rechts ziehen, beim Loslassen federt er auf 0 zurück. Er ist unabhängig vom Touch- oder Tilt-Modus stets aktiv.

Verwenden Sie diesen Block für interaktive Demonstrationen, bei denen eine Mausbedienung unzureichend ist: Steuerung einer simulierten Drohne, Lenkung eines Fahrzeugmodells oder manuelle Vorgabe von Sollwerten in Regelkreisen. Seine X/Y-Ausgangsports tragen identische Bezeichner wie jene von Joystick2D, wodurch er überall als drahtloser 1:1-Ersatz fungieren kann — einschließlich der Vorlage Fly the Quadcopter (Phone).

In BlockWerk simulieren

Interaktive Sandbox direkt im Browser — keine Installation, WebAssembly-Engine.

In BlockWerk simulieren →

Ein- & Ausgänge

Direction ID Label Typ Status
← Out x X number Output
← Out y Y number Output
← Out yaw Yaw number Output

Parameter

Parameter Label Typ Standardwert Beschreibung
playoutDelay Playout Delay (ms) number 80 Network jitter buffer. Lower = more responsive control, higher = smoother signal on flaky connections.
interpolation Interpolation select linear How to reconstruct the control signal between received joystick packets.
outputLabels Output Labels vector x,y,yaw

Anwendungsbeispiele

Smartphone-Joystick — Lage-Demo

Laden Sie die integrierte Vorlage Phone Joystick — Attitude Demo (aus dem Block-Beispielmenü). Ihr Daumen steuert die Fluglage eines simulierten Quadcopters: X dient als Roll-Sollwert, Y als Nick-Sollwert (Pitch), jeweils moduliert durch eine Lagedynamik 2. Ordnung und auf einer 3D-Kardanaufhängung (Gimbal) visualisiert:

PhoneController ──► [X] ──► Gain(30) ──► 2nd Order System ──► Gimbal3D [roll]
                ──► [Y] ──► Gain(30) ──► 2nd Order System ──► Gimbal3D [pitch]

Scannen Sie den QR-Code, tippen Sie auf Grab Control, starten Sie die Simulation — die Drohne reagiert direkt auf Ihren Daumen.

Die Quadcopter-Vorlage vollständig drahtlos steuern

Die Vorlage Fly the Quadcopter (Phone) (Beispielmenü → Regelungssysteme) verbindet alle drei Ausgänge — x/y mit den Roll-/Nick-PID-Regelkreisen (über ein Gain-Element, analog zum internen Faktor von Joystick2D) und yaw direkt mit dem Gier-PID-Regler — und steuert die komplette 3-Achs-Regelung samt Motormischer und 3D-Gimbal an. Zusätzliche Schieberegler auf der Leinwand entfallen.

Manuelle Sollwertvorgabe für einen PID-Regelkreis

PhoneController ──► [Y] ──► Gain ──► (setpoint) Subtraction ──► PIDController → plant

Hinweise & Best Practices

  • Quellenblock: Alle drei Kanäle sind Ausgangsports (rechte Seite). X ist nach rechts positiv, Y nach vorne/oben positiv (Joystick nach oben drücken liefert +1), Yaw ist nach rechts positiv.
  • Feste 30-Hz-Übertragung: Das Smartphone sendet kontinuierlich — auch in der Ruheposition —, um den Puffer aktiv und die Latenzschätzung stabil zu halten.
  • Totzone: Eine kleine Totzone (±0,02) auf dem Smartphone garantiert, dass ein ruhender Daumen exakt den Wert 0 liefert.
  • Simulation wartet auf Kopplung: Wie bei allen Echtzeit-Hardwareblöcken wird der Simulationsstart angehalten, bis das Smartphone gekoppelt ist und die ersten Datenpakete eingetroffen sind.
  • WebRTC erforderlich: Smartphone und Desktop benötigen Internetzugang für das PeerJS-Signalisierungs-Handshake. Eigene PeerJS-Server werden über dieselben localStorage-Schlüssel wie bei RemoteSensor unterstützt (blockwerk_peer_host / blockwerk_peer_port / blockwerk_peer_path / blockwerk_peer_secure).
  • Ein Controller pro Blockdiagramm: Die Kanäle X/Y/Yaw sind global (remote:joy.x / remote:joy.y / remote:joy.z); zwei PhoneController-Blöcke würden dieselben Werte empfangen.
  • Ausgangswerte im getrennten Zustand: Alle drei Ports halten den Wert 0, bis das Telefon verbunden ist und Daten übermittelt.

Verwandte Blöcke

  • RemoteSensor: Beschleunigungsmesser, Gyroskop, Magnetometer, Barometer und GPS des Telefons anstelle von Steuerhebeln streamen.
  • ExternalInput: Schlanke Quelle für manuell injizierte oder skriptbasierte Zahlenwerte.
  • Gimbal3D: 3D-Lagevisualisierung — das ideale Ziel für Demonstrationen dieses Blocks.