Arduino

magnetômetro HMC5883L com Arduino (bússola)

magnetômetro HMC5883L - Wiring

A bussola HMC5883L nada mais é do que um magnetômetro. Esse módulo se chama GY-273, contendo o magnetômetro HMC5883L no circuito para cumprir o papel de bússola. Existem algumas bibliotecas para Arduino (claro que haveria de ter) e dentre elas escolhi a desse link. É obviamente bastante simples de utilizar, bastando 3 linhas de código. Nesse artigo vamos ver como utilizá-la e fazer uma pequena brincadeira.

Onde comprar a bússola digital (ou, magnetômetro HMC5883L)

Esse magnetômetro HMC5883L de três eixos está a um preço bastante acessível no Eletrogate (clique para ver o produto). Gostei desse módulo principalmente pelo fato de ser I2C, o que facilita um bocado o wiring e sua manipulação. Outra vantagem desse módulo é que os sensores magnéticos da Honeywell estão entre os mais confiáveis da indústria, podendo ser tranquilamente utilizado em projetos profissionais.

Baixar a biblioteca para o magnetômetro HMC5883L





Existe uma modificação que simplifica a utilização dessa bússola, por isso escolhi essa biblioteca para esse módulo. O link do github é esse, e o processo para a instalação também é o mais simples possível.

Download, instalação e exemplo

Você pode (ou talvez até deva) baixar a biblioteca através desse link. Vá ao menu Sketch->Import Library->Add Library e opte por fazer a instalação a partir do arquivo recém baixado. Depois de adicionado, você poderá abrir um exemplo a partir do menu File -> Examples -> HMC5883L_Simple -> Compass.

Como pegar sua inclinação magnética

Para pegar seu posicionamento, utilize esse link. No meu caso (São Paulo – SP), o resultado para minha inclinação magnética é “-21,16,W”:

Bussola digital com Arduino | magnetômetro HMC5883L
Bussola digital com Arduino – magnetômetro HMC5883L

Daí basta você fazer isso no código:

Wiring

É extremamente simples. O módulo opera em 3V3, portanto você pode utilizá-lo em qualquer MCU/CPU com níveis lógicos entre 3V3 e 5V.  Ainda que alimentando-o com 5V, seu nível lógico será 3V3. Conecte também o ground, SCL ao SCL e SDA ao SDA.

O posicionamento padrão do módulo é deixado na horizontal e deve dar um valor de 0 graus quando a seta indicando o eixo X estiver apontando para o Norte. Agora já podemos brincar com a bússola.

Arduino UNO e Arduino Leonardo

No Arduino UNO você deve utilizar o pino A4 para SDA e A5 para SCL. Como não tenho mais Arduino UNO aqui, vou utilizar o Arduino Leonardo, mas só diferirá nos pinos do I2C, que no  Leonardo são os pinos D2 para SDA e D3 para SCL. alimente o módulo ligando-o ao  5V e GND.

Outra opção no Arduino Leonardo é colocá-lo aos pinos SDA e SCL impressos no canto de uma das barras de GPIO.

magnetômetro HMC5883L - Wiring
magnetômetro HMC5883L – Wiring

Depois desses testes, resolvi fazer também no Arduino Mega. O wiring fica assim:

magnetômetro HMC5883L - Wiring
magnetômetro HMC5883L – Wiring

Código de exemplo

Vamos utilizar o sketch de exemplo. Tirei os comentários pra dar uma visão clara do quão simples é o código:

Alternativa

Se por alguma razão você não queira utilizar a biblioteca acima ou se por acaso não funcionar com você, ainda tem uma alternativa, instalando uma biblioteca da Adafruit diretamente pelo Library Manager. Para tal, siga o menu  sketch -> Include Library -> Manage Libraries e procure por HMC5883. Aparecerá uma biblioteca da Adafruit, então clique em Install. Depois abra o exemplo através do menu File -> Examples -> Adafruit HMC5883 Unified. o processo é bastante parecido com a da biblioteca anterior, mas você terá um pouco mais de trabalho, leia o código do exemplo para entender.

Se por acaso não compilar, entre no diretório Arduino/libraries e clone o repositório como a seguir:

Uma terceira possibilidade é ler diretamente do dispositivo. Para tal, use esse código:

Teste

Eu utilizei a primeira opção por ser a mais simples e assim pude escrever rapidamente o artigo. Seja lá qual foi sua opção, suba o sketch em seu Arduino e abra o monitor serial, depois movimente o sensor para perceber a diferença.

Projeto

Para um próximo artigo  relacionado, pretendo fazer uma Rosa dos Ventos com LEDs, vai ficar legal, sugiro que já adquira o seu, considerando o baixo valor e a grande diversão.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!