Curiosity
L’IMU del Visla Prototype 1: chip MPU-6500 montato su breakout GY-9250/6500 (PCB blu 15×24mm) plug-in I2C. Status TDK: NRND (Not Recommended for New Designs) dopo l’acquisizione InvenSense 2017 — ancora in produzione “Commercial Grade” ma flagged. Datasheet ufficiale PS-MPU-6500A-01 Rev 1.1 (Marzo 2014, 40 pagine). Sul bench Visla v1 funzionante: WHO_AM_I 0x70, I2C 0x68, crash detection >4g → SOS automatico. Per Visla v2 sostituito da LSM6DSO.
Specs tecniche
| Parametro | Valore |
|---|---|
| Doc reference | PS-MPU-6500A-01 Rev 1.1 (03/05/2014) — 40 pagine |
| Status TDK | NRND (Production but Not Recommended for New Designs) |
| Tipo | 6-axis MotionTracking — 3D accel + 3D gyro + DMP onboard |
| Grade | Commercial (NON AEC-Q100 automotive) |
| Markets | Wearable · remote controls · gaming · dead-reckoning |
| Accel FSR | ±2 / ±4 / ±8 / ±16 g |
| Accel sensitivity error | ±3% |
| Accel noise density | 300 µg/√Hz |
| Accel normal current | 450 µA |
| Accel low-power current | 6.37 µA @ 0.98Hz · 17.75 µA @ 31.25Hz |
| Gyro FSR | ±250 / ±500 / ±1000 / ±2000 dps |
| Gyro sensitivity error | ±3% |
| Gyro rate noise | 0.01 dps/√Hz (industry-leading low) |
| Gyro operating current | 3.2 mA |
| Combo current (all 6 axes) | 3.4 mA |
| ADC | 16-bit (entrambi sensori) |
| FIFO buffer | 512 byte |
| DMP (Digital Motion Processor) | gesture recognition · pedometer · angle output |
| WoM (Wake-on-Motion) | interrupt programmabile per low-power |
| Master I2C aux | bus per magnetometro esterno (es. AK8963) |
| Self-test | accel + gyro built-in |
| Interface | I2C 400 kHz Fast Mode + SPI 1 MHz (reg) / 20 MHz (data burst) |
| I2C address | 0x68 (AD0=LOW) / 0x69 (AD0=HIGH) |
| WHO_AM_I register | 0x70 |
| VDD | 1.71 - 3.6 V (typ 1.8-3.3V ±5%) |
| VDDIO independent | 1.71 - 3.6 V |
| Operating temp | -40°C / +85°C (1% clock drift) |
| Shock tolerance | 10,000 g |
| Compliance | RoHS · REACH SVHC-Free · Halogen Free · Pb-Free |
| Package | 24-pin QFN, 3.0 × 3.0 × 0.9 mm |
| Weight | 0.14 g |
| Packing | Embossed plastic taping 330mm reel, 12mm tape — 5000 pcs/reel |
| Breakout GY-9250/6500 | PCB blu ~15 × 24 mm, 10-pin header (VCC/GND/SCL/SDA/EDA/ECL/ADD/INT/NCS/FSYNC) |
| Visla v1 wiring | SDA → GPIO 21 ESP32 · SCL → GPIO 22 · I2C 100kHz |
| Visla v1 I2C address | 0x68 (AD0 floating → pull-up interno) |
🧪 Note dal bench Visla (Prototype 1)
- ✅ Funzionante sul bench v1: crash detection >4g testata, SOS automatico via cellular A7670E
- ✅ Breakout GY-9250/6500 dual-compatible: il PCB blu monta chip MPU-9250 (9-axis) o MPU-6500 (6-axis) a seconda del lot — il nostro è 6500 (no magnetometro AK8963 onboard, pin EDA/ECL inutilizzati)
- ✅ I2C scan rapido: AD0 floating → addr 0x68 (per chain di 2 IMU basta pullare AD0 HIGH = 0x69)
- ✅ 10,000 g shock tolerance: tra i più robusti — sopravvive a crash auto/moto severi (rilevazione spike + immediata SOS prima che il chip ceda)
- ✅ DMP onboard offload pedometer: l’MCU può dormire mentre il DMP conta passi — utile per wearable battery-powered
- ⚠️ Status NRND TDK: ancora in produzione ma flagged “Not Recommended for New Designs” → per Visla v2 PCB sostituito da LSM6DSO (sempre in produzione + ML Core HW)
- ⚠️ Sleep 6.37 µA low-power vs BMA400 0.85µA: 7× peggio in WoM — non adatto a battery-powered Visla Tag
- ⚠️ NON automotive grade (no AEC-Q100): per Visla Pro Fleet automotive serve LSM6DSO/DSV16X
- ⚠️ Pin EDA/ECL inutilizzati nel 6500 (slot magnetometro nel 9250 only): lasciare floating
⚠️ Gotchas
- WHO_AM_I = 0x70 (NON 0x71 come MPU-9250 puro né 0x68 come MPU-6050!) — il chip sul breakout GY-9250 venduto come “9250/6500” è quasi sempre 6500
- DMP firmware-load è opaco e poco documentato (specs InvenSense classificate) — usa libreria moderna (Bolderflight MPU9250) e disabilita DMP se non serve
- AD0 floating ha pullup interno → addr 0x68 default ma in ambienti rumorosi può oscillare → meglio pull esplicito a GND
- Il modulo GY-9250 ha LDO 3.3V che dropa solo da 5V — alimentare con 3.3V diretto bypassa il regolatore (OK ma occhio al ripple)
- Non confondere MPU-6500 con MPU-6050: pinout simile ma WHO_AM_I diverso (6050 → 0x68, 6500 → 0x70) e registri leggermente diversi
- VDDIO indipendente 1.71-3.6V: utile per level shift verso MCU 1.8V senza convertitori esterni, ma se non usato cortocircuita a VDD
- SPI ha 2 frequenze: 1 MHz per registri config, 20 MHz solo per sensor data burst reads — non sforare in scrittura