Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Domotique, objets connectés et objet 3D; DomoChris
11 septembre 2015

Accéléromètre/ gyroscope /température MPU6050

Aujourd'hui, on joue avec un accéléromètre/ gyroscope /capteur température (bah oui !), j'ai nommé le MPU6050 (coût 3-4€).

Un accéléromètre est un capteur qui, fixé à un mobile ou tout autre objet, permet de mesurer l'accélération linéaire de ce dernier, un gyroscope est un capteur de position angulaire dixit Wikipedia, en gros c'est ce qu'il y a dans votre iphone/smartPhone lorsque vous le bougez et que le jeu comprend les mouvements (ou la manette wii pour ceux qui n'ont pas de téléphone!).

J'ai un projet en tête avec ce petit module mais l'on y reviendra plus tard. Le but pour l'instant étant de capturer via un microprocesseur (j'ai nommé mon fidèle allié l'Arduino) les accélérations et les positions angulaires pour ensuite, en fonction des valeurs, faire des actions.

     Voilà pour l'instant ce que je peux faire avec, ça donne des idées? Allez lâchez vous et mettez en commentaire (tout en bas).quel genre de chose vous penseriez faire avec ça? 

 

IMG_20150911_113617

 

Pour ceux que je n'ai pas perdus en cour de chemin, les curieux ou ceux qui désirent reproduire la même chose, voilà les étapes à rėaliser.

 1)Matériel

 Il nous faut un Arduino (j'ai personnellement utilisé un Nano car il est compact mais un Uno ou un Mega ferait très bien l'affaire) ainsi que  l´accélèromètre gyroscope MPU6050 (coup de l'opération environs 5-6€)

2)Branchement

L'accéléromètre / gyroscope MPU6050 fonctionne avec un protocole de communication I2C (c'est un bus de communication), voilà comment le brancher:

 

Nano

 I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library (documentation on the Wiring website).

 connexion :

 INT => D2

SDA => A4

SCL => A5

GND => GND

VCC => 5V

 

3)Adresse I2C

Il faut maintenant connaître l'adresse I2C du MPU6050, pour celà on va se servir d'un petit code qui va scanner toutes les adresses I2C jusqu'a ce que quelque chose réponde:

Dans mon cas voici l'adresse I2C : 0x68

 Le Programme est à charger dans l'IDE de l'arduino (le logiciel qui permet de charger les codes dans l'arduino):

Scan_I2C

 En ouvrant le moniteur série on trouve l'adresse I2C


4) 
Code accéléromètre

 Maintenant que l'on connaît l'adresse I2C on va pouvoir communiquer antre l'arduino et le MPU6050, je me suis basé sur le code de KRODAL :

ACCELEROMETRE

Lorsque l'on ouvre le moniteur série, on retrouve des valeurs correspondant à l'accélération, la température et le gyroscope


5)Processing - Arduino - MPU6050

Pour rendre tout celà un peu plus ludique, on va essayer de faire bouger un avion en fonction de l'angle sur l'écran d'un pc.

on va donc connecter l'arduino et le MPU6050 à un pc sur lequel on aura installé le logiciel processing. Dans le processing on mettra un bout de code (sktech) qui permettra d'interpréter les données envoyées par l'arduino et faire bouger l'image de l'avion.

C'est une partie ou j'ai bien galéré, ne connaissant pas le processing et ayant beaucoup de mal à trouver les bonnes versions de librairie, de version d'openGL et de protocole, de communication entre le processing et l'arduino. Heureusement suite à une insomnie c'est tombé en marche! 

Pour vous éviter toutes ces galères, voici ce qu'il faut récupérer;

 Télécharger les librairies Arduino nécessaires   et sketck processsing : https://github.com/jrowberg/i2cdevlib

 déizipper et copier  i2cdevlib-master\i2cdevlib-master\Arduino\I2Cdev et i2cdevlib-master\i2cdevlib-master\Arduino\MPU6050 dans C:\Program Files (x86)\Arduino\libraries.

