gyroscope 6050 programmation & branchement

salut, je dispose d'une carte arduino, d'un gyroscope / accéléromètre 6 axes 6050, et je rencontre quelque difficulté. Mon but est aujourd'hui seulement de pouvoir lire les informations des angles x y z. Je branche les câbles de la manière que j'ai vu dans la plupart des forums / blogs soit : 3,3 v ==> VCC GND ==> GND A4 ==> SCL A5 ==> SDA ( Je ne comprend d’ailleurs pas pourquoi toutes les sortie du capteur ne sont pas prise) hors sujet :P bref ! J'ai essayé une grande quantité de programme sur le arduino, mais les valeurs sont soit "17" ou "18" (17 pourl'A4 et 18 pour l'A5), j'en conclut que le microcontrôleur ne me renvoi pas les bonnes informations. J'ai aussi utilisé les bibliothèques, pas très concluant non plus, car j'ai plein de message d'erreur ( sachant bien sur que les librairies sont bien installées, et que je me sers beaucoup de programme trouvé sur le net ) ! Voilà, j'attend qu'une aimable personne vienne a mon aide, pour résoudre mon problème ! ;) merci

Can the moderator relocate this post to the french section ?

Quelles erreurs tu obtiens , on ne peut pas deviner.

Le brochage du bus S2I de la carte UNO : A4 =SDA, A5= SCL. Tu as inversé ?

J'ai réussi a résoudre les erreurs en réinstallant le logiciel, par contre je n'est toujours pas trouvé de programme qui puisse me donner la valeur des 3 axes x,y,z. J'ai trouvé sur un forum (http://www.binano.fr/viewtopic.php?f=2&t=54990) une formule permettant de calculer les angles ( ici que de X ) : "angleX = (0.900)(angleX + dataGyroY*0.10) + (0.10)(dataAccelX);" Mais je n'arrive pas a créer un programme qui contienne cela et je n'arrive pas non plus a utiliser les bibliothèques. ( "I2Cdev.h" et"MPU6050.h") Voilà, un conseil svp :)

Au hasard tu as ça: https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/Examples/MPU6050_raw/MPU6050_raw.ino

Toutes les fonctions, avec plein de commentaires qui permettent de les utiliser facilement, sont ici: https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/MPU6050.cpp

Le plus important est de choisir la bonne adresse: 0x68 pour un module de chez Sparkfun, 0x69 pour un module de chez Drotek, pour les autres il faut se renseigner.

Homerdalors: J'ai réussi a résoudre les erreurs en réinstallant le logiciel, par contre je n'est toujours pas trouvé de programme qui puisse me donner la valeur des 3 axes x,y,z. J'ai trouvé sur un forum (http://www.binano.fr/viewtopic.php?f=2&t=54990) une formule permettant de calculer les angles ( ici que de X ) : "angleX = (0.900)(angleX + dataGyroY*0.10) + (0.10)(dataAccelX);" Mais je n'arrive pas a créer un programme qui contienne cela et je n'arrive pas non plus a utiliser les bibliothèques. ( "I2Cdev.h" et"MPU6050.h") Voilà, un conseil svp :)

les libs sont installées ou il faut? je suis en plein dessus pour un petit projet astro après avoir retrouvé le module dans ma drouille :( . inutile donc......... indispensable :)

Re, merci pour le programme, les chiffres semblent changer en fonction de la manière que je tourne le gyroscope, mais je n'arrive pas a avoir les données en dégrées. comment faut il faire, car je dois avouer que la j'en ai aucune idée, malgré les recherches que je fais. :/

Le programme suivant permet d’afficher les orientations en degrés:

