BlockWerk Documentatie
🕹️

Phone Controller

Connectivity

PhoneController 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).

Simuleren in BlockWerk

Interactieve sandbox direct in je browser — geen installatie, aangedreven door WebAssembly.

Simuleren in BlockWerk →

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 → plant

Opmerkingen & 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 0 vast 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.