1. Dans un premier temps j’ai initialisé la centrale inertielle (I2C) et je l’ai paramétré. (voir fonction initializeMPU9255(). On paramètre notamment les plages des capteurs et on réalise la calibration du magnétomètre.
2. Puis lorsque le mode datalogger est activé (via un BP), on vient venir ouvrir un fichier sur la mémoire afin de stocker les informations. J’ai ajouté pour faciliter l’utilisation une petite led qui s’allume lorsque l’on est dans ce mode.
3. Puis dans une boucle infinie ou arrêter (avec toujours un BP dans mon prototype), nous allons acquérir toutes les informations et les écrire dans le fichier texte.
Voici par exemple comment je réalise l’enregistrement de mes données, je réalise une concaténation des différentes valeurs dans un buffer, puis une fonction a pour but de les écrires sur la mémoire (SD ou mémoire flash interne).
sprintf(buffEcriture, “%.5f %f %f %f %f %f %f %.2f %.2f %.2f %.6f %.6f %.2f %.2f”, time, gx1, gy1, gz1, ax1, ay1, az1,(float)mx1, (float)my1, (float)mz1, longitude,latitude,vitesse,altitude);
datalog.println(buffEcriture);
J’enregistre notamment le temps entre deux écritures afin d’en déduire la fréquence d’échantillonnage, les données gyroscopiques, les données de l’accéléromètre, les données du magnétomètre ainsi que la longitude, la latitude, la vitesse et l’altitude. Plusieurs infos que je traiterais dans un programme sur pc.
4. Une fois la capture terminée (via l’arret par bouton poussoir), le programme revient en position d’attente, il nous reste qu’à connecter la carte via USB ou de récupérer la carte SD (si utilisé) et de récupérer les données. Dans le futur, j’essaierais de télécharger les données par la communication Bluetooth (plus pratique).
Impressionnant ton datalogger pour motard ! Merci pour le partage et pour le détail !