/******************************************************************************
Exploitation des mesures de la centrale inertielle de Geeros.
Ce programme est destiné à fonctionner avec Geeros Erectus,
Geeros Wifi ou Geeros Lynx, disponibles à l'adresse suivante:
http://boutique.3sigma.fr/20-geeros-erectus.html
http://boutique.3sigma.fr/21-geeros-wifi.html
http://boutique.3sigma.fr/22-geeros-lynx.html

ATTENTION: ce programme fonctionne uniquement avec les robots livrés
avant le 1er juillet 2013

Auteur: 3Sigma
Version 2.0 - 17/10/2013
*******************************************************************************/

// Librairie Arduino requise pour communiquer avec des composants sur interface I2C
#include "Wire.h"

// Inclusion d'une bibliothèque permettant de communiquer avec le capteur accélérométrique
// et gyroscopique 3 axes sur interface I2C
// Télécharger à l'adresse http://www.3sigma.fr/telechargements/I2Cdev.zip
// et décompresser dans le sous-répertoire « libraries » de votre installation Arduino
#include "I2Cdev.h"

// Inclusion d'une bibliothèque intègrant de nombreuses fonctions permettant d'accéder aux
// informations mesurées par le MPU6050, qui est le le capteur accélérométrique et
// gyroscopique 3 axes intégré à Geeros.
// Télécharger à l'adresse http://www.3sigma.fr/telechargements/MPU6050.zip
// et décompresser dans le sous-répertoire « libraries » de votre installation Arduino
#include "MPU6050_6Axis_MotionApps20.h"


// Déclaration de l'objet "capteur accélérométrique et gyroscopique"
MPU6050 mpu;

uint16_t packetSize;    // taille de paquet DMP attendu (taille par défaut: 42 octets)
uint16_t fifoCount;     // compte de tous les octets actuellement dans la FIFO
uint8_t fifoBuffer[64]; // buffer de stockage de la FIFO

Quaternion q;           // [w, x, y, z]         quaternion
VectorFloat gravity;    // [x, y, z]            vecteur de pesanteur
float euler[3];         // [psi, theta, phi]    angles d'Euler angle
float ypr[3];           // [yaw, pitch, roll]   lacet/tangage/roulis 

// Initialisations
void setup(void) {
  
  // Liaison série.
  // ATTENTION: ne pas modifier la vitesse de transmission de la liaison série,
  Serial.begin(57600);
  Serial.flush();
        
  // Initialisation du bus I2C
  Wire.begin(0x20);

  // Initialisation du capteur accélérométrique et gyroscopique
  Serial.println("Initialisation de l'IMU...");
  mpu.initialize();
  
  // Chargement et configuration du DMP
  int devStatus = mpu.dmpInitialize();
  
  if (devStatus == 0) {
    // Activation du DMP
    Serial.println(F("Activation du DMP..."));
    mpu.setDMPEnabled(true);
    
    // Acquisition de la taille de paquet DMP pour comparaison ultérieure
    packetSize = mpu.dmpGetFIFOPacketSize();
  
  } else {
    // ERREUR!
    // 1 = échec de chargement initial de la mémoire
    // 2 = échec des mises à jour de configuration du DMP
    Serial.print(F("Echec d'initialisation du DMP (code "));
    Serial.print(devStatus);
    Serial.println(F(")"));
  }
  
  // Test de la connexion
  Serial.println("Test de la connexion...");
  Serial.println(mpu.testConnection() ? "Connexion MPU6050 réussie" : "Connexion MPU6050 échouée");  

}


