Étiquettes : ,
0
(0)

Le module MPU6050 est une centrale inertielle qui permet de mesurer l’évolution d’un objet dans l’espace. Il permet de mesurer les accélérations linéaires et angulaires dans les trois axes de l’espace. Ce composant se retrouve dans plusieurs applications notamment les manettes de jeux vidéo ou les smartphones. Il peut être utilisé pour faire du contrôle d’assiette sur un drone ou pour équilibrer un robot sur deux roues.

Pour ce tutoriel, nous allons utiliser le module GY-521 sur lequel est embarqué le MPU6050.

Prérequis : la communication I2C

Matériel

  • Ordinateur
  • Arduino UNO
  • Câble USB A Mâle/B Mâle
  • MPU6050 (Module GY-521)

Principe de fonctionnement

Le module GY-521 est une carte de développement pour le système microélectromécanqiue MPU6050 (MEM- Microelectromechanical systems). Le module MPU6050 est constitué d’un capteur de température et de deux capteurs micromécaniques: un gyroscope qui permet de mesurer les rotations et un accéléromètre qui permet de mesurer les accélérations dans l’espace. Ces capteurs sont généralement constitués d’une partie mécanique et d’une partie piézoélectrique. Lorsque l’objet est en mouvement la pièce mécanique se déplace contre la partie piézoélectrique qui envoie un signal électrique.

Schéma

Le module peut être alimenté directement via la broche 5V de la carte Arduino. Le Module GY-521 utilise la communication I2C pour s’interfacer avec le microcontrôleur.

  • SDA à la broche A4
  • SCL à la broche A5
  • VCC à la broche 5V
  • GND à la broche GND

Code

Pour s’interfacer avec le module GY-521, et donc le MPU6050, nous allons utiliser la librairie du même nom Adafruit_MPU6050.h. Il est important de noté que, selon le module utilisé, il vous faudra peut être modifier l’adresse I2C pour pouvoir récupérer les mesures. Le code proposé, ici, est le programme de base permettant d’afficher et d’exploiter les mesures du capteur. La librairie propose bien plus de réglages et de paramètres. Pour plus de fonctionnalités, n’hésitez pas à vous reporter à la documentation et aux exemples de la librairie.

//Libraries
#include <Wire.h>//https://www.arduino.cc/en/reference/wire
#include <Adafruit_MPU6050.h>//https://github.com/adafruit/Adafruit_MPU6050
#include <Adafruit_Sensor.h>//https://github.com/adafruit/Adafruit_Sensor

//Objects
Adafruit_MPU6050 mpu;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init i2c (Default pins A4, A5)
  Wire.begin();
  if (!mpu.begin(0x69)) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }

  mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
  mpu.setGyroRange(MPU6050_RANGE_250_DEG);
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
}

void loop() {
  readMPU();
  delay(100);
}

void readMPU( ) { /* function readMPU */
  ////Read acceleromter data
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  /* Print out the values */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");

  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");

  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println("°C");
}

Résultat

Une fois le code téléversé dans l’Arduino, si vous faites bouger le capteur, vous pouvez voir évoluer les valeurs d’accélération dans les différentes directions de l’espace. Vous pouvez aussi vérifier le fonctionnement du capteur de température en collant votre doigt sur le module.

Applications

  • Stabiliser un drone
  • Contrôler un robot par les mouvements de la main
  • Donner de l’équilibre à un robot à deux roues

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?