Arduino Nano: HMC5883L Compass With Visuino
by BoianM in Circuits > Arduino
8617 Views, 28 Favorites, 0 Comments
Arduino Nano: HMC5883L Compass With Visuino
![Arduino Nano: HMC5883 Compass With Visuino](/proxy/?url=https://content.instructables.com/FCG/WA2Y/IK7BOMHO/FCGWA2YIK7BOMHO.jpg&filename=Arduino Nano: HMC5883 Compass With Visuino)
Components
![56b3ce9367400ce0b3000767.jpeg](/proxy/?url=https://content.instructables.com/FP2/A7E5/IK7BOV6E/FP2A7E5IK7BOV6E.jpg&filename=56b3ce9367400ce0b3000767.jpeg)
- One Arduino compatible board (I use Arduino Nano, because I have one, but any other will be just fine)
- One HMC5883L Compass Module
- 4 Female-Female jumper wires
Connect the HMC5883L Compass to Arduino
![56b3cec64fbade40d60007b6.jpeg](/proxy/?url=https://content.instructables.com/F11/PSD6/IK7BOV7L/F11PSD6IK7BOV7L.jpg&filename=56b3cec64fbade40d60007b6.jpeg)
![56afb58915be4d97d90016ca.jpeg](/proxy/?url=https://content.instructables.com/FFQ/HP8S/IK4CJYL8/FFQHP8SIK4CJYL8.jpg&filename=56afb58915be4d97d90016ca.jpeg)
![56afb5dd45bceb4f86000926.jpeg](/proxy/?url=https://content.instructables.com/FBD/LTU3/IK4CJYS3/FBDLTU3IK4CJYS3.jpg&filename=56afb5dd45bceb4f86000926.jpeg)
- Connect 5V VCC Power(Red wire), Ground(Black wire), SCL(Yellow wire), and SDA(Green wire), to the HMC5883L Compass Module (Picture 1)
- Connect the other end of the Ground wire(Black wire) to Ground pin of the Arduino board (Picture 2)
- Connect the other end of the 5V VCC Power wire(Red wire) to the 5V power pin of the Arduino board (Picture 2)
- Connect the other end of the SDA wire(Green wire) to SDA/Analog pin 4 of the Arduino Nano board (Picture 2)
- Connect the other end of the SCL wire(Yellow wire) to SCL/Analog pin 5 of the Arduino Nano board (Picture 2)
- Picture 3 shows where are the Ground, 5V Power, SDA/Analog pin 4, and SCL/Analog pin 5, pins of the Arduino Nano
Start Visuino, and Select the Arduino Board Type
![SelectBoard.png](/proxy/?url=https://content.instructables.com/FQK/T32A/IJN7C6JS/FQKT32AIJN7C6JS.png&filename=SelectBoard.png)
![SelectBoard.png](/proxy/?url=https://content.instructables.com/FMA/0577/IIDH8XDK/FMA0577IIDH8XDK.png&filename=SelectBoard.png)
To start programming the Arduino, you will need to have the Arduino IDE installed from here: http://www.arduino.cc/.
Please be aware that there are some critical bugs in Arduino IDE 1.6.6.
Make sure that you install 1.6.7 or 1.6.5, otherwise this Instructable will not work!
The Visuino: https://www.visuino.com also needs to be installed.
In Visuino: Add Compass, Compass Heading and Formatted Text Components
![ComponentCompass.png](/proxy/?url=https://content.instructables.com/FFJ/WJJB/IK7BPEH3/FFJWJJBIK7BPEH3.png&filename=ComponentCompass.png)
![ComponentCompassHeading.png](/proxy/?url=https://content.instructables.com/FF7/GY1U/IK7BPEH4/FF7GY1UIK7BPEH4.png&filename=ComponentCompassHeading.png)
![ComponentFormattedText.png](/proxy/?url=https://content.instructables.com/F8W/H1P0/IK7BPEH5/F8WH1P0IK7BPEH5.png&filename=ComponentFormattedText.png)
- Type "compass" in the Filter box of the Component Toolbox then select the "Compass HMC5883" component (Picture 1), and drop it in the design area
- From the Component Toolbox select the "Compass Heading" component (Picture 2), and drop it in the design area
- Type "form" in the Filter box of the Component Toolbox then select the "Formatted Text" component (Picture 3), and drop it in the design area
In Visuino: Add the Text Elements, and Specify Formatted Text
![ComponentFormattedTextTools.png](/proxy/?url=https://content.instructables.com/FEV/9PFS/IK7BPEH7/FEV9PFSIK7BPEH7.png&filename=ComponentFormattedTextTools.png)
![AddElement.png](/proxy/?url=https://content.instructables.com/FP8/MAWD/IK7BPEGZ/FP8MAWDIK7BPEGZ.png&filename=AddElement.png)
![AddElementAdded.png](/proxy/?url=https://content.instructables.com/F47/BFH9/IK7BPEH0/F47BFH9IK7BPEH0.png&filename=AddElementAdded.png)
![ComponentFormattedTextProperty2.png](/proxy/?url=https://content.instructables.com/FIW/MCX0/IK7BPIG9/FIWMCX0IK7BPIG9.png&filename=ComponentFormattedTextProperty2.png)
- Click on the "Tools" button of the FormattedText1 component
- In the Elements editor, Select the Analog Element on the right, and click 4 times on the "+" button on the left on the to add 4 of them (Picture 2, and 3), then close the Elements editor
- Set the value of the Text property of the FormattedText1 component to "X: %0 Y: %1 Z: %2 Heading: %3" (Picture 4). The %0 will be replaced with the value from AnalogElement1, %1 will be replaced with the value from AnalogElement2, %2 will be replaced with the value from AnalogElement3, and %3 will be replaced with the value from AnalogElement4
In Visuino: Connect the Compass Components
![Connect1.png](/proxy/?url=https://content.instructables.com/F0C/6ZDE/IK7BPEH8/F0C6ZDEIK7BPEH8.png&filename=Connect1.png)
![Connect2.png](/proxy/?url=https://content.instructables.com/FUI/XFJG/IK7BPEH9/FUIXFJGIK7BPEH9.png&filename=Connect2.png)
![Connect3.png](/proxy/?url=https://content.instructables.com/FO3/2Z46/IK7BPEHA/FO32Z46IK7BPEHA.png&filename=Connect3.png)
![Connect4.png](/proxy/?url=https://content.instructables.com/F30/KXY6/IK7BPEHB/F30KXY6IK7BPEHB.png&filename=Connect4.png)
- Connect the "Out" pin of the Compass1 component (Picture 1) to the to the "In" pin of the I2C channel of the Arduino component (Picture 2)
- Connect the "X" output pin of the Compass1 component to the "X" pin of the "In" pins of the CompassHeading1 component (Picture 3)
- Connect the "Y" output pin of the Compass1 component to the "Y" pin of the "In" pins of the CompassHeading1 component (Picture 4)
In Visuino: Connect the Formatted Text Component
![Connect5.png](/proxy/?url=https://content.instructables.com/F56/QQD0/IK7BPEGJ/F56QQD0IK7BPEGJ.png&filename=Connect5.png)
![Connect6.png](/proxy/?url=https://content.instructables.com/FZS/NXCO/IK7BPEGK/FZSNXCOIK7BPEGK.png&filename=Connect6.png)
![Connect7.png](/proxy/?url=https://content.instructables.com/F8G/MV4L/IK7BPEGM/F8GMV4LIK7BPEGM.png&filename=Connect7.png)
![Connect8.png](/proxy/?url=https://content.instructables.com/F9Z/1Q5S/IK7BPEGO/F9Z1Q5SIK7BPEGO.png&filename=Connect8.png)
![Connect9.png](/proxy/?url=https://content.instructables.com/FJ1/5V41/IK7BPEGV/FJ15V41IK7BPEGV.png&filename=Connect9.png)
- Connect the "X" output pin of the Compass1 component to the "In" pin of the AnalogElement1 of the FormattedText1 component (Picture 1)
- Connect the "Y" output pin of the Compass1 component to the "In" pin of the AnalogElement2 of the FormattedText1 component (Picture 2)
- Connect the "Z" output pin of the Compass1 component to the "In" pin of the AnalogElement3 of the FormattedText1 component (Picture 3)
- Connect the "Out" output pin of the CompassHeading1 component to the "In" pin of the AnalogElement4 of the FormattedText1 component (Picture 4)
- Connect the "Out" output pin of the FormattedText1 component to the "In" input pin of the "Serial[ 0 ]" channel of the Arduino component (Picture 5)
Generate, Compile, and Upload the Arduino Code
![GenerateCtopped.png](/proxy/?url=https://content.instructables.com/FV8/64OM/IIDHAAFH/FV864OMIIDHAAFH.png&filename=GenerateCtopped.png)
![ArduinoIDE.png](/proxy/?url=https://content.instructables.com/FVR/NKPL/IK7BPEKW/FVRNKPLIK7BPEKW.png&filename=ArduinoIDE.png)
- In Visuino, Press F9 or click on the button shown on Picture 1 to generate the Arduino code, and open the Arduino IDE
- In the Arduino IDE, click on the Upload button, to compile and upload the code (Picture 2)
And Play...
![56b3cebd50e1b69aaf000e15.jpeg](/proxy/?url=https://content.instructables.com/F9Z/B851/IK7BOVAJ/F9ZB851IK7BOVAJ.jpg&filename=56b3cebd50e1b69aaf000e15.jpeg)
![SerialTerminal.png](/proxy/?url=https://content.instructables.com/FIG/SHEG/IK7BPEGY/FIGSHEGIK7BPEGY.png&filename=SerialTerminal.png)
![VisuinoDiagramCrop.png](/proxy/?url=https://content.instructables.com/FQ0/A8J9/IK7BPI6C/FQ0A8J9IK7BPI6C.png&filename=VisuinoDiagramCrop.png)
Congratulations! You have completed the project.
Picture 1 shows the connected and powered up project.
If you open Serial Terminal in the Arduino IDE or Visuino, you will see the X, Y, and Z magnetic values, as well as the calculated X,Y heading in degrees (Picture 2)
On Picture 3 you can see the complete Visuino diagram.
Also attached is the Visuino project, that I created for this Instructable. You can download and open it in Visuino: https://www.visuino.com