// Boucle principale
void loop() {

    // Acquisition du compte actuel de la FIFO
    fifoCount = mpu.getFIFOCount();
    
    // Surveillance d'overflow (qui ne devrait jamais se produire sauf si le code est inefficace)
    if (fifoCount == 1024) {
      // Reset pour pouvoir continuer proprement
      mpu.resetFIFO();
      Serial.println(F("FIFO overflow!"));
    }  
    else {
      // Attente (a priori très courte) pour des données de longueur correcte
      while (fifoCount < packetSize) {
        fifoCount = mpu.getFIFOCount();
      }
  
      // Lecture d'un paquet dans la FIFO
      mpu.getFIFOBytes(fifoBuffer, packetSize);
      
      // Mise à jour du compte de la FIFO dans le cas où il y a plus d'un paquet disponible
      // (ce qui permet d'en lire immédiatement plus sans attendre une interruption)
      fifoCount -= packetSize;
  
      // Détermination des angles d'Euler en degrés
      mpu.dmpGetQuaternion(&q, fifoBuffer);
      mpu.dmpGetGravity(&gravity, &q);
      mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

      // Envoi des données sur la liaison série suivant le protocole du programme de visualisation
      Serial.print("!");
      Serial.print("ANG:");
      Serial.print(-ypr[1] * 180/M_PI);
      Serial.print(",");
      Serial.print(ypr[2] * 180/M_PI);
      Serial.print(",");
      Serial.print(ypr[0] * 180/M_PI);
      Serial.println();    
    }

}

merci beaucoup pour ce programme, je vais etudier tous ca en detail ! :)

Salut à tous,
J’ai récemment acheter un Arduino uno et un mpu6050 dans le but de créer un Steadicam dslr (type Mövi M10 pour les intéresser) en moins compliqué, moins fini.
Dans un premier temps, je cherche à indiquer les différentes inclinaisons de mon accéléromètre et pourquoi pas faire comme dans cette vidéo : MPU6050 Arduino and Processing - YouTube
J’ai fait pas mal de recherche sur le web, et j’ai trouvé différents programmes que j’ai vérifier avec le logiciel Arduino.
Mon problème est que lors de cette vérification, différentes erreurs dans le programme sont détectés.
Alors :
-Faut-ils vérifier les programmes avec l’Arduino et le mpu6050 connectés au PC ?
-Ou je pourrais trouver un programme prêt à être utilisé ?
-Est-ce que je loupe des “étapes” lors de mon “processus” ?

J’ai déjà fait quelques expériences avec mon Arduino (du style faire clignoter une led), je maitrise le “minimum” des bases de l’Arduino.

Merci d’avance pour votre aide.

Bonjour,

Ca serait intéressant de savoir quelles erreurs tu obtiens.
Sinon, en programme prêt à être utilisé (sur Arduino Uno, connecté à unPC sur lequel Python est installé), tu as ça:
http://www.3sigma.fr/Telechargements-Geeros.html
(cherche vers le bas de la page: Application de visualisation 3D de l’orientation de l’IMU dans l’espace).
Le premier programme Arduino fonctionne avec un MPU 6050 dont l’adresse est 0x68, le second dont l’adresse est 0x69.

