Sommario:

Misurazione del campo magnetico utilizzando HMC5883 e Raspberry Pi: 4 passaggi
Misurazione del campo magnetico utilizzando HMC5883 e Raspberry Pi: 4 passaggi

Video: Misurazione del campo magnetico utilizzando HMC5883 e Raspberry Pi: 4 passaggi

Video: Misurazione del campo magnetico utilizzando HMC5883 e Raspberry Pi: 4 passaggi
Video: Come costruire una bussola con Arduino e un magnetometro HMC5883 (QMC5883) - Video 461 2024, Dicembre
Anonim
Image
Image

L'HMC5883 è una bussola digitale progettata per il rilevamento magnetico a basso campo. Questo dispositivo ha un'ampia gamma di campi magnetici di +/-8 Oe e una velocità di uscita di 160 Hz. Il sensore HMC5883 include driver della cinghia di smagnetizzazione automatica, cancellazione dell'offset e un ADC a 12 bit che consente una precisione di rotta della bussola da 1° a 2°. Tutti i Mini Moduli I²C sono progettati per funzionare a 5VDC.

In questo tutorial, spiegheremo il funzionamento dettagliato di HMC5883 con Raspberry pi e la sua programmazione utilizzando il linguaggio di programmazione java.

Passaggio 1: hardware richiesto:

Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto

L'hardware necessario per eseguire l'attività è il seguente:

1. HMC5883

2. Raspberry Pi

3. Cavo I2C

4. Scudo I2C per Raspberry Pi

5. Cavo Ethernet

Passaggio 2: collegamento hardware:

Collegamento hardware
Collegamento hardware
Collegamento hardware
Collegamento hardware

La sezione relativa ai collegamenti hardware spiega sostanzialmente le connessioni di cablaggio necessarie tra il sensore e il Raspberry Pi. Garantire connessioni corrette è la necessità di base mentre si lavora su qualsiasi sistema per l'output desiderato. Quindi, i collegamenti necessari sono i seguenti:

L'HMC5883 funzionerà su I2C. Ecco lo schema elettrico di esempio, che mostra come cablare ciascuna interfaccia del sensore.

Di default, la scheda è configurata per un'interfaccia I2C, quindi consigliamo di utilizzare questo collegamento se sei altrimenti agnostico. Tutto ciò di cui hai bisogno sono quattro fili!

Sono necessarie solo quattro connessioni pin Vcc, Gnd, SCL e SDA e questi sono collegati con l'aiuto del cavo I2C.

Queste connessioni sono mostrate nelle immagini sopra.

Passaggio 3: codice Java per misurare l'intensità del campo magnetico:

Codice Java per misurare l'intensità del campo magnetico
Codice Java per misurare l'intensità del campo magnetico
Codice Java per misurare l'intensità del campo magnetico
Codice Java per misurare l'intensità del campo magnetico

Il vantaggio di utilizzare raspberry pi è che ti offre la flessibilità del linguaggio di programmazione in cui desideri programmare la scheda per interfacciare il sensore con essa. Sfruttando questo vantaggio di questa scheda, stiamo dimostrando qui che è la programmazione in Java. Il codice java per HMC5883 può essere scaricato dalla nostra comunità github che è Dcube Store.

Oltre che per la facilità degli utenti, spieghiamo anche qui il codice:

Come primo passo della codifica, devi scaricare la libreria pi4j in caso di java, perché questa libreria supporta le funzioni utilizzate nel codice. Quindi, per scaricare la libreria puoi visitare il seguente link:

pi4j.com/install.html

Puoi copiare il codice Java funzionante per questo sensore anche da qui:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;classe pubblica HMC5883

{

public static void main(String args) genera un'eccezione

{

// Crea bus I2C

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

// Ottieni il dispositivo I2C, l'indirizzo I2C dell'HMC5883 è 0x1E(30)

I2CDevice device = Bus.getDevice(0x1E);

// Seleziona il registro di configurazione A

// Configurazione di misura normale, velocità dati o/p = 0,75 Hz

device.write(0x00, (byte)0x60);

// Seleziona modalità registro

// Modalità di misurazione continua

device.write(0x02, (byte)0x00);

Thread.sleep(500);

// Legge 6 byte di dati da 0x03(3)

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

byte dati = nuovo byte[6];

device.read(0x03, data, 0, 6);

// Converti i dati

int xMag = ((data[0] & 0xFF) * 256 + (data[1] & 0xFF));

if(xMag > 32767)

{

xMag -= 65536;

}

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

if(zMag > 32767)

{

zMag -= 65536;

}

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

if(yMag > 32767)

{

yMag -= 65536;

}

// Invia i dati allo schermo

System.out.printf("Campo magnetico nell'asse X: %d %n", xMag);

System.out.printf("Campo magnetico nell'asse Y: %d %n", yMag);

System.out.printf("Campo magnetico nell'asse Z: %d %n", zMag);

}

}

Le funzioni Write() e read() vengono utilizzate rispettivamente per scrivere i comandi e leggere l'output del sensore. La parte seguente illustra la lettura dei valori del campo magnetico.

// Legge 6 byte di dati da 0x03(3)

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

byte dati = nuovo byte[6];

device.read(0x03, data, 0, 6);

L'output è mostrato nell'immagine sopra.

Passaggio 4: applicazioni:

Applicazioni
Applicazioni

HMC5883 è un modulo multi-chip a montaggio superficiale progettato per il rilevamento magnetico a basso campo con un'interfaccia digitale per applicazioni come la bussola e la magnetometria a basso costo. La sua accuratezza e precisione di alto livello da uno a due gradi consente la navigazione pedonale e le applicazioni LBS.

Consigliato: