L'ajout d'un module boussole à votre microcontrôleur Arduino ouvre une foule de possibilités pour les projets. Voici comment en connecter un et l'utiliser.

Dans les projets de bricolage modernes, il est assez courant de trouver des capteurs avancés tels que des accéléromètres et des magnétomètres interfacés avec des microcontrôleurs. Bien que vous ayez peut-être utilisé ces capteurs sur votre téléphone, il est difficile d'imaginer comment ces modules fonctionnent, mais c'est étonnamment simple.

Le capteur magnétomètre boussole GY-271 permet la détection d'orientation pour diverses applications. Ici, nous allons explorer le processus d'interfaçage du capteur GY-271 avec un microcontrôleur Arduino, comment le calibrer et examiner les problèmes que vous pourriez rencontrer en le faisant.

Qu'est-ce que le module boussole GY-271?

Le module boussole GY-271 est un magnétomètre très sensible qui peut mesurer les champs magnétiques en trois dimensions. Il est utilisé pour détecter le champ magnétique terrestre et déterminer la direction ou l'orientation des appareils dans des applications telles que les systèmes de navigation, la robotique et les drones. Considérez-le comme une boussole numérique très précise. Ce capteur est équipé d'un design compact et robuste qui le rend facile à installer et à utiliser dans un large éventail de projets.

instagram viewer

Comment fonctionne le module boussole GY-271?

Le module boussole GY-271 HCM5883L contient un capteur magnétomètre à 3 axes, qui est basé sur la technologie magnéto-résistive anisotrope (AMR). Le capteur mesure la force et la direction du champ magnétique terrestre en détectant les changements de résistance de ses éléments AMR internes.

Lorsque le capteur est exposé à un champ magnétique, la résistance des éléments AMR change, générant une tension proportionnelle à la force et à la direction du champ magnétique. Le processeur de signal numérique du capteur convertit ensuite cette tension en un signal numérique, qui peut être lu par un microcontrôleur. En mesurant la tension dans les trois axes, le capteur peut fournir des lectures très précises de l'intensité et de la direction du champ magnétique en trois dimensions.

Connexion du GY-271 à un Arduino Uno

La connexion de ce module à l'Arduino est assez simple. Nous avons également couvert d'autres modules Arduino faciles à utiliser qui peuvent aider à faire évoluer votre projet à l'avenir. Le module GY-271 a un total de cinq broches, y compris VCC, Terre, et trois broches de signal (SDA, SCL, et DRDY).

Vous aurez besoin des composants suivants :

  • Module boussole GY-271 HMC5883L
  • Arduino Uno (ou autre modèle)
  • Fils de liaison (mâle-mâle et mâle-femelle)
  • Planche à pain (facultatif)

Tout d'abord, connectez le VCC et Terre broches du module GY-271 aux 5V et Terre broches de l'Arduino Uno, respectivement.

Ensuite, connectez le SDA et SCL broches du module aux A4 et A5 broches analogiques de l'Arduino Uno, respectivement.

Installation des bibliothèques nécessaires

Avant de pouvoir commencer à travailler avec le module boussole GY-271 et Arduino, vous devez installer les bibliothèques nécessaires pour communiquer avec le capteur.

La première bibliothèque que vous devez inclure dans votre croquis est la bibliothèque Wire, qui est utilisée pour la communication I2C entre l'Arduino et le capteur. La bibliothèque Wire est préinstallée avec l'IDE Arduino, vous n'avez donc pas besoin de la télécharger séparément. Pour installer le second, le HMC5883L bibliothèque, vous devrez suivre ces étapes :

Ouvrez l'IDE Arduino et accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques.

Dans le gestionnaire de bibliothèque, recherchez HMC5883L dans la barre de recherche.

Sélectionnez le HMC5883L bibliothèque spécifiquement d'Adafruit. Une fois la bibliothèque installée, vous pouvez l'inclure dans votre croquis Arduino en allant sur Esquisser > Inclure la bibliothèque > HMC5883L.

Comprendre le code

Vous devez écrire un programme qui initialise le capteur, lit ses données et calcule la force et la direction du champ magnétique terrestre. Le code complet peut être téléchargé à partir de notre site officiel Référentiel GitHub.

Au début du code, vous devez inclure les bibliothèques nécessaires que vous venez de télécharger.

#inclure
#inclure
#inclure

N'oubliez pas d'attribuer un ID unique au capteur. Utilisez cette ligne pour faire cela :

Adafruit_HMC5883_Unifiedmag = Adafruit_HMC5883_Unified(12345);

Dans le code de configuration, démarrez le moniteur série et vérifiez si le capteur répond. Vous pouvez imprimer des messages sur le moniteur pour mettre à jour l'état du capteur :

annulerinstallation(annuler)
{
En série.commencer(9600);
En série.println("Test du magnétomètre HMC5883"); En série.println("");

/* Initialise le capteur */
si(!mag.commencer())
{
En série.println("Oups, pas de HMC5883 détecté... Vérifiez votre câblage !");
alors que(1);
}
}

Dans la boucle, obtenez d'abord un nouvel événement de capteur :

capteurs_event_t événement;
mag.getEvent(&event);

Affichez ensuite les lectures du capteur sur le moniteur série. N'oubliez pas de régler le débit en bauds sur 9600​​​​.

