- (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 at (CIRES)[http://geomag.org/models/wmm-declination.html] 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