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?
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):
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 :
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 :
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 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
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:
-
mettre en commentaire cette ligne : //#define OUTPUT_READABLE_YAWPITCHROLL
-
retirer du commentaire cette ligne : #define OUTPUT_TEAPOT
ou le code complet à téléverser dans l’arduino :
Lancer maintenant le steck processing suivant:
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 :
Domo Geek R2D2 BB8 Voyage et tour du monde Il était une fois...(petites histoires)
http://domochris.nexgate.ch