Ouvrir l'IDE de l'arduino et chercher l'exemple i2cdevlib-master\i2cdevlib-master\Arduino\MPU6050\Examples\MPU6050_DMP6\MPU6050_DMP6.ino,  le Téléverbier dans l'arduino. mettre le moniteur série en 115200 baud, vous devez avoir ce message :

MPU6050

 

 

Taper alors n'importe quelle lettre et faire envoyer. Des chiffres ou symbols doivent apparaître.Fermer l'IDE.

 6)Processing

Il faut en 1er télécharger l'application processing : 

Processing.org

Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology.

https://www.processing.org

Décompresser le zip du processing puis lancer une fois Proceesing.exe.

Ensuite il faut télécharger les librairies processing qui vont bien (celles que j'ai galéré à trouver, et fini par avoir via un sombre site espagnol!): 

ou

https://bitbucket.org/postspectacular/toxiclibs/downloads/toxiclibs-complete-0020.zip

 

Décompresser ces librairies et les mettre dans Mes documents\Processions\libraries (attention à ne pas faire de fautes de frappe...ça m’est arrivé…), on doit également pouvoir les mettre dans le répertoire du sketch\Libraries (mais dans mon cas celà n'a pas fonctionné comme ça...)

Lorsque l’on lance le logiciel processing dans l’onglet “sketch / importer un librarie on doit voir les nouvelles librairies contribuer :

 

 

Si comme moi vous avez des problèmes d’importation de librairie (dans mon cas, c'est dû à une installation d’une autre version de Processing), aller dans C:\Users\NomUtilisateur\AppData\Roaming\Processing (en remplaçant NomUtilisateur par la bonne valeur puis coller dans le fichier Préférences txt ces valeurs ci dessous en modifiant la ligne sketchbook.path.three=D:\NomUtilisateur\Mes Documents\Processing

 préférences

J’ai du également mettre à jour le driver de ma carte graphique pour le support OpenGL…

il y a maintenant une modification à apporter au niveau du sketch arduino pour qu’il communique avec le processing:

 

  1. mettre en commentaire cette ligne : //#define OUTPUT_READABLE_YAWPITCHROLL

  2. retirer du commentaire cette ligne  : #define OUTPUT_TEAPOT

ou le code complet à téléverser  dans l’arduino :

 MPU6050_DMP6_TEAPOT

Lancer maintenant le steck processing suivant:

MPUTeapot

 

J’ai également du faire une modification dans le stetch du processing, car par defaut il va chercher les ports de communication utilisés mais celà ne fonctionnait pas, j’ai donc forcé le port com dans le sketch :

 

// get the first available port (use EITHER this OR the specific port code below)

  // String portName = Serial.list()[0]; //désactive la recherche automatique du port

   

   // get a specific serial port (use EITHER this OR the first-available code above)

  String portName = "COM8"; //modifier le port en fonction de votre configuration


Voilà on a maintenant une communication du capteur gyroscopique au pc via l'arduino et une petite application marrante. J'ai maintenant toutes les billes pour bien réfléchir à la suite de mon projet. La suite au prochain épisode! :-)

 

Retrouvez tous mes blog sur Domochris.fr :

Domochris

Domo Geek R2D2 BB8 Voyage et tour du monde Il était une fois...(petites histoires)

http://domochris.nexgate.ch

 




Publicité
Publicité
Commentaires
J
Excellent!!!!! Par contre le sombre site espagnol n'est plus disponible. J'ai trouvé les lib sur https://bitbucket.org/postspectacular/toxiclibs/downloads/ et elles fonctionnent parfaitement.<br /> <br /> Merci pour cet excellent tuto qui nous évite bien des soucis!
Répondre
Domotique, objets connectés et objet 3D; DomoChris
Publicité
Archives
Publicité