Merci pour toutes ces infos 3Sigma. Juste quelques petites précisions : -Les adresses 0x68 et 0x69 correspondent à un câblage ? si oui, m'en dire un peu plus svp :) -De plus j'ai encore quelques erreurs qui apparaissent (en ouvrant le programme avec l'ide Arduino) :

Geeros_IMU.ino:23:20: error: I2Cdev.h: No such file or directory Geeros_IMU.ino:30:40: error: MPU6050_6Axis_MotionApps20.h: No such file or directory Geeros_IMU:34: error: 'MPU6050' does not name a type Geeros_IMU:40: error: 'Quaternion' does not name a type Geeros_IMU:41: error: 'VectorFloat' does not name a type Geeros_IMU.ino: In function 'void setup()': Geeros_IMU:58: error: 'mpu' was not declared in this scope Geeros_IMU.ino: In function 'void loop()': Geeros_IMU:91: error: 'mpu' was not declared in this scope Geeros_IMU:113: error: 'q' was not declared in this scope Geeros_IMU:114: error: 'gravity' was not declared in this scope

Encore merci !!!!

Ben73: Merci pour toutes ces infos 3Sigma. Juste quelques petites précisions : -Les adresses 0x68 et 0x69 correspondent à un câblage ? si oui, m'en dire un peu plus svp :) -De plus j'ai encore quelques erreurs qui apparaissent (en ouvrant le programme avec l'ide Arduino) :

Geeros_IMU.ino:23:20: error: I2Cdev.h: No such file or directory Geeros_IMU.ino:30:40: error: MPU6050_6Axis_MotionApps20.h: No such file or directory Geeros_IMU:34: error: 'MPU6050' does not name a type Geeros_IMU:40: error: 'Quaternion' does not name a type Geeros_IMU:41: error: 'VectorFloat' does not name a type Geeros_IMU.ino: In function 'void setup()': Geeros_IMU:58: error: 'mpu' was not declared in this scope Geeros_IMU.ino: In function 'void loop()': Geeros_IMU:91: error: 'mpu' was not declared in this scope Geeros_IMU:113: error: 'q' was not declared in this scope Geeros_IMU:114: error: 'gravity' was not declared in this scope

Encore merci !!!!

c'est l'adressage du composant

pas besoin de pas parler anglais pour comprendre qu'il trouve pas un fichier ;) la lb est absente

Merci après avoir réfléchis 2 minutes, j'ai compris qu'effectivement c'était la librairie qui merde je suis dessus.

De nouvelles erreurs :

Geeros_IMU.ino:23:20: error: I2Cdev.h: No such file or directory In file included from C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:37, from Geeros_IMU.ino:30: C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/helper_3dmath.h: In member function 'float Quaternion::getMagnitude()': C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/helper_3dmath.h:74: error: 'sqrt' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/helper_3dmath.h: In member function 'float VectorInt16::getMagnitude()': C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/helper_3dmath.h:111: error: 'sqrt' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/helper_3dmath.h: In member function 'float VectorFloat::getMagnitude()': C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/helper_3dmath.h:178: error: 'sqrt' was not declared in this scope In file included from Geeros_IMU.ino:30: C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpInitialize()': C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:285: error: 'delay' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpGetEuler(float*, Quaternion*)': C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:640: error: 'atan2' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:641: error: 'asin' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpGetYawPitchRoll(float*, Quaternion*, VectorFloat*)': C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:647: error: 'atan2' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:649: error: 'sqrt' was not declared in this scope C:\Users\bende_000\Desktop\arduino-1.0.5-r2\libraries\MPU6050/MPU6050_6Axis_MotionApps20.h:649: error: 'atan' was not declared in this scope

Bon alors : Plus d'erreur, le programme est bon :) :) :) Maintenant comment faire afficher l'animation 3D ? j'ai essayer d'ouvrir Python mais il se referme aussi tôt :( Qu'est-ce qu'il se passe ?

Python est un interpréteur en ligne de commande, as-tu lancé un fichier .py ?

Je lance un fichier .py à chaque fois. J'ai réessayer de télécharger Python sur le site officiel mais toujours le même problème. J'ai qu'un seul fichier qui est un .py Ou télécharger Python ? ou alors que faire ? Comment exécuter le programme avec python ? (programme qui est déjà dans mon arduino uno)

Tu dois aussi installer Vpython comme décrit dans le .py Lance le fichier depuis un terminal c'est plus facile pour voir les erreurs .

J’ai donc installé Vpython et je me retrouve avec 2 “fichiers” :
-python (le logiciel)
-Le programme “GeerosInterfaceIMU_3D” que je peut ouvrir en faisant clique droit => Edit with IDLE.
Je clique sur Run => Run Module et voila ce qui s’affiche dans une deuxième fenêtre :

Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32
Type “copyright”, “credits” or “license()” for more information.

================================ RESTART ================================

Traceback (most recent call last):
File “C:\Users\bende_000\Desktop\GeerosInterfaceIMU_3D.py”, line 30, in
from visual import *
ImportError: No module named visual

Je suppose que quand tu parle de terminal tu parle de cmd.
j’ai fait pas mal de recherches et pas moyen d’exécuter ce programme.
Donc comment exécuter ce programme pour afficher la modélisation 3D ?