Suite à la commande du casque capteur d’ondes cérébrales, le produit s’est avéré être défectueux. Par conséquent une alternative permettant de faire avancer l’automobile téléguidée doit être pensée. La solution : un micro détectant les fréquences de la voix et tout dépendant la fréquence captée, l’automobile téléguidée avancera ou reculera.
Author: raphyy12
Création du code processing pour l’environnement graphique du volant
Le code pour obtenir l’angle d’inclinaison du senseur maintenant fait, il s’agit de traduire cette récupération de données qui est l’angle, dans un environnment graphique.
Voici la fonction draw() :
Premièrement, on doit dessiner le volant :

La fonction rotate permet de rotationner la forme complète qui est dessinée. L’angle change à chaque fois qu’on bouge le mpu6050.


Comme on peut voir ci-dessus, on lit la valeur transmise par le mpu et on la soumet à des critères pour l’accepter ou pas. Ainsi, on diminue la charge d’information dans le serial port. Au tout début, lorsqu’on ne faisait que prendre la valeur du mpu et la transmettre pour faire bouger le volant il y avait beaucoup de lag. On a donc dû ajouter des barrières pour bloquer les surplus, comme expliqué dans le code ci-dessus.
Voici la fonction setup()

Ici, on commnuique avec le serial port pour obtenir les informations recueillies par le mpu6050 à travers le arduino.
Voici une vidéo du résultat :
Création du code arduino pour le mpu6050
Après réflexions et recherches sur le mpu6050, la meilleure façon de contrôler l’auto à l’aide du senseur serait de calculer l’angle d’inclinaison que nous créerions à l’aide du senseur pour faire tourner l’auto. En effet, il est possible avec le mpu6050 de déterminer la force gravitationelle exercée sur chacun des axes. Ainsi, on peut utiliser la force en x et en z pour calculer l’angle d’inclinaison avec une simple astuce trigonométrique. J’expliquerai donc le code que nous avons fait pour permettre de recueillir l’information nécessaire, c’est-à-dire l’angle d’inclinaison du mpu6050.
Tout d’abord, il est important de mentionner que le mpu6050 sera à utiliser à plat, dans le sens où l’on peut lire les lettres à l’endroit comme ci-dessous.

CODE :

Donc, la première étape est d’établir la communication avec le mpu6050, chose que l’on fait dans la fonction setupMPU() :

On doit d’abord accéder à l’adresse du mpu qui est : 0b1101000. Le x qu’on peut voir dans la description ci-dessous est un 0 car dans le circuit nous avons connecté la pin AD0 au ground, donc il s’agit de AD0 low.

Ensuite, parce que le mpu6050 est en sleep mode par défaut, nous voulons désactiver le sleep mode en accédant au registre SLEEP (6B) et le mettre à zéro pour pouvoir recevoir des données sans arrêt. On doit ensuite accéder au registre de l’accéléromètre pour le configurer. On le configure ici à la sensibilité la plus basse, car il n’y aura pas de mouvement extrêmement rapide durant la conduite de l’auto et cela nous permettra d’avoir des données plus stable.

Maintenant qu’on a accédé à l’accéléromètre et qu’il est configuré, on veut aller chercher les données brutes pour les placer dans nos variables, puis les traiter pour les transformer sous forme de force g.

Le calcul s’explique par cela :

En effet, la sensibilité de l’accéléromètre à +/-16g est de 2048 LSB/g, ce qui explique la division par 2048 pour trouver la force g.

Pour calculer l’angle, on utilise la formule trigonométrique tan(x) = opp/adj, où x est l’angle en radian, opp est la force g en X et adj la force g en Z. Puisque nous voulons trouver l’angle, on isole x et donc x = arctan(gForceX/gForceZ).
Cette article résume donc le code arduino pour récupérer l’angle d’inclinaison créer par l’utilisateur, qui servira à orienter l’automobile téléguidée.
Voici une vidéo du résultat :
Lorsqu’on penche vers la gauche, on constate que l’angle affichée se rend environ à 1.57 degrés radian ce qui équivaut à 90 degrés et que lorsqu’on penche vers la droite l’angle affichée se rend environ à -1.57 degrés radian ce qui équivaut à -90 degrés.
Calendrier semaine 6

