Table des matières:

Mesure du champ magnétique à l'aide du HMC5883 et du Raspberry Pi : 4 étapes
Mesure du champ magnétique à l'aide du HMC5883 et du Raspberry Pi : 4 étapes

Vidéo: Mesure du champ magnétique à l'aide du HMC5883 et du Raspberry Pi : 4 étapes

Vidéo: Mesure du champ magnétique à l'aide du HMC5883 et du Raspberry Pi : 4 étapes
Vidéo: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Juillet
Anonim
Image
Image

Le HMC5883 est une boussole numérique conçue pour la détection magnétique à faible champ. Cet appareil a une large plage de champ magnétique de +/-8 Oe et un taux de sortie de 160 Hz. Le capteur HMC5883 comprend des pilotes de sangle de démagnétisation automatique, une annulation de décalage et un CAN 12 bits qui permet une précision de cap de 1° à 2°. Tous les mini modules I²C sont conçus pour fonctionner à 5VDC.

Dans ce tutoriel, nous allons expliquer le fonctionnement détaillé de HMC5883 avec Raspberry pi et sa programmation en utilisant le langage de programmation java.

Étape 1: Matériel requis:

Matériel requis
Matériel requis
Matériel requis
Matériel requis
Matériel requis
Matériel requis

Le matériel requis pour accomplir la tâche est le suivant:

1. HMC5883

2. Framboise Pi

3. Câble I2C

4. Bouclier I2C pour Raspberry Pi

5. Câble Ethernet

Étape 2: connexion matérielle:

Raccordement matériel
Raccordement matériel
Raccordement matériel
Raccordement matériel

La section de raccordement matériel explique essentiellement les connexions de câblage requises entre le capteur et le raspberry pi. Assurer des connexions correctes est la nécessité de base tout en travaillant sur n'importe quel système pour la sortie souhaitée. Ainsi, les connexions requises sont les suivantes:

Le HMC5883 fonctionnera sur I2C. Voici l'exemple de schéma de câblage, montrant comment câbler chaque interface du capteur.

Prête à l'emploi, la carte est configurée pour une interface I2C, en tant que telle, nous vous recommandons d'utiliser cette connexion si vous êtes par ailleurs agnostique. Tout ce dont vous avez besoin, c'est de quatre fils !

Seules quatre connexions sont nécessaires pour les broches Vcc, Gnd, SCL et SDA et celles-ci sont connectées à l'aide d'un câble I2C.

Ces connexions sont illustrées dans les images ci-dessus.

Étape 3: Code Java pour mesurer l'intensité du champ magnétique:

Code Java pour mesurer l'intensité du champ magnétique
Code Java pour mesurer l'intensité du champ magnétique
Code Java pour mesurer l'intensité du champ magnétique
Code Java pour mesurer l'intensité du champ magnétique

L'avantage d'utiliser raspberry pi est qu'il vous offre la flexibilité du langage de programmation dans lequel vous souhaitez programmer la carte afin d'interfacer le capteur avec elle. En exploitant cet avantage de cette carte, nous démontrons ici sa programmation en Java. Le code java pour HMC5883 peut être téléchargé depuis notre communauté github qui est Dcube Store.

En plus de la facilité des utilisateurs, nous expliquons le code ici également:

Comme première étape de codage, vous devez télécharger la bibliothèque pi4j dans le cas de java, car cette bibliothèque prend en charge les fonctions utilisées dans le code. Donc, pour télécharger la bibliothèque, vous pouvez visiter le lien suivant:

pi4j.com/install.html

Vous pouvez également copier le code Java fonctionnel de ce capteur à partir d'ici:

importer com.pi4j.io.i2c. I2CBus;

importer com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;classe publique HMC5883

{

public static void main(String args) lève une exception

{

// Créer un bus I2C

I2CBus Bus = I2CFactory.getInstance(I2CBus. BUS_1);

// Obtenir le périphérique I2C, l'adresse I2C HMC5883 est 0x1E(30)

Périphérique I2CDevice = Bus.getDevice (0x1E);

// Sélection du registre de configuration A

// Configuration de mesure normale, débit de données o/p = 0,75 Hz

périphérique.write(0x00, (octet)0x60);

// Sélection du registre de mode

// Mode de mesure en continu

périphérique.write(0x02, (octet)0x00);

Thread.sleep(500);

// Lit 6 octets de données à partir de 0x03(3)

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

octet données = nouvel octet[6];

device.read (0x03, données, 0, 6);

// Convertir les données

int xMag = ((données[0] & 0xFF) * 256 + (données[1] & 0xFF));

si (xMag > 32767)

{

xMag -= 65536;

}

int zMag = ((données[2] & 0xFF) * 256 + (données[3] & 0xFF));

si(zMag > 32767)

{

zMag -= 65536;

}

int yMag = ((données[4] & 0xFF) * 256 + (données[5] & 0xFF));

si(yMag > 32767)

{

yMag -= 65536;

}

// Sortie des données à l'écran

System.out.printf("Champ magnétique dans l'axe X: %d %n", xMag);

System.out.printf("Champ magnétique dans l'axe Y: %d %n", yMag);

System.out.printf("Champ magnétique dans l'axe Z: %d %n", zMag);

}

}

Les fonctions Write() et read() sont utilisées pour écrire les commandes et lire respectivement la sortie du capteur. La partie suivante illustre la lecture des valeurs de champ magnétique.

// Lit 6 octets de données à partir de 0x03(3)

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

octet données = nouvel octet[6];

device.read (0x03, données, 0, 6);

La sortie est montrée dans l'image ci-dessus.

Étape 4: Candidatures:

Applications
Applications

Le HMC5883 est un module multipuce à montage en surface conçu pour la détection magnétique à faible champ avec une interface numérique pour des applications telles que la boussole et la magnétométrie à faible coût. Sa précision et sa précision de haut niveau d'un à deux degrés permettent la navigation piétonne et les applications LBS.

Conseillé: