Introduction
Les capteurs 9 axes combinent un magnétomètre, un accéléromètre et un gyroscope dans un seul module. Ces capteurs sont idéaux pour des applications telles que la navigation de drones, de robots ou de véhicules autonomes, car ils permettent de mesurer l’orientation, l’accélération et les champs magnétiques sur trois axes (X, Y, Z). Cet article explique comment connecter et programmer un capteur 9 axes MPU-9250 avec un Arduino, en utilisant la communication I2C pour récupérer les données des neuf axes.
Présentation du MPU-9250
Le MPU-9250 est un capteur 9 axes, ou capteur à 9 degrés de liberté, intégrant :
- Un accéléromètre mesurant l’accélération sur les axes X, Y et Z (en m/s²).
- Un gyroscope mesurant la vitesse de rotation autour des axes X, Y et Z (en radians/s).
- Un magnétomètre mesurant l’intensité du champ magnétique sur les axes X, Y et Z (en microteslas).
Ces neuf axes permettent de suivre l’orientation et le mouvement d’un objet dans l’espace tridimensionnel. Le MPU-9250 est compact, léger et parfait pour les projets de navigation ou de suivi de mouvement.
Schéma des broches du MPU-9250
Le MPU-9250 dispose de dix broches, dont les principales pour une connexion I2C sont :

- VCC : Entrée d’alimentation (3,3 V max si aucun régulateur de tension, ou 3,3 V/5 V avec régulateur).
- GND : Connexion à la masse de l’Arduino.
- SCL : Ligne d’horloge pour la communication I2C (connectée à la broche A5 sur Arduino Uno).
- SDA : Ligne de données pour la communication I2C (connectée à la broche A4 sur Arduino Uno).
- EDA : Données série maître I2C (pour connecter un autre capteur en mode maître).
- ECL : Horloge série maître I2C.
- ADO : Définit l’adresse I2C du capteur.
- INT : Broche d’interruption matérielle.
- NCS : Broche CS pour la communication SPI.
- FSYNC : Entrée de synchronisation de trame.
Des flèches directionnelles sur la carte MPU-9250 indiquent l’orientation des axes de l’accéléromètre et du gyroscope. Les axes du magnétomètre sont alignés différemment, avec un point de repère en haut à gauche de la puce pour déterminer leur orientation (voir la datasheet InvenSense MPU-9250 pour plus de détails).
Matériel nécessaire
- Arduino (par exemple, Arduino Uno)
- MPU-9250 (capteur 9 axes)
- Fils de connexion
- Breadboard (optionnel)
- Ordinateur avec l’IDE Arduino installé
Connexion du MPU-9250 à l’Arduino
Pour ce projet, nous utiliserons la communication I2C, qui nécessite moins de câbles que SPI. Voici les connexions à réaliser :
- VCC du MPU-9250 à la broche 5V de l’Arduino (ou 3,3 V si aucun régulateur de tension).
- GND du MPU-9250 à la broche GND de l’Arduino.
- SCL du MPU-9250 à la broche A5 de l’Arduino.
- SDA du MPU-9250 à la broche A4 de l’Arduino.
Vérifiez que les connexions sont sécurisées pour éviter des erreurs de communication.

