- (1) Arduino UNO (I used a Red board from SparkFun) $19.95/ea
- (1) NeoPixel Ring - 16 Element $9.95/ea
- (1) NeoPixil Ring - 24 Element $19.95/ea
- (1) 1000uF Capacitor - 6.3V or higher $0.35/ea
- (1) HMC5883L Magnetometer $9.95/ea
- (10) Brass Heat-Set Insert 4-40 $11.48/pk. 100
- 0.1" Header Pins
- Hook-up wire (solid)
- 300-500 Ohm Resistor (1/8 watt)
- Nylon 4-40 Screws (1/2 - 1" length)
- Hobby Knife
- Drill
- Drill Bit 7/64"
- Soldering Iron/Solder
- Flat-head screwdriver
- Hot Glue Gun/Glue
- USB mini cable
- Print 1 top and 1 bottom bracket. 60% infill and a raft are recommended.
- Using a soldering iron, insert the heat-set thread inserts. Eight in bottom plate, 4 in riser posts, 4 in Arduino mounts. Two in top plate for magnetometer mounts. Demonstration Video
- Attach the magnetometer with 4-40 nylon screws. Shear the excess length flush with the bottom of the plate using a hobby knife. Be careful to not break the superstructure on the printed part.
- Place the capacitor into the cut-out and secure with a drop of hot glue.
- Solder ~5 cm of wire onto the data in line on the 16-element ring.
- Place the 16-element NeoPixel ring into the vertical ring holder. Thread the data-in line through the hole in the bracket. This ensures that data-in, V+, and GND are all accessable. Secure with a drop of hot-glue.
- Place the 24-element NeoPixel ring onto the riser posts. Line up the data-out pad to be near the data-in line on the smaller ring. The LED should be directly above the mounting post. Secure with hot-glue on each post.
- Secure the Arduino RedBoard to the base plate with 4-40 nylon screws. Shear the excess length flush with the bottom of the plate using a hobby knife.
- Using the 4-40 nylon screws, attach the top and bottom plates. Shear the excess length flush with the bottom of the plate using a hobby knife. You may prefer to do the wiring with the screws out for easy access, but it shouldn't be too much of a problem.
- See photos on how to make this easier with header.
- Trim and solder the data-in wire on the vertical ring to the data-out pad on the 24-element ring.
- Connect the data-in pad on the 24-element horizontal ring to pin 13 on the Arduino. The resistor goes in-line here as well. You can use 0.1" header to make this easier to assemble and troubleshoot.
- Connect a ground pad from the 24-element horizontal ring to a ground pad on the 16-element vertical ring.
- Connect the second ground pad on the 16-element vertical ring to the ground size of the capacitor (marked with -- on the case).
- Connect the ground side of the capacitor to GND on the Arduino. Header can make this easier.
- Connect the power pads of both rings to the positive side of the capacitor.
- Connect the positive side of the capacitor to +5VDC on the Arduino.
- Connect the GND, SDA, and SCL pins of the magnetometer to GND, SDA, and SCL on the Arduino.
- Connect the power pin of the magnetometer to the +3.3VDC pin on the Arduino.
- Install the NeoPixel, Adafruit Sensor, and Magnetometer libraries. For help, see the library tutorial.
- Connect the Arduino to your computer and upload the code in the Arduino/Vector_Display directory (see the Arduino guide) if you need help uploading programs to the Arduino.
- Play with parameters such as brightness and grading to create your own display!
- The
#define DECLINATION
directive adjusts the compass headings for your current location. You can look up this value on the CIRES World Magnetic Map, but you need to convert the DMS to radians.
You can learn a lot from your new compass/magnetometer! In addition to learning about the electronics and hardware, you can learn about magnetic fields and the Earth's geodynamo. Below are a few links to get you started and some ideas. Please contribute any experiments or activities that you develop!
- Learn how magnetometer calibration works (Freescale App Note)
- Measure the diurnal variation in Earth's magnetic field
- See how good of a metal detector you built
- Detect the movement of metal objects like a desk drawer