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.
Hardware
Sección titulada «Hardware»| 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).
Identificación (VID:PID)
Sección titulada «Identificación (VID:PID)»| VID:PID | Dispositivo |
|---|---|
054C:03D5 |
PS Move ZCM1 |
054C:0C5E |
PS Move ZCM2 |
Transporte
Sección titulada «Transporte»- USB: se usa solo para emparejamiento y configuración - el IMU no transmite por USB.
- Bluetooth: el HID report estándar
0x01tras el emparejamiento transporta todos los datos del sensor.
Input report 0x01 (ZCM1, ~49 bytes)
Sección titulada «Input report 0x01 (ZCM1, ~49 bytes)»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.4dps. - 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)»- Conéctalo por USB y enumera el HID.
- Escribe la MAC del host en el feature report
0x05(6 bytes, el resto en cero). - Desconecta el USB.
- Presiona el botón PS - el control se reconecta por Bluetooth usando la MAC almacenada.
- El IMU ahora transmite por el Bluetooth report
0x01.
Output report 0x06 (LED + rumble, 9 bytes)
Sección titulada «Output report 0x06 (LED + rumble, 9 bytes)»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.
Datos de calibración (feature report 0x10)
Sección titulada «Datos de calibración (feature report 0x10)»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.
Peculiaridades
Sección titulada «Peculiaridades»- 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.