Wiring and Test

This 3-axis magnetometer breakout is thankfully very easy to use. It only requires 2 power pins and 2 data pins.
We'll be demoing it with an Arduino but any other microcontroller can be used if you are willing to port the I2C code. We suggest using an Arduino to start since its guaranteed to work

  • Connect VIN to 5V pin on the Arduino. If you have a 3V logic Arduino, connect VIN to 3V instead
  • Connect GND to the ground pin on the Arduino
  • Connect the SDA pin on the breakout to the I2C data SDA pin on your Arduino. On an UNO & '328 based Arduino, this is also known as A4, on a Mega it is also known as digital 20 and on a Leonardo/Micro, digital 2
  • Connect the SCL pin on the breakout to the I2C clock SCL pin on your Arduino. On an UNO & '328 based Arduino, this is also known as A5, on a Mega it is also known as digital 21 and on a Leonardo/Micro, digital 3
The HMC5883L has a fixed I2C address, you can only connect one sensor per microcontroller!

Download & Install Libraries

Lucky for you we have written a very nice sensor library for the HMC5883L, which is based off of our Adafruit_Sensor framework library.

Open up the Arduino library manager:

Search for the Adafruit Sensor library and install it

Search for the Adafruit HMC5883 library and install it

We also have a great tutorial on Arduino library installation at:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

Demo

Now, open the demo with file -> examples -> Adafruit_HMC5883_U -> magsensor and upload it to your Arduino.

And open up the serial console. You will see some quick spec's about the HMC5883 and then a stream of data with X Y Z magnetometer data in uTeslas and then a calculated heading. If you hold the module so that it is parallel with the ground then it will point you in the direction of North!
If you have to mount the module so that some other axis is parallel with the ground (X or Y) you will have to modify the heading code to take the arcTan of X&Z or Y&Z instead of X&Y
This guide was first published on Feb 28, 2014. It was last updated on Feb 28, 2014. This page (Wiring and Test) was last updated on May 25, 2020.