Programmation du MPU-9250
Pour programmer le MPU-9250, nous utiliserons la bibliothèque MPU9250.h, qui simplifie la lecture des données des capteurs. Voici un exemple de code pour afficher les lectures des neuf axes sur le moniteur série.
Étapes pour programmer
- Installer la bibliothèque MPU9250 :
- Téléchargez la bibliothèque depuis un dépôt fiable (par exemple, GitHub ou le site de l’auteur).
- Ajoutez-la à l’IDE Arduino via Croquis > Inclure une bibliothèque > Ajouter la bibliothèque. .ZIP
- Téléversez le code suivant :
#include "MPU9250.h"
MPU9250 sensor(Wire, 0x68);
void setup() {
Serial.begin(9600);
sensor.begin();
}
void loop() {
sensor.readSensor();
Serial.print("Accéléromètre X: ");
Serial.println(sensor.getAccelX_mss(), 2);
Serial.print("Accéléromètre Y: ");
Serial.println(sensor.getAccelY_mss(), 2);
Serial.print("Accéléromètre Z: ");
Serial.println(sensor.getAccelZ_mss(), 2);
Serial.print("Gyroscope X: ");
Serial.println(sensor.getGyroX_rads(), 2);
Serial.print("Gyroscope Y: ");
Serial.println(sensor.getGyroY_rads(), 2);
Serial.print("Gyroscope Z: ");
Serial.println(sensor.getGyroZ_rads(), 2);
Serial.print("Magnétomètre X: ");
Serial.println(sensor.getMagX_uT(), 2);
Serial.print("Magnétomètre Y: ");
Serial.println(sensor.getMagY_uT(), 2);
Serial.print("Magnétomètre Z: ");
Serial.println(sensor.getMagZ_uT(), 2);
Serial.print("Température: ");
Serial.println(sensor.getTemperature_C(), 2);
Serial.println("------------------------------------");
delay(500);
}
Explication du code
- #include « MPU9250.h » : Inclut la bibliothèque pour gérer le MPU-9250.
- MPU9250 sensor(Wire, 0x68) : Crée un objet capteur utilisant I2C avec l’adresse par défaut 0x68.
- setup() : Initialise la communication série à 9600 bauds et démarre le capteur.
- loop() :
- sensor.readSensor() lit les données de tous les axes.
- Les fonctions getAccelX_mss(), getGyroX_rads(), getMagX_uT(), etc., récupèrent les valeurs des axes en m/s², radians/s et microteslas, respectivement.
- getTemperature_C() récupère la température en degrés Celsius.
- delay(500) ralentit la boucle pour faciliter la lecture des données.
Résultats
Une fois le code téléversé et le moniteur série ouvert (à 9600 bauds), vous verrez des lectures comme suit :
- Accéléromètre : Valeurs en m/s². Par exemple, si le capteur est posé à plat, l’axe Z affichera environ -9,8 m/s² en raison de la gravité.
- Gyroscope : Valeurs en radians/s. Si le capteur est immobile, les valeurs seront proches de zéro.
- Magnétomètre : Valeurs en microteslas, indiquant l’intensité du champ magnétique.
- Température : Valeur en °C.
Si vous ne voyez pas de données ou si elles semblent incorrectes, vérifiez les connexions et assurez-vous que la bibliothèque est correctement installée.
Conseils et dépannage
- Connexions lâches : Assurez-vous que les câbles sont bien connectés.
- Adresse I2C : Si le capteur ne répond pas, vérifiez son adresse I2C (par défaut 0x68, modifiable via la broche ADO).
- Alimentation : Si le MPU-9250 n’a pas de régulateur de tension, utilisez 3,3 V pour éviter d’endommager le capteur.
- Calibration : Les capteurs 9 axes nécessitent souvent une calibration pour des données précises (voir les réponses aux questions fréquentes ci-dessous).
Questions fréquentes
Q1 : Comment calibrer les 9 axes du MPU-9250 ?
Les capteurs 9 axes doivent être calibrés pour compenser les biais et les erreurs. Vous pouvez ajouter un code de calibration dans la fonction setup() pour ajuster les offsets de chaque capteur. Consultez la documentation de la bibliothèque MPU9250 pour des fonctions de calibration spécifiques.
Q2 : Comment compenser la température ?
Le MPU-9250 fournit des lectures de température qui peuvent être utilisées pour ajuster les données des autres capteurs, car la température peut affecter leur précision. Vous pouvez implémenter une compensation logicielle en ajustant les valeurs en fonction des données de température (voir les ressources en ligne pour des algorithmes spécifiques).
Q3 : Ai-je besoin d’un module RTC pour des lectures synchronisées ?
Pour des applications nécessitant des données horodatées précises (par exemple, pour calculer la position), un module RTC (comme le DS3231) peut être utile. Connectez-le via I2C (SCL à A5, SDA à A4) et utilisez une bibliothèque comme RTClib pour synchroniser les lectures.
Q4 : Comment dériver la position (X, Y, Z) à partir des données ?
Calculer la position à partir des données du MPU-9250 nécessite une fusion de capteurs (par exemple, avec un filtre de Kalman) pour combiner les données de l’accéléromètre, du gyroscope et du magnétomètre. Cela permet d’obtenir des coordonnées en mètres ou centimètres, mais cela nécessite un traitement avancé et peut inclure un capteur barométrique pour l’altitude.
Conclusion
Le MPU-9250 est un capteur puissant pour les projets Arduino nécessitant un suivi précis du mouvement et de l’orientation. En suivant ce guide, vous pouvez connecter, programmer et lire les données de ce capteur 9 axes. Pour des projets plus avancés, explorez la fusion de capteurs et l’intégration avec d’autres modules comme des baromètres ou des GPS.
