GyroNav è un sensore assoluto che permette di ottenere in modo preciso i valori di Pitch e Roll, rispetto ad un piano in bolla, e l'orientamento rispetto al Nord magnetico, se si inserisce il valore locale della declinazione magnetica si ottiene l'orientamento rispetto al Nord geografico.
Il progetto è composto da un Arduino Pro Mini, va bene qualunque altro modello di Arduino 8 bit, una coppia di sensori MPU6050 e HMC5883L oppure un singolo MPU9150( MPU6050 + magnetometro dentro lo stesso chip).
La scelta degli MPUxxxx è obbligatoria in quanto viene sfruttato il loro DMP (Digital Motion Processor) per tutta la parte di calcoli inerenti la IMU, implementa un Kalman, e non solo quello, in grado di fare oltre 100 cicli di calcolo al secondo, senza impegnare tempo CPU di Arduino, che comunque non è assolutamente in grado di gestire la mole di calcoli, tutti in virgola mobile a 64 bit (double), per gestire in modo ottimale una IMU 6 d.o.f. (accelerometro 3 assi e giroscopio 3 assi).
In pratica Arduino provvede al calcolo dell'orientamento, rispetto al Nord magnetico, partendo dalle letture raw del magnetometro a triplo asse ed esegue una compensazione del valore calcolato in base all'inclinazione sul Pitch e Roll, questo perché se il magnetometro non si trova perfettamente in bolla la lettura dell'orientamento varia notevolmente, molti gradi, in funzione dell'inclinazione.
Come dati forniti, tramite porta seriale, volendo anche tramite SPI, non ancora implementato, abbiamo i valori del Pitch e Roll, in gradi con risoluzione al decimo di grado, e dell'orientamento, in gradi con risoluzione al singolo grado.
Tramite il file
config.h è possibile modificare il formato dati in uscita tra quattro diverse modalità, attivare/disattivare i messaggi per il debug sul monitor seriale, inserire il valore locale della declinazione magnetica, quest'ultimo prossimamente sarà inserito in EEPROM e modificabile tramite comando sulla seriale, invertire il verso di rotazione dell'orientamento, quest'ultimo dipende da come si montano fisicamente i sensori.
Trovate lo sketch per Arduino, una GUI di test per Processing, alcune foto e una illustrazione dei collegamenti tra Arduino e i sensori su github, link sotto, lo sketch è molto commentato e l'intestazione contiene molte informazioni importanti sul codice.
Repository githubScreenshot GUI per Processing

Il tutto montato su mille fori e inserito in un box su misura 3D printed.
