BlockWerk Documentación
📱

Connected Phone

Connectivity

RemoteSensor es un bloque de tipo fuente (source) que transmite telemetría inercial y datos de sensores opcionales en directo desde un dispositivo móvil emparejado hacia la simulación mediante una conexión punto a punto WebRTC. Al insertar el bloque en el lienzo, se genera un código QR de emparejamiento; escanearlo desde el navegador del smartphone establece el enlace inmediatamente. Una vez conectado, el bloque expone puertos de salida para acelerómetro (3 ejes), giróscopo (3 ejes) y una señal del estado del búfer, añadiendo puertos adicionales de forma automática si el teléfono cuenta con magnetómetro, barómetro o receptor GPS.

Utilice este bloque para experimentos de control por movimiento, interacción por gestos o ensayos hardware-in-the-loop (HIL) donde el dispositivo móvil opera como una unidad de medición inercial (IMU) inalámbrica. Un búfer de reproducción configurable y un filtro de interpolación suavizan el flujo de red de tasa variable antes de ingresar en los bloques de la simulación.

Simular en BlockWerk

Simulador interactivo en tu navegador — sin instalación, motor WebAssembly.

Simular en BlockWerk →

Entradas y Salidas

Direction ID Label Tipo Status
← Out accelX Accel X number Output
← Out accelY Accel Y number Output
← Out accelZ Accel Z number Output
← Out gyroAlpha Rotation Alpha number Output
← Out gyroBeta Tilt Beta number Output
← Out gyroGamma Tilt Gamma number Output
← Out bufferLevel Buffer (ms) number Output

Parámetros

Parámetros Label Tipo Por defecto Descripción
playoutDelay Playout Delay (ms) number 250
interpolation Interpolation select linear How to reconstruct signal values between received sensor packets. Linear is the best default. PCHIP is smoother but heavier.
outputLabels Output Labels vector accelX,accelY,accelZ,gyroAlpha,gyroBeta,gyroGamma,bufferLevel

Ejemplos de Uso

Uso de la inclinación del móvil como referencia para un lazo PID

RemoteSensor ──► [Tilt Beta] ──► Gain ──► PIDController → [in]

Registro de los 6 DOF inerciales en un osciloscopio

RemoteSensor ──► [Accel X]        ┐
               ──► [Accel Y]      ├──► Scope
               ──► [Accel Z]      │
               ──► [Rotation Alpha]│
               ──► [Tilt Beta]    │
               ──► [Tilt Gamma]   ┘

Observaciones y Buenas Prácticas

  • Bloque fuente: Todos los canales de sensores corresponden a puertos de salida (lado derecho). En su configuración base, el bloque carece de puertos de entrada.
  • Puertos dinámicos: Los puertos se agregan o suprimen automáticamente tras el emparejamiento, de acuerdo con los sensores informados por el teléfono (acelerómetro, giroscopio, magnetómetro, barómetro, GPS). Los puertos de entrada para actuadores (vibración, pitido) aparecen a la izquierda cuando el dispositivo los soporta.
  • Requisito WebRTC: Tanto el teléfono como el navegador de escritorio deben disponer de acceso a Internet para la negociación inicial mediante PeerJS. En entornos locales aislados se requiere un servidor PeerJS propio (configurable con las claves blockwerk_peer_host / blockwerk_peer_port en localStorage).
  • Nivel de búfer: La salida bufferLevel indica el tiempo de anticipación del búfer en milisegundos. Conéctela a un display o aserción para supervisar la estabilidad del enlace.
  • Exportación de datos brutos: Con la simulación activa, pulse el botón de grabación del bloque para registrar los paquetes brutos de telemetría (marcas de tiempo, fluctuación, lecturas de ejes) y exportarlos en formato CSV.
  • Valores en desconexión: Todos los puertos entregan 0 hasta que el teléfono establece conexión y comienza a emitir datos.

Bloques Relacionados

  • PhoneController: Mismo mecanismo de enlace QR, pero con un joystick virtual táctil (o modo inclinación) que genera consignas de control X/Y — idóneo para demostraciones interactivas como "Fly the Quadcopter (Live)".
  • MQTTSubscriber: Alternativa para recepción de datos de sensores remotos a través de un intermediario MQTT.
  • ExternalInput: Fuente ligera para valores numéricos ajustables manualmente o por script.