Configurer, lire les données & calibrer la boussole numérique à l’aide de Python en HMC5883L

Comme dans d’autres blogs, celui-ci contient également des informations qui se trouvent ailleurs sur le web. J’ai juste structuré pour le rendre facile à utiliser pour les débutants amateurs de robot.

Le raccordement de la boussole est assez simple. Lors du montage du capteur sur le bot, être au courant de la marque x-y-z sur le capteur et veiller à ce que les points de-> x vers l’avant du bot.

La boussole utilise le protocole I2C. Connectez le capteur aux broches GPIO (I2C-) sur la Pi comme suit :

  • Connectez le VCC à broche 1 (3.3.V)
  • Connectez le SDA à broche 3 (SDA = données système)
  • Connectez le SCL à broche-5 (SCL = horloge système)
  • Branchez le GND sur broche 7 (GND)

Tout d’abord de tous les besoins de la Raspberry Pi soit configuré pour utiliser le protocole I2C. Ceci est désactivé par défaut sur la framboise. Vous trouverez un excellent tutoriel sur : https://learn.adafruit.com/adafruits-raspberry-pi...

Lorsque vous testez l’I2C connexion tel qu’expliqué à la fin de la leçon Adafruit, l’adresse 0x1e est très probablement montré pour le capteur HMC5883L. Si vous obtenez une adresse différente, que vous devrez changer la variable adresse dans les scripts.

Pour calibrer la boussole le bot devra être retourné plusieurs fois. Cela peut être fait à la main. J’ai utilisé un écran rotatif de snack pour faire tourner le bot, tout en la gardant horizontal, facile.

La prochaine étape est la lecture et affichage des données du capteur. Pour cela j’ai utilisé un script très simple qui peut être trouvé ici :

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Comment utiliser le capteur enregistre pour lecture binaire et écriture se trouvent dans la fiche de données de capteur et dans le script. Je n’entrerai pas dans ce détails ici. Le script Initialise le capteur comme suit :

  • 8 échantillons à 15 Hz,
  • LSb gain 1.5 (par défaut),
  • Gauss 1090 (par défaut),
  • échantillonnage en continu,
  • mise à l’échelle de 0,92

Si vous ne voulez pas plonger dans les caractéristiques du capteur, il suffit de laisser les valeurs comme dans le script. Ils sont assez génériques et suffiront pour presque toutes les situations.

Maintenant, le script lit le x, y et z enregistre, calcule l’arctangente de x et y et convertit le résultat en degrés. Il suffit d’exécuter le script et vous obtiendrez un premier palier, par exemple 46.53891942 (46° 53' 89,2") début tournant le bot jusqu'à ce que vous obtenez près de 0 degré. Et tournez-le à travers quatre positions de 90°, la lecture des données du capteur à chaque étape. Très probablement, vous pourriez voir que les valeurs s’écartent et ne sont pas complètement à droite.

Nous allons donc comprendre ce qui se passe. Pour cela, vous pouvez utiliser le script simple suivant :

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Ce script rassemble 500 lectures et écrit les valeurs dans un fichier CSV qui peut facilement être importé dans Excel et tracé dans un graphique épars. Lancez le script ( sudo python HMC5883L_calibrate_step_2.py ) et tourner le bot arrière et en avant à 360 °, tandis que l’exécution du script. Le résultat devrait être quelque chose comme dans l’image.

Maintenant l’offset (juste un légère un dans mon cas) est visualisé. Pour obtenir une valeur plus précise pour x et y pallier, vous pouvez utiliser le script tiers, qui peut être trouvé ici :

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Encore une fois, ce script prend lecture 500, conserve les valeurs minimales et maximales de x et y et calcule les offsets. Exécutez le script de la même façon que le script ancien, en tournant constamment le bot. Vous devriez obtenir quelque chose comme ceci :

  • Minx :-212
  • Miny :-246
  • Maxx : 262
  • maxy : 239
  • x offset : 25
  • décalage y: -4

Maintenant ces décalages peuvent facilement être appliquées à l’écriture, ce qui est fait dans cet exemple :

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

(Pour faire un nouveau tracé, le script peut être combiné avec l’étape 2 pour avoir les valeurs enregistrées dans un fichier CSV.)

La dernière étape pour obtenir une boussole de travail assez précises, ajoute la déclinaison. Vous trouverez votre déclinaison spécifique par le biais de cette page : http://www.magnetic-declination.com/

Gardez à l’esprit que la déclinaison est en degrés, donc ajouter (ou soustraire) la déclinaison lorsque le roulement est calculé en degrés. Un exemple peut être trouvé ici :

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Maintenant, l’étalonnage est terminé, vous pouvez exécuter le script dernière et répéter le premier test en faisant tourner le bot par étapes de 90° et même comparer le roulement avec un autre boussole numérique (sur votre téléphone portable par exemple).

C’est tout !

Articles Liés

Comment lire les données de la température sur votre site Internet ?

Comment lire les données de la température sur votre site Internet ?

Aujourd'hui, je vais vous montrer comment lire les données de température DHT11 humidité et capteur de température est attaché à l'Arduino UNO qui utilise le bouclier ethernet pour envoyer des données de température à votre site Web personnel ! Cela
Entoilage-boussole numérique (HMC5883L) avec Raspberry Pi 2 à l’aide de Python3

Entoilage-boussole numérique (HMC5883L) avec Raspberry Pi 2 à l’aide de Python3

Au départ, je travaillais sur un labyrinthe en résolvant le robot. Au lieu d'utiliser des ultrasons et infrarouges sur Arduino Mega qui suit mur comme mes amis l'a fait, j'ai essayer de faire quelque chose de différent à l'aide de la boussole numériq
Boussole numérique DIY (pour votre voiture)

Boussole numérique DIY (pour votre voiture)

Je suis étonné que certaines voitures n'ont pas une boussole numérique toujours visible. Il est nécessaire de lancer l'application de navigation chaque fois qui peut même disparaître lorsque vous réglez la radio. Dans ce projet, vous allez créer une
Projet boussole numérique Arduino

Projet boussole numérique Arduino

Salut! Dans ce instructable vous verrez comment vous pouvez faire une boussole numérique en utilisant un Arduino et l'IDE de traitement. C'est assez simple mais intéressant et cool à la recherche de projet Arduino.Vous pouvez regarder l'exemple de la
Arduino boussole numérique (HMC5883L - 2 modes d’affichage)

Arduino boussole numérique (HMC5883L - 2 modes d’affichage)

Salut!!!Aujourd'hui, je vais vous montrer comment faire votre propre boussole arduino à l'aide de la carte boussole numérique 3 axes de MHC5883L.Avant de commencer, assurez-vous que vous avez :Arduino unoConseil capteur HMC5883LAfficheur Nokia 5110 (
Piratage est mort HDD Portable pour lire les données et l’utiliser comme disque dur interne

Piratage est mort HDD Portable pour lire les données et l’utiliser comme disque dur interne

Comment se sent-on à trouver votre disque dur externe qui fonctionnait très bien jusqu'à ce que la nuit dernière ne fonctionne pas plus... ??Vous êtes réduit à un engourdissement avec seulement votre disque dur interne pour stocker ses maigres espace
Comment faire pour lire des livres sur un cadre photo numérique

Comment faire pour lire des livres sur un cadre photo numérique

comment faire pour convertir (texte) réservez aux images et lire sur un cadre-photo numérique(Il sont a aussi des programmes qui peuvent le faire, plus ou moins de succès.)Mon cadre photo a 7" 234 x 480 de résolution.Il ne lit pas txt ou pdf. Voici c
Photographier les Constellations avec un appareil photo numérique

Photographier les Constellations avec un appareil photo numérique

vous demandez-vous quelles étoiles vous regardez sur une nuit étoilée ? Souhaitez que vous pourriez attraper une étoile ou peut-être plus d'un ? Voici comment obtenir ces étoiles à l'aide d'un appareil photo numérique. Commencez votre collection cons
Arduino pour débutants, maintenant avec les données de traçage, contrôlée par l’androïde, aucun codage requis, aucune soudure requise.

Arduino pour débutants, maintenant avec les données de traçage, contrôlée par l’androïde, aucun codage requis, aucune soudure requise.

IntroductionCette montre instructable vous comment vous pouvez lire et écrire les broches numériques sur votre Arduino Uno et lire les valeurs des broches analogiques tous commandé depuis votre mobile Android sans faire n'importe quel codage. Ce proj
Visualiser les données provenant de capteurs utilisant Arduino + coolterm

Visualiser les données provenant de capteurs utilisant Arduino + coolterm

une fois que vous obtenez des valeurs des capteurs, par exemple en utilisant l'Arduino, (voir mon précédent instructable), parfois c'est agréable de voir les données du capteur dans un graphe.Voici comment en quelques étapes seulement !J'ai fait cett
Gephi avec les données de Twitter

Gephi avec les données de Twitter

Gephi permet aux utilisateurs d'étudier les réseaux de médias sociaux. Il y a beaucoup de différentes raisons qu'un utilisateur peut vouloir utiliser ces données. Les données peuvent être utilisées d'une façon personnelle d'étudier comment leurs amis
Comment faire pour supprimer définitivement les données de l’iOS ?

Comment faire pour supprimer définitivement les données de l’iOS ?

Savoir comment faire pour Effacer toutes les données en permanence, votre iOS avec l'aide de SafeEraser
Voiture numérique boussole thermomètre &

Voiture numérique boussole thermomètre &

je ne suis pas vraiment bon à trouver les lieux et la direction, mais au moins je suis capable de lire les cartes et boussole. Ces jours-ci, systèmes de navigation GPS deviennent plus populaires, donc probablement que certains diraient pourquoi j'ai
Broderie numérique + brille dans les noir poufs

Broderie numérique + brille dans les noir poufs

Ce tutoriel vous guidera étape par étape dans le processus d'utilisation d'une machine de broderie numérique pour faire un logo fluorescent. La broderie que vous créez peut alors servir à fancify la glow-in-the-dark poufs que vous êtes sur le point d