Mobile
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.
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
VCC
3,3 V
CS
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;
qmc.init ();
//qmc.setMode(Mode_Continuous,ODR_200Hz,RNG_2G,OSR_256);
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 ();