Table des matières:

Comment utiliser le module GY511 avec Arduino [Créer une boussole numérique] : 11 étapes
Comment utiliser le module GY511 avec Arduino [Créer une boussole numérique] : 11 étapes

Vidéo: Comment utiliser le module GY511 avec Arduino [Créer une boussole numérique] : 11 étapes

Vidéo: Comment utiliser le module GY511 avec Arduino [Créer une boussole numérique] : 11 étapes
Vidéo: Use the HMC5883L 3-axis sensor with an Arduino - Tutorial 2024, Novembre
Anonim
Comment utiliser le module GY511 avec Arduino [Créer une boussole numérique]
Comment utiliser le module GY511 avec Arduino [Créer une boussole numérique]

Aperçu

Dans certains projets électroniques, nous avons besoin de connaître l'emplacement géographique à tout moment et de faire une opération spécifique en conséquence. Dans ce didacticiel, vous apprendrez à utiliser le module de boussole LSM303DLHC GY-511 avec Arduino pour créer une boussole numérique. Tout d'abord, vous découvrirez ce module et son fonctionnement, puis vous verrez comment interfacer le module LSM303DLHC GY-511 avec Arduino.

Ce que vous apprendrez

  • Qu'est-ce que le module boussole ?
  • Module boussole et interface Arduino.
  • Créez une boussole numérique avec le module GY-511 et Arduino.

Étape 1: Informations générales sur le module Compass

Informations générales sur le module de boussole
Informations générales sur le module de boussole

Le module GY-511 comprend un accéléromètre 3 axes et un magnétomètre 3 axes. Ce capteur peut mesurer l'accélération linéaire à pleine échelle de ± 2 g / ± 4 g / ± 8 g / ± 16 g et les champs magnétiques à pleine échelle de ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

Lorsque ce module est placé dans un champ magnétique, selon la loi de Lorentz un courant d'excitation induit dans sa bobine microscopique. Le module de boussole convertit ce courant en tension différentielle pour chaque direction de coordonnées. En utilisant ces tensions, vous pouvez calculer le champ magnétique dans chaque direction et obtenir la position géographique.

Conseil

QMC5883L est un autre module de boussole couramment utilisé. Ce module, qui a une structure et une application similaires à celles du module LMS303, présente des performances légèrement différentes. Donc, si vous faites des projets, faites attention à votre type de module. Si votre module est QMC5882L, utilisez la bibliothèque et les codes appropriés qui sont également inclus dans le didacticiel.

Étape 2: Composants requis

Composants requis
Composants requis

Composants matériels

Arduino UNO R3 * 1

Accéléromètre 3 axes GY-511 + magnétomètre * 1

Servomoteur TowerPro SG-90 * 1

Module d'affichage à cristaux liquides 1602 * 1

Cavaliers * 1

Applications logicielles

IDE Arduino

Étape 3: Interfaçage du module de boussole GY-511 avec Arduino

Interfacer le module de boussole GY-511 avec Arduino
Interfacer le module de boussole GY-511 avec Arduino
Interfacer le module de boussole GY-511 avec Arduino
Interfacer le module de boussole GY-511 avec Arduino

Le module de boussole GY-511 a 8 broches, mais vous n'en avez besoin que de 4 pour s'interfacer avec Arduino. Ce module communique avec Arduino en utilisant le protocole I2C, donc connectez les broches SDA (sortie I2C) et SCK (entrée d'horloge I2C) du module aux broches I2C de la carte Arduino.

RemarqueComme vous pouvez le voir, nous avons utilisé le module GY-511 dans ce projet. Mais vous pouvez utiliser cette instruction pour configurer d'autres modules de boussole LMS303.

Étape 4: Étalonnage du module de boussole GY-511

Pour naviguer, vous devez d'abord calibrer le module, c'est-à-dire régler la plage de mesure de 0 à 360 degrés. Pour ce faire, connectez le module à Arduino comme indiqué ci-dessous et téléchargez le code suivant sur votre carte. Après avoir exécuté le code, vous pouvez voir les valeurs minimales et maximales de la plage de mesure pour les axes X, Y et Z dans la fenêtre du moniteur série. Vous aurez besoin de ces chiffres dans la partie suivante, alors notez-les.

Étape 5: Circuit

Circuit
Circuit

Étape 6: Coder

Dans ce code, vous avez besoin de la bibliothèque Wire.h pour la communication I2C et de la bibliothèque LMS303.h pour le module boussole. Vous pouvez télécharger ces bibliothèques à partir des liens suivants.

Bibliothèque LMS303.h

Bibliothèque Wire.h

RemarqueSi vous utilisez QMC5883, vous aurez besoin de la bibliothèque suivante:

MechaQMC5883L.h

Ici, nous expliquons le code du LMS303, mais vous pouvez également télécharger les codes du module QMC.

Voyons quelques-unes des nouvelles fonctions:

boussole.enableDefault();

Initialisation du module

boussole.read();

Lecture des valeurs de sortie du module boussole

running_min.z = min(running_min.z, boussole.m.z); running_max.x = max(running_max.x, boussole.m.x);

Détermination des valeurs minimales et maximales de la plage de mesure en comparant les valeurs mesurées.

Étape 7: Créer une boussole numérique

Après avoir calibré le module, nous allons construire une boussole en connectant un servomoteur au module. Pour que l'indicateur de servo, nous montre toujours la direction nord, comme la flèche rouge sur la boussole. Pour ce faire, le module de boussole calcule d'abord la direction géographique et l'envoie à Arduino, puis, en appliquant un coefficient approprié, vous calculerez l'angle auquel le servomoteur doit tourner pour que son indicateur pointe vers le nord magnétique. Finalement, nous appliquons cet angle au servomoteur.

Étape 8: Circuit

Circuit
Circuit

Étape 9: Coder

Code
Code

Pour cette partie, vous avez également besoin de la bibliothèque Servo.h, installée par défaut sur votre logiciel Arduino.

Voyons quelques-unes des nouvelles fonctions:

Servo Servo1;

Initialisation du module

boussole.read();

Présentation de l'objet servomoteur

Servo1.attach(servoPin); boussole.init(); boussole.enableDefault();

Initialisation du module compas et du servomoteur

L'argument Servo1.attach() est le numéro de la broche connectée au servomoteur.

boussole.m_min = (LSM303::vector){-32767, -32767, -32767}; boussole.m_max = (LSM303::vector){+32767, +32767, +32767};

A l'aide de ces lignes, vous définissez les valeurs minimales et maximales pour mesurer la plage obtenue dans la partie précédente.

titre flottant =compass.heading((LSM303::vector){0, 0, 1});

La fonction cap() renvoie l'angle entre l'axe de coordonnées et un axe fixe. Vous pouvez définir l'axe fixe avec un vecteur dans l'argument de la fonction. Par exemple, ici, en définissant le (LSM303:: vecteur) {0, 0, 1}, l'axe Z est considéré comme un axe constant.

Servo1.write(titre);

La fonction Servo1.write() applique la valeur lue par le module de boussole au servomoteur.

RemarqueNotez que le servomoteur peut avoir un champ magnétique, il est donc préférable de placer le servomoteur à une distance appropriée du module de boussole, afin de ne pas faire dévier le module de boussole.

Conseillé: