Phone Controller
ConnectivityPhoneController is een bron-blok dat elke smartphone verandert in een draadloze joystick met een onafhankelijke gierregelaar (yaw dial). Zodra het blok op het canvas wordt geplaatst, toont het een koppelings-QR-code; na het scannen opent zich op de telefoon een controllerpagina met een grote virtuele joystick en een horizontale yaw-schuifbalk daaronder. De telefoon streamt genormaliseerde X/Y/Yaw-besturingswaarden (−1…+1) met ~30 Hz naar de simulatie via hetzelfde peer-to-peer WebRTC-kanaal dat door het RemoteSensor-blok wordt gebruikt — zonder kabels of app-installatie.
Er zijn twee besturingsmodi beschikbaar voor het joystickpad op de telefoon (de yaw-strook werkt in beide modi hetzelfde):
- Touch (standaard): duim op het virtuele joystickpad. Loslaten veert terug naar het midden.
- Tilt: gebruikt de oriëntatiesensoren van de telefoon (DeviceOrientation). Naar links/rechts kantelen stuurt X aan, naar voren/achteren kantelen stuurt Y aan. De neutrale stand wordt gekalibreerd bij het activeren van de modus; tik op het pad om op elk moment opnieuw te centreren.
De yaw-strook is een afzonderlijke horizontale sleepregelaar onder het pad — sleep naar links/rechts, laat los om terug te veren naar 0. Deze is altijd actief, ongeacht de modus touch of tilt.
Gebruik dit blok voor interactieve demonstraties waar muisbediening onhandig is: het besturen van een gesimuleerde drone, het sturen van een voertuigmodel of het handmatig variëren van een instelpunt in een regelkring. De X/Y-uitgangspoorten dragen dezelfde namen als die van Joystick2D, waardoor het een directe draadloze vervanging is overal waar een canvas-joystick is aangesloten — inclusief de projectsjabloon Fly the Quadcopter (Phone).
Ingangen & Uitgangen
| Direction | ID | Label | Type | Status |
|---|---|---|---|---|
| ← Out | x |
X | number | Output |
| ← Out | y |
Y | number | Output |
| ← Out | yaw |
Yaw | number | Output |
Parameters
| Parameters | Label | Type | Standaard | Beschrijving |
|---|---|---|---|---|
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 |
Gebruiksvoorbeelden
Phone Joystick — Attitude Demo
Laad de ingebouwde Phone Joystick — Attitude Demo (via het blokvoorbeeldenmenu). Uw duim stuurt de stand van een gesimuleerde quadcopter aan: X wordt de rolhoek-setpoint, Y de pitch-setpoint, elk gevormd door tweede-orde dynamica en gerenderd op een 3D-gimbal:
PhoneController ──► [X] ──► Gain(30) ──► 2nd Order System ──► Gimbal3D [roll]
──► [Y] ──► Gain(30) ──► 2nd Order System ──► Gimbal3D [pitch]
Scan de QR-code, druk op Grab Control, start de simulatie — de drone volgt uw duimbewegingen.
Draadloos de volledige quadcopter-sjabloon besturen
Het sjabloon Fly the Quadcopter (Phone) (Voorbeeldenmenu → Besturingssystemen) verbindt alle drie de poorten — x/y met de PID-lussen voor rol/pitch (via een Gain, net als de ingebouwde versterking van Joystick2D) en yaw direct met de yaw-PID-lus — waarmee de volledige drie-assige PID + motormixer + 3D-gimbal wordt aangestuurd. Er is geen schuifregelaar op het canvas meer nodig.
Handmatig instelpunt voor een PID-regelkring
PhoneController ──► [Y] ──► Gain ──► (setpoint) Subtraction ──► PIDController → plantOpmerkingen & Best Practices
- Bronblok: Alle drie de kanalen zijn uitgangspoorten (rechterkant). X is positief naar rechts, Y is positief naar voren/boven (de virtuele knop naar boven duwen geeft +1), Yaw is positief naar rechts op de strook.
- Vaste 30 Hz stream: De telefoon zendt continu data uit — ook in de neutrale stand — om de buffer gevuld te houden en de latentieschatting stabiel te houden.
- Dode zone: Op de telefoon is een kleine dode zone (±0.02) ingesteld zodat een losgelaten duim exact 0 oplevert.
- Simulatie wacht op koppeling: Net als bij alle live-hardwareblokken start de simulatie pas nadat de telefoon is verbonden en de eerste pakketten zijn ontvangen.
- WebRTC vereist: Zowel telefoon als desktop hebben internettoegang nodig voor de PeerJS-signaleringshandshake. Zelf-gehoste PeerJS-servers worden ondersteund via dezelfde
localStorage-sleutels als RemoteSensor (blockwerk_peer_host/blockwerk_peer_port/blockwerk_peer_path/blockwerk_peer_secure). - Eén controller per diagram: De kanalen X/Y/Yaw zijn globaal (
remote:joy.x/remote:joy.y/remote:joy.z); twee PhoneController-blokken ontvangen dezelfde data. - Waarden bij verbroken verbinding: Alle drie de poorten houden de waarde
0vast totdat de telefoon verbinding maakt en begint met zenden.
Gerelateerde Componenten
- RemoteSensor: De versnellingsmeter, gyroscoop, magnetometer, barometer en GPS van de telefoon streamen in plaats van een joystick.
- ExternalInput: Lichtgewicht bron voor handmatig ingevoerde of gescripte numerieke waarden.
- Gimbal3D: 3D-standvisualisatie — de natuurlijke ontvanger voor de demonstraties van dit blok.