| Acheter chez OSOYOO | Acheter aux États-Unis |
Sommaire
Ce tutoriel explique comment améliorer les capacités autonomes de la voiture robot OSOYOO V3 en utilisant le module MPU6050 (IMU) pour maintenir un cap souhaité. Le MPU6050, capteur de mouvement à 3 axes, fournit des données de vitesse angulaire (gyroscope) et d’accélération linéaire (accéléromètre), permettant au robot de corriger activement sa trajectoire. Cette leçon couvre les techniques de fusion de capteurs et les algorithmes de contrôle PID pour une conduite en ligne droite stable.
Pour cette leçon, vous avez besoin du composant suivant. Assurez-vous de l’avoir sous la main avant de commencer.
| N° | Image | Composant | Qté | Accessoires | Lien |
| 1 | ![]() |
Gyroscope MPU6050 à 3 axes | 1 | Cliquez ici pour acheter |
Le MPU6050 intègre un gyroscope à 3 axes et un accéléromètre à 3 axes. Le gyroscope mesure la vitesse angulaire, fournissant des informations sur la vitesse de rotation du robot autour de ses axes X, Y et Z. L’intégration de ces données dans le temps donne le déplacement angulaire (par exemple, l’angle de lacet). Cependant, les données brutes du gyroscope sont sujettes à une dérive, c’est-à-dire qu’elles accumulent de petites erreurs au fil du temps. L’accéléromètre mesure l’accélération linéaire, ce qui permet de déterminer l’orientation du capteur par rapport à la gravité. Bien que stables sur de longues périodes, les accéléromètres sont très sensibles aux vibrations et aux brusques mouvements, ce qui rend leurs données d’orientation brutes bruitées.

Étape 1 : Effectuez le montage matériel de base décrit dans la leçon 1 de la voiture robot. Si vous avez déjà terminé la leçon 1, laissez tout en l’état.

Étape 2 : Fixez solidement le module MPU6050 sur le châssis du robot comme indiqué ci-dessous. (Le MPU6050 communique avec l’Arduino via le protocole I2C, qui ne nécessite que deux lignes de données : SDA (Serial Data) et SCL (Serial Clock), ainsi que l’alimentation (VCC) et la masse (GND).)

| Logiciel Arduino open-source (IDE) |
![]() |
Télécharger le logiciel ici : https://www.arduino.cc/en/Main/Software?setlang=en |
| 7-Zip est un utilitaire gratuit pour extraire les fichiers ZIP |
![]() |
Télécharger 7-Zip gratuitement : https://www.7-zip.org/ |
1. Configuration de l’Arduino IDE : Téléchargez et installez la dernière version de l’Arduino IDE depuis https://www.arduino.cc/en/Main/Software?setlang=en.

2. Téléchargement du code d’exemple : Téléchargez le code d’exemple pour la leçon 2 ici. Décompressez le contenu et vous trouverez un fichier nommé v3car-lesson2.ino dans un dossier appelé v3car-lesson2. Ouvrez v3car-lesson2.ino dans l’Arduino IDE.

3. Installation des bibliothèques
Commencez par télécharger les fichiers ZIP des bibliothèques depuis les liens ci-dessous :
https://osoyoo.com/driver/2wd/MPU6050_light.zip
https://osoyoo.com/driver/2wd/PID.zip
Ne décompressez pas ces fichiers. Ouvrez l’Arduino IDE -> Croquis -> Inclure une bibliothèque -> Ajouter la bibliothèque .ZIP. Ajoutez les fichiers ZIP à l’Arduino IDE un par un.

4. Sélection du board et du port : Connectez le OSOYOO Basic Board (compatible avec Arduino UNO) à votre ordinateur via un câble USB (Important : assurez-vous que l’interrupteur de la voiture robot est éteint et que la batterie est déconnectée avant de connecter le board à votre PC). Lancez l’Arduino IDE. Allez dans Outils > Type de carte et sélectionnez Arduino Uno. Puis allez dans Outils > Port et sélectionnez le port série correct. En cas de doute, consultez le gestionnaire de périphériques de votre système d’exploitation.