Teste du mpu-6050
Afin de tester et de se familiariser avec le fonctionnement du capteur mpu-6050, nous avons, à partir d’une vidéo Youtube, construit un modèle de représentation graphique en 3 dimensions qui imite les mouvements du capteur sous l’image d’un avion. Il s’agit de la démonstration Teapot.
Voici quelques photos de notre expérience.



Comme on peut voir dans les images, il s’agit d’un ancien projet que nous avons utiliser juste pour démontrer le fonctionnent du mpu-6050. On peut voir que lorsque nous bougeons l’objet équipé du capteur, l’image dans la représentation graphique bouge également.
Autre étude du mpu-6050
Le mpu-6050 est en fait un capteur UMI (unité de mesure interielle). Il existe beaucoup de capteurs UMI comme le mpu-6050, qui sont utilisés, par exemple, dans des robots auto-équilibrés, des téléphones intelligents ou encore des véhicules aériens sans pilote (drone). Ces types de capteur sont donc composés de 2 principales composantes : le gyroscope et l’accéléromètre, expliquées dans la recherche précédente, qui nous aider comprendre le fonctionnement général de cette appareil. Ces deux composantes permettent donc de recueillir des informations quant à la vitesse de l’appareil qui tourne selon un certain axe (gyroscope) et la force g exercée sur l’appareil par la planète terre. Il est important de noter que le capteur mpu-6050 est un capteur à 6 DDL (degrés de liberté), ce qui veut dire qu’il peut transmettre 6 données : 3 venant du gyroscope et 3 venant de l’accéléromètre. Ces informations recueillies permettent d’obtenir également la force magnétique et l’altitude à l’aide de calculs. De plus, le capteur mpu-6050 peut être associé et utilisé à l’aide d’un arduino.
Tout d’abord, pour pouvoir utiliser cette appareil, il faut avant tout qu’il fonctionne. Nous devons donc concevoir le circuit qui nous permettra d’utiliser le mpu-6050.
Le circuit
Qu’est ce qu’on a besoin?
- arduino uno
- jumper wires
- mpu-6050
Plan du circuit :

source : https://maker.pro/arduino/tutorial/how-to-interface-arduino-and-the-mpu-6050-sensor
Comment ça fonctionne?
Le mpu-6050 communique avec le arduino à travers le protocole I2C (Inter-Integrated Circuit en anglais). De façon général, selon ce protocole, les informations sont envoyées en messages. Ces messages sont séparés en cadres de donnée, et chaque message a un cadre d’adresse qui contient l’adresse binaire de l’esclave (système maître/esclave), et un ou plusieurs autres cadre de données contenant les informations transmises
Selon le plan du circuit ci-dessus, on doit connecter le VCC au 5V du arduino. Ensuite, le GND (ground) du arduino doit être connecté au GND du mpu-6050. La pin INT doit être connecté à la pin digital 2. Pour finir, il faut créer un ligne pour le protocole I2C. Pour ce faire, on doit connecter la pin SDA du mpu-6050 sur la pin A4 (analog 4) du arduino, et la pin SCL sur la pin pin A5 (analog 5) du arduino.
Maintenant que le circuit est fait et que l’appareil est fonctionnel, il s’agit donc de trouver comment utiliser les informations que recueille le mpu-6050 pour contrôler la direction de l’automobile téléguidée, et ce à travers un code.
Recherche sur le fonctionnement de base du mpu-6050

Le mpu-6050, que nous fixerons sur un gant, servira donc à orienter la direction de l’automobile téléguidée. De façon fondamentale, le mpu-6050 est composé d’un gyroscope et d’un accéléromètre. Voici brièvement comment fonctionne ces deux composantes de cette pièce :
Un accéléromètre fonctionne selon le principe de l’effet piézoélectrique. Imaginer une boite avec une petite balle à l’intérieur comme dans la photo ci-dessous. Les murs de cette boite sont fait de cristaux piézoélectriques. Lorsqu’on penche la boîte, la balle bouge dans la direction de l’inclinaison causée par la gravité et la balle entre donc en collision avec le mur et crée des petits courants piézoélectriques. Tout dépendant quel mur est touché, et donc quels courant sont activés, on peut déterminé la direction de l’inclinaison et son degré.

