Índice:

Medição de campo magnético usando HMC5883 e Raspberry Pi: 4 etapas
Medição de campo magnético usando HMC5883 e Raspberry Pi: 4 etapas
Anonim
Image
Image

O HMC5883 é uma bússola digital projetada para detecção magnética de baixo campo. Este dispositivo possui uma ampla faixa de campo magnético de +/- 8 Oe e uma taxa de saída de 160 Hz. O sensor HMC5883 inclui drivers de tira de desmagnetização automática, cancelamento de deslocamento e um ADC de 12 bits que permite a precisão do rumo da bússola de 1 ° a 2 °. Todos os Mini Módulos I²C são projetados para operar a 5 VCC.

Neste tutorial, vamos explicar o funcionamento detalhado de HMC5883 com Raspberry pi e sua programação usando a linguagem de programação java.

Etapa 1: Hardware necessário:

Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário

O hardware necessário para realizar a tarefa é o seguinte:

1. HMC5883

2. Raspberry Pi

3. Cabo I2C

4. Escudo I2C para Raspberry Pi

5. Cabo Ethernet

Etapa 2: Conexão de Hardware:

Conexão de hardware
Conexão de hardware
Conexão de hardware
Conexão de hardware

A seção de conexão de hardware explica basicamente as conexões de fiação necessárias entre o sensor e o raspberry pi. Garantir as conexões corretas é a necessidade básica ao trabalhar em qualquer sistema para a saída desejada. Portanto, as conexões necessárias são as seguintes:

O HMC5883 funcionará em I2C. Aqui está o diagrama de fiação de exemplo, demonstrando como conectar cada interface do sensor.

Fora da caixa, a placa é configurada para uma interface I2C, como tal, recomendamos usar esta conexão se você for agnóstico. Você só precisa de quatro fios!

São necessárias apenas quatro conexões dos pinos Vcc, Gnd, SCL e SDA e estes são conectados com a ajuda do cabo I2C.

Essas conexões são demonstradas nas fotos acima.

Etapa 3: Código Java para medir a intensidade do campo magnético:

Código Java para medir a intensidade do campo magnético
Código Java para medir a intensidade do campo magnético
Código Java para medir a intensidade do campo magnético
Código Java para medir a intensidade do campo magnético

A vantagem de usar raspberry pi é que proporciona a flexibilidade da linguagem de programação em que se deseja programar a placa para fazer a interface do sensor com ela. Aproveitando essa vantagem desta placa, estamos demonstrando aqui sua programação em Java. O código java para HMC5883 pode ser baixado de nossa comunidade github que é Dcube Store.

Além da facilidade dos usuários, também explicamos o código aqui:

Como primeira etapa da codificação, você precisa baixar a biblioteca pi4j no caso do java, porque esta biblioteca suporta as funções usadas no código. Portanto, para baixar a biblioteca você pode visitar o seguinte link:

pi4j.com/install.html

Você também pode copiar o código Java de trabalho para este sensor aqui:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

importar java.io. IOException; classe pública HMC5883

{

public static void main (String args ) lança exceção

{

// Criar barramento I2C

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

// Obter dispositivo I2C, endereço HMC5883 I2C é 0x1E (30)

Dispositivo I2CDevice = Bus.getDevice (0x1E);

// Selecione o registro de configuração A

// Configuração de medição normal, taxa de dados o / p = 0,75 Hz

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

// Selecione o modo de registro

// Modo de medição contínua

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

Thread.sleep (500);

// Lê 6 bytes de dados de 0x03 (3)

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

byte data = novo byte [6];

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

// Converta os dados

int xMag = ((dados [0] e 0xFF) * 256 + (dados [1] e 0xFF));

if (xMag> 32767)

{

xMag - = 65536;

}

int zMag = ((dados [2] e 0xFF) * 256 + (dados [3] e 0xFF));

if (zMag> 32767)

{

zMag - = 65536;

}

int yMag = ((dados [4] e 0xFF) * 256 + (dados [5] e 0xFF));

if (yMag> 32767)

{

yMag - = 65536;

}

// Dados de saída para a tela

System.out.printf ("Campo magnético no eixo X:% d% n", xMag);

System.out.printf ("Campo magnético no eixo Y:% d% n", yMag);

System.out.printf ("Campo magnético no eixo Z:% d% n", zMag);

}

}

As funções Write () e Read () são usadas para escrever os comandos e ler a saída do sensor, respectivamente. A parte a seguir ilustra a leitura dos valores do campo magnético.

// Lê 6 bytes de dados de 0x03 (3)

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

byte data = novo byte [6];

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

A saída é mostrada na imagem acima.

Etapa 4: Aplicativos:

Formulários
Formulários

HMC5883 é um módulo multi-chip de montagem em superfície projetado para detecção magnética de baixo campo com uma interface digital para aplicações como bússola e magnetometria de baixo custo. Seu alto nível de precisão e exatidão de um a dois graus permite a Navegação Pedestre e Aplicações LBS.

Recomendado: