Ir al contenido

PS Move (ZCM1 / ZCM2)

Status: hardware-validated.

El PlayStation Move se empareja por USB pero transmite su IMU solo por Bluetooth. El ZCM1 de la era PS3 lleva un magnetómetro (que habilita la fusión 9-DOF); el ZCM2 de la era PS4 no.

Variante Gyro + accel Magnetómetro
ZCM1 (era PS3) gyro discreto de 2 ejes + 1 eje + accel de 3 ejes (MPU-6050-class) 3 ejes (AKM)
ZCM2 (era PS4) MPU-6500-class ninguno

Rango de accel ±3 g, gyro ±2000 dps, ~175 Hz efectivos (el report empaqueta dos half-frames de IMU).

VID:PID Dispositivo
054C:03D5 PS Move ZCM1
054C:0C5E PS Move ZCM2
  • USB: se usa solo para emparejamiento y configuración - el IMU no transmite por USB.
  • Bluetooth: el HID report estándar 0x01 tras el emparejamiento transporta todos los datos del sensor.

Dos half-frames de IMU por report. El orden de ejes en el wire es X-Z-Y (se requiere un swap a X-Y-Z).

Offset Campo
0x00 Report ID 0x01
0x01-0x03 Botones
0x04 Secuencia (nibble bajo)
0x05-0x06 Trigger (frame 1 / frame 2)
0x0C Nivel de batería
0x0D-0x18 Accel X/Z/Y frame 1, luego frame 2 (int16)
0x19-0x24 Gyro X/Z/Y frame 1, luego frame 2 (int16)
0x26-0x2A Magnetómetro X/Z/Y (solo ZCM1, 12-bit con signo)

El accel/gyro del ZCM1 están desplazados en 0x8000 (resta antes de usar); el ZCM2 usa complemento a dos simple. El magnetómetro es de 12-bit con signo, rango −2048…+2047, solo ZCM1.

  • Accel: ±3 g; normaliza la gravedad empíricamente en la primera conexión.
  • Gyro: ±2000 dps; aproximadamente raw / 16.4 dps.
  • Magnetómetro: normaliza vía un barrido min/max - sin LSB/µT fijo.

Los raw counts más una escala aproximada se alimentan a la fusión, que estabiliza el bias durante el warm-up.

Emparejamiento (USB feature report 0x05, 23 bytes)

Sección titulada «Emparejamiento (USB feature report 0x05, 23 bytes)»
  1. Conéctalo por USB y enumera el HID.
  2. Escribe la MAC del host en el feature report 0x05 (6 bytes, el resto en cero).
  3. Desconecta el USB.
  4. Presiona el botón PS - el control se reconecta por Bluetooth usando la MAC almacenada.
  5. El IMU ahora transmite por el Bluetooth report 0x01.

Fija el color RGB de la esfera de tracking (bytes 2-4) y el único motor de rumble (byte 6). Debe reenviarse cada ~4 s o un firmware watchdog lo limpia automáticamente.

Un blob de calibración por control repartido en dos bloques (lee el report dos veces), que contiene muestras de accel para seis orientaciones de volteo y lecturas de gyro a una tasa de rotación conocida. Extraer bias/gain requiere un ajuste no lineal; para el tracking se usa en su lugar la estimación de rest-bias de la fusión, a costa de unos segundos extra de estabilización.

  • El flag de magnetómetro del ZCM2 se fuerza a apagado y la UI oculta el toggle de mag.
  • El botón PS cicla el color de la esfera; no está cableado a una acción de reset.
  • El magnetómetro del ZCM1 le da un heading sin deriva una vez calibrado, a diferencia del ZCM2.