Arduino, Tutoriels

Comment utiliser le module GY-521 avec Arduino Uno : Guide complet pour la détection de mouvement

Comment Utiliser Le Module Gy-521 Avec Arduino Uno

Le module GY-521 est une carte d’extension pour le MPU-6050, un système microélectromécanique (MEMS) qui comprend un gyroscope triaxial, un accéléromètre triaxial, un processeur numérique de mouvement (DMP) et un capteur de température. Ce tutoriel vous guidera pas à pas dans l’utilisation de ce module avec l’Arduino Uno, en couvrant les connexions matérielles, le code Arduino et la visualisation des données du capteur. Que vous soyez débutant ou souhaitiez en savoir plus sur ce module, ce tutoriel vous aidera à démarrer.

Présentation du module GY-521 (MPU-6050)

Présentation Du Module Gy-521 (Mpu-6050)
Module GY-521 (MPU-6050)

Le module GY-521 est spécifiquement conçu pour intégrer le MPU-6050. Ce dernier est un composant MEMS avancé qui combine un gyroscope et un accéléromètre sur une seule puce. Il permet de mesurer les mouvements linéaires et angulaires dans les trois axes. Voici quelques caractéristiques techniques clés du MPU-6050 :

  • Plage de l’accéléromètre : Le MPU-6050 offre une sélection de plages d’accélération, allant de +/- 2g à +/- 16g. Cette plage détermine la sensibilité de l’accéléromètre aux mouvements.
  • Plage du gyroscope : Le MPU-6050 propose plusieurs plages de mesure pour le gyroscope, allant de +/- 250 degrés par seconde à +/- 2000 degrés par seconde. Cette plage définit la sensibilité du gyroscope aux mouvements angulaires.
  • Tension d’entrée : Le module GY-521 peut être alimenté par une tension comprise entre 3,3 V et 5 V, ce qui le rend compatible avec l’Arduino Uno.
  • Communication I2C : Le GY-521 communique avec l’Arduino Uno via le bus de données série I2C, ce qui permet de transférer les valeurs des capteurs avec seulement deux fils (SCL et SDA).

Broches du module GY-521

Le module GY-521 dispose de huit broches, dont les principales sont les suivantes :

Broches Du Module Gy-521 - Pins
  1. VCC : Cette broche est utilisée pour fournir la tension d’alimentation au module. Elle peut être connectée à la broche 5V de l’Arduino Uno.
  2. GND : Cette broche est reliée à la masse (GND) de l’Arduino Uno pour assurer une référence commune.
  3. SDA : Il s’agit de la broche de données série (Serial Data Line) de communication I2C. Elle est connectée à la broche SDA de l’Arduino Uno.
  4. SCL : Il s’agit de la broche d’horloge série (Serial Clock Line) de communication I2C. Elle est connectée à la broche SCL de l’Arduino Uno.
  5. AD0 : Cette broche permet de sélectionner l’adresse I2C du module en la reliant à la masse (AD0 à LOW) ou à la tension d’alimentation (AD0 à HIGH).
  6. INT : Cette broche est une sortie numérique d’interruption qui peut être utilisée pour détecter des événements spécifiques, tels que des changements d’état des capteurs.

Matériel requis :

Avant de commencer, assurez-vous d’avoir les éléments suivants :

Connexions matérielles :

  1. Branchez le pin VCC du module GY-521 à la broche 5V de l’Arduino Uno.
  2. Connectez le pin GND du module GY-521 à l’une des broches GND de l’Arduino Uno.
  3. Connectez le pin SDA du module GY-521 à la broche SDA de l’Arduino Uno.
  4. Connectez le pin SCL du module GY-521 à la broche SCL de l’Arduino Uno.
Comment Utiliser Le Module Gy-521 Avec Arduino Uno

Configuration logicielle :

  1. Téléchargez et installez l’IDE Arduino à partir du site officiel https://www.arduino.cc/en/software .
  2. Ouvrez l’IDE Arduino et installez la bibliothèque MPU6050.
    • Allez dans “Croquis” -> “Inclure une bibliothèque” -> “Gérer les bibliothèques”.
    • Recherchez “MPU6050” et installez la bibliothèque proposée par “Jeff Rowberg”.

Code Arduino GY-521

Copiez le code suivant dans l’IDE Arduino :

#include "Wire.h"
#include "MPU6050.h"

MPU6050 mpu;

void setup() {
  Wire.begin();
  mpu.initialize();
  
  Serial.begin(9600);
  while (!Serial) {
    // Attendez que la connexion série soit établie (pour les cartes Arduino qui nécessitent cela)
  }
}

void loop() {
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  
  Serial.print("Accel X: "); Serial.print(ax);
  Serial.print(" Accel Y: "); Serial.print(ay);
  Serial.print(" Accel Z: "); Serial.print(az);
  Serial.print(" Gyro X: "); Serial.print(gx);
  Serial.print(" Gyro Y: "); Serial.print(gy);
  Serial.print(" Gyro Z: "); Serial.println(gz);
  
  delay(1000);
}