Le gyroscope, lui, fonctionne selon le principe de l’accélération de Coriolis. Imaginez qu’il y ait une structure ressemblant à la photo ci-dessous, l’objet gris est en constant mouvement d’en avant à en arrière. Le tout tient en place grâce à des cristaux piézoélectriques. Lorsque le gyroscope est penché sur un côté, les cristaux subissent une force dans la direction de l’inclinaison, qui est causée par l’inertie de l’objet gris en mouvement. Les cristaux produisent ainsi un courant selon l’effet piézoélectrique. Ce courant est ensuite amplifié, puis les valeurs sont traités par des microcontrôleurs.

Ainsi, les capteurs des gants seront initialement à un point (0,0,0), et lorsque, par exemple, l’angle de la main ayant le mpu-6050 fixé dessus changera, l’automobile téléguidée tournera .
Description du projet
En premier lieu, il est important de noter notre source d’inspiration qui nous a poussé à concevoir un projet de cette envergure. Il s’agit d’une vidéo publiée par un youtubeur scientifique nommé Michael Reeves! Dans cette vidéo, ce dernier utilise un casque lui permettant de lire des fréquences émises par son propre cerveau. Il s’agit en fait d’un capteur d’ondes cérébrales. Les informations recueillies par ce capteur sont transférées à un ordinateur, qui utilise celles-ci afin d’activer ou désactiver un piston faisant avancer l’automobile. Drôle de concept, toute de même, mais très inspirant pour notre équipe!
“Il y a deux façons de faire la conception d’un logiciel. Une façon est de le rendre si simple qu’il n’y a selon toute apparence aucun défaut. Et l’autre est de le faire si compliqué qu’il n’y a pas de défaut apparent. “
Tony (C.A.R.) Hoare.
Professeur d’informatique, a implementé Algol 60, chercheur à Microsoft Research.
Ainsi, nous nous sommes inspiré du concept de Michael Reeves pour créer notre propre projet, une automobile téléguidée pouvant être contrôlée par la pensée! En effet, nous avons décidé de contrôler la vitesse de notre automobile en captant les fréquences des ondes cérébrales émises par le cerveau humain.
Comment avance l’automobile?

https://hypertextbook.com/facts/2004/SamanthaCharles.shtml
Comme nous pouvons l’observer dans le tableau ci-dessus, depuis 1981, l’être humain s’intéresse beaucoup aux fréquences des ondes émises par le cerveau humain! Après toutes ses années de recherches, les scientifiques ont conclu que certaines fréquences de ces ondes correspondent à certains états de notre cerveau. Pour notre projet, nous nous intéresserons plus particulièrement aux fréquences Alpha et Bêta, puisque ce sont elles qui sont les plus fréquemment utilisées par notre cerveau lors de l’état d’éveil. Par conséquent, afin de déplacer notre automobile téléguidée, nous utiliserons les fréquences émises par le cerveau lorsque l’utilisateur est concentré, c’est-à-dire les fréquences Bêta, se situant entre 14 Hz et 30 Hz. Toutes autres fréquences émises par le cerveau n’aura aucun impact sur l’automobile.
Comment allons-nous tourner?

https://www.nzta.govt.nz/resources/roadcode/about-driving/using-lanes-correctly/
Afin de diriger notre automobile, nous avons comme but de simuler la conduite à l’aide d’un volant invisible! Pour ce faire, nous créerons une paire de gants qui sera attachée à un Arduino, et sur ces gants, il y aura des capteurs de distance pour mesurer la distance entre le sol et les gants. Avec ces informations, nous pourrons ensuite comprendre l’intention de l’utilisateur et transmettre les informations à l’automobile téléguidée!