0. Componentes e programação necessários para uma bússola digital GY-271 / GY-273 Compas magnetômetro

Componentes necessários:

{Produto: 2.000} {Produto: 456}
ou:
{Produto: 1603}

I. Como usar uma bússola digital

Os módulos de bússola digital ou bússola magnetométrica funcionam medindo o campo magnético em três eixos e, com essa medição, estimando a orientação do dispositivo em relação ao campo magnético terrestre. O sensor HMC5883L / QMC5883L é um magnetômetro de 3 eixos, com isso podemos ler os componentes do campo magnético presentes, desta forma conhecendo a direção do campo magnético terrestre podemos calcular a orientação em relação ao norte magnético da terra , isso desde que nosso sensor não seja exposto a nenhum campo magnético externo ou qualquer objeto metálico que altere o campo magnético da Terra.

Existem duas opções de bússola digital em nosso catálogo: HMC5883, versão mais antiga e QMC5883L, versão mais recente.

Não há muita diferença. O HMC5883L é feito pela Honeywell. mas como a produção está prestes a parar, usamos um módulo de bússola semelhante, o QMC5883L.

O QMC5883L é fabricado por uma empresa chinesa, que obteve autorização de produção para o HMC5883L da Honeywell e o renomeou como QMC5883L. Portanto, QMC5883L e HMC5883L são basicamente iguais, eles compartilham o mesmo design de hardware. Apenas seu registro é um pouco diferente. Só precisamos mudar um pouco o software.

Para obter mais informações sobre os produtos ou suas descrições técnicas, entre em nosso site Solectro Shop.

II. Procedimentos experimentais

Conexão

O módulo é alimentado diretamente por Arduino , portanto, não precisamos de uma fonte de alimentação externa. Você precisará soldar os pinos ou conectores para usá-los em uma placa de ensaio ou com cabos DuPont. Neste exemplo, conectaremos o módulo à placa Arduino UNO por meio de I2C, conforme mostrado na imagem a seguir:

Pino do sensor

Arduino por Arduino UNO

GND

GND

VCC

3,3 V

CS

3,3 V

SDA

A4 (SDA)

SCL

A5 (SCL)

Para nossos exemplos, devemos baixar as bibliotecas correspondentes.

Para o primeiro módulo , o GY-273 HMC5883, devemos baixar a biblioteca desenvolvida por Jeff Rowberg, a biblioteca pode ser baixada aqui :

Esta biblioteca funciona com uma biblioteca adicional para comunicação I2C, que também pode ser encontrada no mesmo github da biblioteca anterior .

Neste exemplo, faremos as leituras do HMC5883L, obteremos os componentes X, Y e Z do campo magnético.

Código

Abra um novo esboço e cole o seguinte código de exemplo:

#include "Wire.h"

#include "I2Cdev.h"

#include "HMC5883L.h"

Magnetômetro HMC5883L;

int16_t mx, my, mz;

void setup () {

Serial.begin (9600);

Serial.println ("Inicializando magnetômetro ...");

// Inicializamos a comunicação I2C e o magnetômetro

Wire.begin ();

magnetometer.initialize ();

}

void loop () {

// Obtemos do magnetômetro os componentes do campo magnético

magnetometer.getHeading (& mx, & my, & mz);

Serial.print ("mx:");

Serial.print (mx);

Serial.print ("\ tmy:");

Serial.print (meu);

Serial.print ("\ tmz:");

Serial.println (mz);

atraso (100);

}

Como sempre, abra o monitor serial, no menu Ferramentas, para visualizar os valores.

Para o segundo módulo , o GY-271 QMC5883L, devemos baixar a biblioteca Mechasolution que você encontrará aqui.

Abra um novo esboço e cole o seguinte código de exemplo, e com o Monitor Serial você também verá a situação.

#include <Wire.h>

#include <MechaQMC5883.h>

MechaQMC5883 qmc;

void setup () {

Wire.begin ();

Serial.begin (9600);

qmc.init ();

//qmc.setMode(Mode_Continuous,ODR_200Hz,RNG_2G,OSR_256);

}

void loop () {

int x, y, z;

qmc.read (& x, & y, & z);

Serial.print ("x:");

Serial.print (x);

Serial.print ("y:");

Serial.print (y);

Serial.print ("z:");

Serial.print (z);

Serial.println ();

atraso (100);

}