Créez votre propre boussole Raspberry Pi (HMC5883L)

Créez votre propre boussole Raspberry Pi (HMC5883L)

En plus d’être utilisé comme système de suivi GPS, le module HMC5883L peut également être utilisé pour construire une boussole Raspberry Pi. Cela indique l’angle auquel il se trouve actuellement. Le module boussole HMC5883L peut être adressé via I2C, comme de nombreux autres capteurs. Des systèmes complets de position et de position peuvent être construits avec le capteur de rotation.

Dans ce tutoriel, nous voulons configurer notre propre boussole électronique Raspberry Pi afin qu’elle affiche toujours l’écart (en degrés) vers le nord.

Composants de la boussole

Module boussole Raspberry Pi HMC5883L

Module boussole Raspberry Pi HMC5883L

Dans ce tutoriel, j’ai utilisé les composants suivants:

Pour la visualisation, par exemple un servomoteur peut être utilisé, qui pointe dans la direction correspondante et réajuste ainsi l’aiguille de la boussole. J’ai déjà construit quelque chose de similaire avec un contrôleur Xbox 360, ce qui pourrait servir d’inspiration.

Connecteur Compass Raspberry Pi

Le module HMC5883L dispose généralement de cinq connexions, dont quatre seulement. La terminaison «DRDY» ou «RDY» reste gratuite.

Les quatre broches restantes du capteur sont connectées au Pi comme suit: VCC -> 3.3V (Pin 1), GND -> GND (Pin 6), SCL -> GPIO3 (Pin 5), SDA -> GPIO2 (Pin 3) ). Certains capteurs ont six broches. Si vous en avez un (avec 3vo et VIN), les deux sont connectés à la broche 3.3V du Pi.

Vous pouvez trouver un aperçu de l’affectation des broches sur le Raspberry Pi ici. La connexion au Raspberry Pi ressemble à ceci:

Planche à pain Raspberry Pi HMC5883L

Faites attention à l’étiquetage des broches du capteur!

Remarque: cette question ayant été posée plusieurs fois, je tiens à souligner que vous pouvez également faire fonctionner plusieurs appareils I²C sur le Raspberry Pi en même temps. Pour ce faire, les connexions (SDA, SCL) sont connectées en parallèle. Le module est reconnu via l’adresse matérielle fixe (plus d’informations ci-dessous). Seuls deux appareils avec la même adresse I2C ne peuvent pas être utilisés. Cependant, avec de nombreux capteurs, l’adresse peut être modifiée à l’aide de câbles volants sur le circuit imprimé. Si quelque chose comme cela est nécessaire, je vous recommande de consulter la fiche technique.

Compas Raspberry Pi – Préparation

Avant de pouvoir utiliser la boussole, certains logiciels sont nécessaires. Entre autres choses, le client git, les outils I2C et Python3 doivent être installés. Pour ce faire, nous ouvrons le terminal SSH et entrons dans ce qui suit:

sudo apt-get install git i2c-tools python-smbus python3 python-pip python-virtualenv python3-setuptools

Une fois l’installation réussie, I2C doit encore être activé, si ce n’est déjà fait. Pour ce faire, entrez dans la ligne de commande:

sudo raspi-config

Si le module boussole est déjà connecté, nous pouvons déjà voir s’il est reconnu. Pour ce faire, entrez sudo i2cdetect -y 1. La sortie devrait ressembler à ceci:

pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Si rien n’a été détecté, vous devez vérifier la connexion du capteur.

Normalement, les droits root doivent être disponibles pour lire le bus I²C. Cependant, puisque la bibliothèque qui sera utilisée plus tard ne l’a pas, nous devons d’abord l’activer. Pour cela, nous créons un fichier

sudo nano /etc/udev/rules.d/99-i2c.rules

avec le contenu suivant:

SUBSYSTEM=="i2c-dev", MODE="0666"

Avec CTRL + O nous sauvegardons cela et avec CTRL + X nous quittons l’éditeur et retournons au terminal.

Configurer la bibliothèque de boussoles Raspberry Pi (HMC5883L)

Pour pouvoir utiliser le module boussole, nous avons besoin de deux Python 3 bibliothèques, que nous allons maintenant installer:

git clone https://github.com/quick2wire/quick2wire-python-api
cd quick2wire-python-api

Voici quelques fichiers que nous devons ajouter aux variables de chemin Python. Si vous avez renommé le dossier ou dans un autre répertoire, vous pouvez utiliser pwd pour afficher le dossier dans lequel vous vous trouvez. Pour mettre à jour le chemin Python, éditons le fichier Profiles:

sudo nano /etc/profile

En haut, ajoutez ces deux lignes (ajustez le chemin si nécessaire):

export QUICK2WIRE_API_HOME=/home/pi/quick2wire-python-api
export PYTHONPATH=$PYTHONPATH:$QUICK2WIRE_API_HOME

Après avoir enregistré le fichier, nous redémarrons le Pi.

sudo reboot

Après nous être reconnectés via SSH, nous vérifions rapidement si le chemin est maintenant défini:

echo $PYTHONPATH

Cela devrait maintenant contenir notre chemin spécifié. De plus, un appareil I2C doit être reconnu (le module boussole doit être connecté):

ls /dev/i2c-*

Vous devez vous souvenir du numéro affiché car il sera bientôt nécessaire (pour moi, c’est 1).

De retour dans le répertoire de la bibliothèque, nous pouvons maintenant démarrer l’installation:

cd quick2wire-python-api
sudo python3 setup.py install

Maintenant, nous pouvons enfin installer la bibliothèque proprement dite, qui peut lire la boussole HMC5883L.

git clone https://bitbucket.org/thinkbowl/i2clibraries.git

Il existe également d’autres bibliothèques I2C telles que disponibles pour les écrans ITG-3205, ADXL345 et LCD.

Si vous le souhaitez, vous pouvez également ajouter le chemin des bibliothèques à la variable de chemin Python (analogue à celle illustrée ci-dessus).

Tester la boussole Raspberry Pi

Il est maintenant temps de tester la boussole électrique. Pour ce faire, nous appelons la console Python3:

sudo python3

Voici quelques exemples de codes décrivant les fonctions. Si votre appareil I2C n’a pas le numéro 1 (comme le mien), vous devez l’ajuster à la ligne 3.

Vous devez définir la déclinaison pour la plus grande précision possible (ligne 6). Pour moi, c’est 2 ° et 15 ‘(minutes d’arc). La «déclinaison magnétique» est différente à chaque endroit et peut par exemple être trouvée via cette page.

Dans l’exemple, nous nous intéressons à la dernière valeur, qui peut également être lue via hmc5883l.getHeadingString(). Une valeur de 0 signifie que le capteur pointe directement vers le nord.

Lecture des axes

En plus de l’angle, il est également possible de lire la rotation des axes:

Malheureusement, le site Web avec la documentation complète est maintenant hors ligne, mais heureusement, il est toujours accessible via le Machine de retour.

  • AZDelivery GY-271 Module Boussole magnétique avec capteur Compatible avec Arduino et Raspberry Pi y Compris Un eBook
    ✅ Module boussole compact et ultra-léger. ✅ Fournit des résultats fiables dans toutes les positions (3-DOF). ✅ Commande simple via I2C. ✅ Convient pour ESP, Raspberry & Co. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.