Téléversez le code vers votre Arduino Uno.

Visualisation des données du capteur :

  1. Ouvrez le moniteur série dans l’IDE Arduino (Ctrl + Maj + M).
  2. Assurez-vous que le débit en bauds est réglé sur 9600.
  3. Vous devriez maintenant voir les valeurs de l’accéléromètre et du gyroscope s’afficher dans le moniteur série.

Conseils supplémentaires :

  • Vous pouvez ajuster la sensibilité de l’accéléromètre et du gyroscope en modifiant les paramètres dans le code.
  • Consultez la documentation de la bibliothèque MPU6050 pour plus d’exemples et de fonctionnalités avancées.

Utilisation du module GY-521 dans un projet

Le module GY-521 offre de nombreuses possibilités pour divers projets impliquant la détection de mouvement et l’orientation spatiale. Dans cette section, nous allons expliquer comment utiliser le module GY-521 pour contrôler un servomoteur en fonction des mouvements détectés par l’accéléromètre.

Matériel requis :

Connexions matérielles :

  1. Branchez le VCC du module GY-521 à la broche 5V de l’Arduino Uno.
  2. Connectez le GND du module GY-521 à la broche GND de l’Arduino Uno.
  3. Connectez le SDA du module GY-521 à la broche SDA de l’Arduino Uno.
  4. Connectez le SCL du module GY-521 à la broche SCL de l’Arduino Uno.
  5. Connectez le fil de signal du servomoteur à la broche 9 de l’Arduino Uno.

Code Arduino pour contrôler le servomoteur en fonction des mouvements :

Le code suivant utilise le module GY-521 pour détecter les mouvements et contrôle un servomoteur en fonction de l’orientation détectée.

#include <Wire.h>
#include <MPU6050.h>
#include <Servo.h>

MPU6050 mpu;
Servo servo;

void setup() {
  Wire.begin();
  mpu.initialize();
  servo.attach(9); // Attache le servomoteur à la broche 9
  
  Serial.begin(9600);
  while (!Serial) {
    // Attendez que la connexion série soit établie (pour les cartes Arduino qui nécessitent cela)
  }
}

void loop() {
  int16_t ax, ay, az;
  
  mpu.getAcceleration(&ax, &ay, &az);
  
  // Convertit les valeurs de l'accélération en degrés d'angle pour le servomoteur
  int servoAngle = map(ax, -17000, 17000, 0, 180);
  
  // Assurez-vous que l'angle du servomoteur est dans la plage acceptable
  servoAngle = constrain(servoAngle, 0, 180);
  
  // Contrôle le servomoteur en fonction de l'angle calculé
  servo.write(servoAngle);
  
  Serial.print("Accel X: "); Serial.print(ax);
  Serial.print(" Angle: "); Serial.println(servoAngle);
  
  delay(100);
}

Explication du code :

  1. Les bibliothèques nécessaires pour communiquer avec le module MPU-6050 et contrôler le servomoteur sont incluses en utilisant les directives #include.
  2. Dans la fonction setup(), nous initialisons le module MPU-6050 et attachons le servomoteur à la broche 9 de l’Arduino Uno.
  3. La fonction loop() est exécutée en boucle. Nous utilisons la fonction getAcceleration() du module MPU-6050 pour obtenir les valeurs d’accélération dans les axes x, y et z.
  4. Les valeurs d’accélération sont ensuite converties en degrés d’angle pour le servomoteur à l’aide de la fonction map(). Les valeurs d’accélération brutes sont mappées sur une plage de 0 à 180 degrés.
  5. La fonction constrain() est utilisée pour s’assurer que l’angle du servomoteur reste dans la plage acceptable de 0 à 180 degrés.
  6. https://www.youtube.com/watch?v=oqmbVeRlLgg&t=39s&pp=ugMICgJhchABGAHKBQZneSA1MjE%3DEnfin, la fonction write() du servomoteur est utilisée pour contrôler le servomoteur en fonction de l’angle calculé. Les valeurs d’accélération et l’angle du servomoteur sont également affichés dans le moniteur série.

Dans ce projet, le servomoteur réagira aux mouvements détectés par l’accéléromètre. Vous pouvez ajuster les plages d’angle et les valeurs de mappage selon vos besoins pour obtenir le comportement souhaité du servomoteur.

Conclusion

Félicitations ! Vous avez réussi à utiliser le module GY-521 (MPU-6050) avec l’Arduino Uno. Vous pouvez maintenant récupérer et visualiser les données de l’accéléromètre et du gyroscope. N’hésitez pas à explorer davantage les capacités du module et à intégrer ces fonctionnalités dans vos propres projets. Amusez-vous bien et continuez à apprendre !

Pour plus d’articles : https://www.moussasoft.com/tutoriels-electroniques

Twitter: Moussa Lhoussaine (@Moussasoft_com) / Twitter

Arduino – Home