En série.imprimer("X: "); En série.imprimer(événement.magnétique.x); En série.imprimer(" ");
En série.imprimer("Y: "); En série.imprimer(événement.magnétique.y); En série.imprimer(" ");
En série.imprimer(« Z: »); En série.imprimer(événement.magnétique.z); En série.imprimer(" ");En série.println("Utah");

Tenez le module de sorte que Z pointe "vers le haut" et mesurez le cap avec X et Oui. En procédant ainsi, vous pouvez alors calculer le cap lorsque le magnétomètre est de niveau. Cette ligne de code aide à cela :

flotter titre = atan2(événement.magnétique.y, événement.magnétique.x);

Une fois que vous avez votre titre, vous devez ensuite ajouter votre DéclinaisonAngle, qui est l'erreur du champ magnétique à votre emplacement.

flotter angle de déclinaison = 0.663;
 cap += declinationAngle ;

Vous pouvez facilement trouver l'angle de déclinaison de votre région sur le Site de déclinaison magnétique. Si pour une raison quelconque vous ne trouvez pas votre angle de déclinaison, commentez les deux lignes de votre code.

Commenter les deux lignes de code peut entraîner des lectures de capteur erronées. Faites de votre mieux pour calibrer le capteur avant utilisation.

Enfin, imprimez l'en-tête sur le moniteur série et ajoutez un délai d'attente d'une demi-seconde avant de relire.

En série.imprimer(« Cap (degrés): »);
En série.println(titreDegrés);
retard(500);

À partir de là, vous pouvez personnaliser le code en fonction des besoins de votre projet et ajouter des fonctionnalités supplémentaires telles que l'enregistrement des données.

Si vous préférez utiliser la bibliothèque Adafruit, nous vous recommandons de vous approvisionner auprès de Dépôt GitHub d'Adafruit.

Lecture et interprétation des données de la boussole

Les données du capteur affichées dans le moniteur série montrent les valeurs vectorielles du champ magnétique mesurées par le magnétomètre en microteslas (μT) pour les axes X, Y et Z, respectivement. Ces valeurs peuvent être utilisées pour déterminer l'orientation et l'amplitude du champ magnétique.

La valeur de cap affichée en degrés est également importante et représente la direction du pôle nord magnétique par rapport à la position du capteur. Cette lecture peut être utilisée dans des projets où la direction d'un objet en mouvement doit être déterminée, comme dans la robotique, la navigation et les systèmes de géolocalisation.

Étalonnage du capteur

Si vous avez déjà installé une bibliothèque différente pour le module HMC5883L, vous devrez la désinstaller ou la supprimer. Sinon, vous risquez d'obtenir des erreurs de compilation ou de voir des avertissements dans votre moniteur série lors de l'étalonnage. Nous recommandons d'utiliser La bibliothèque de Jarzebski disponible sur GitHub car il dispose de toutes les ressources d'étalonnage nécessaires pour cette section.

Tout d'abord, téléchargez le fichier zip à partir du référentiel en cliquant sur Code > Télécharger ZIP.

Ensuite, ouvrez l'IDE Arduino et cliquez sur Esquisser > Inclure la bibliothèque > Ajouter une bibliothèque.

Sélectionnez le Arduino-HMC5883 zip que vous venez de télécharger, et l'IDE Arduino installera alors automatiquement la bibliothèque pour vous.

Exécutez l'esquisse d'étalonnage disponible dans le référentiel tout en déplaçant le capteur sur une surface plane lors du téléchargement. Les valeurs obtenues à partir du moniteur série sont les valeurs de décalage de votre capteur, que vous pouvez utiliser pour corriger vos lectures tout en utilisant la boussole lors de vos projets.

Problèmes que vous pourriez rencontrer

Il y a plusieurs erreurs que quelqu'un peut rencontrer lors de l'interfaçage du module boussole avec Arduino. Voici quelques exemples et leurs solutions de contournement :

Erreurs de compilation: Cela peut se produire si les bibliothèques nécessaires ne sont pas incluses ou s'il y a des erreurs de syntaxe dans le code. Pour résoudre ce problème, assurez-vous d'avoir installé les bonnes bibliothèques et vérifiez si votre code contient des erreurs de syntaxe. Comme nous l'avons vu à plusieurs reprises, vous avez peut-être accidentellement installé plusieurs bibliothèques HCM5883L.

Erreur de compilation: 'Adafruit_HMC5883_Unified' fait pas nommer un type

Erreurs de communication: Si vous ne parvenez pas à communiquer avec le module boussole, assurez-vous de l'avoir connecté aux bonnes broches de votre Arduino et que votre câblage est correct. Vous devrez peut-être également ajuster l'adresse I2C du module dans votre code si elle est différente de la valeur par défaut, qui est 0x1E.

Erreur en utilisant hmc5883l/testDevice (doubler246) Erreur de communication avec le capteur HMC5883L. La valeur lire de ID_A, ID_B et Registres ID_C fairepas correspondre aux valeurs attendues.

Interférence magnétique: Si les lectures de la boussole sont instables ou fluctuantes, cela peut être dû à des interférences magnétiques provenant d'objets proches. Éloignez le module de tout aimant ou autre source d'interférence magnétique pour obtenir des lectures plus stables.

Boostez vos projets avec le module boussole GY-271

La possibilité d'utiliser le module de boussole GY-271 HCM5883L ouvre la porte à la construction de projets de bricolage plus complexes à l'aide d'Arduino, tels que des rovers guidés par GPS et des drones de bricolage. Les possibilités sont infinies, surtout lorsque vous ajoutez d'autres capteurs.