5. Téléversement du code : Cliquez sur le bouton « Téléverser » (icône flèche vers la droite) pour compiler et téléverser le sketch sur le OSOYOO Basic Board.

6. Vérifier si Arduino détecte le MPU6050
Ouvrez le Moniteur série (coin supérieur droit de l’Arduino IDE), réglez la vitesse de transmission sur 9600, et vous devriez voir MPU6050 Found! comme illustré ci-dessous. Félicitations ! L’Arduino détecte le MPU6050 — vous pouvez maintenant tester la voiture.

Remarque : Si vous voyez « Failed to find MPU6050 chip », il y a un problème de câblage. Vérifiez que :
1) Les broches VCC/GND/SDA/SCL du MPU6050 sont correctement connectées au shield OSOLINK Wi-Fi/BLE I/O conformément à nos instructions
2) Les broches A4/A5 et SDA/SCL de l’Arduino n’ont pas d’autres câbles connectés (dans les projets de suivi de ligne, A4/A5 peuvent déjà être utilisées par le capteur de suivi)
1) Comment la fonction Move() contrôle-t-elle le déplacement et la direction de la voiture ?
La voiture robot OSOYOO utilise un système de direction différentielle. La fonction move(speedL, speedR) prend deux paramètres, speedL et speedR, représentant respectivement la vitesse de rotation des roues gauche et droite. La valeur de vitesse va de -255 à +255 : une valeur positive indique une rotation vers l’avant, une valeur négative une rotation vers l’arrière. Par exemple, move(-50, 100) signifie que la roue gauche tourne en arrière à la vitesse 50 et la roue droite en avant à la vitesse 100, ce qui provoque un virage serré à gauche.
2) Introduction à la programmation du MPU6050
Après l’initialisation, le gyroscope MPU6050 suit en permanence l’orientation du robot par rapport à sa direction de départ. Lorsque la voiture robot dévie de cette direction initiale, le MPU6050 signale l’écart à l’Arduino.
Dans notre code, la variable Direction représente l’orientation de la voiture au moment où elle est posée sur le sol (on suppose qu’elle est dirigée vers l’avant, donc on définit Direction à 0).
Après les calculs des premières lignes de la fonction loop(), on obtient l’orientation actuelle de la voiture dans la variable currentAngle à la ligne 129.
En combinant les réponses à ces trois questions, le contrôleur PID effectue une correction de trajectoire fluide et efficace.
PID_v1.h et à votre code.setup()) :// We tell the PID controller what to watch and what to control.
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
Direction = 0; // Our TARGET is to have an angle of 0 degrees.
myPID.SetMode(AUTOMATIC); // Turn on the controller.
loop()) :// 1. We get the sensor reading and put it into the Input variable.
Input = currentAngle;
// 2. We call the compute function. This is where the PID magic happens!
myPID.Compute();
// 3. We use the result to control the motors.
int speedL = baseSpeed - Output;
int speedR = baseSpeed + Output;
move(speedL, speedR);
myPID.Compute() effectue tout le travail en interne. Chaque fois qu’elle est appelée (la bibliothèque gère le timing via SetSampleTime), elle :Output est +15, cela signifie que le robot a besoin d’une correction de 15 unités. On l’applique en ralentissant un moteur (baseSpeed - 15) et en accélérant l’autre (baseSpeed + 15), ce qui fait tourner le robot et réduit son erreur. Si le robot va parfaitement tout droit, Input sera 0, l’erreur sera 0 et Output sera 0, donc les deux moteurs tournent à baseSpeed.4) Régler Kp, Ki et Kd pour un déplacement stable
Ki = 0.0 et Kd = 0.0 dans votre code.Kp stable qui n’oscille pas (ou à peine). Elle sera probablement inférieure à 1,5.zone morte d’environ 0,5 degré à votre boucle pour ignorer le bruit du capteur.Kp stable, augmentez lentement Kd pour réduire tout dépassement résiduel.Ki pour éliminer la dérive à long terme.En suivant ces recommandations et en comprenant les principes sous-jacents, vous pouvez transformer la voiture robot OSOYOO V3 en une plateforme performante pour la navigation autonome, posant ainsi les bases de projets robotiques plus avancés.
DownLoad Url osoyoo.com