YouTube player

The Data Dial Dashboard brings back the fun of old-school analog dial gauges while updating them with internet connectivity. In this project we will use an Arduino, Ethernet shield, and 3 servos to create a system for tracking global earthquake activity. The data are pulled from the USGS real-time data feeds page. With a little hacking, it is easily adapted to track your unanswered e-mail count, the speed of your internet connection, the price of rice in Rhode Island, or any other data you can scrape off the ‘net!


Project Steps

On the case

We’ll start by building the case. You can cut the parts out of balsa wood by hand, as shown here, or, if you have access to a laser cutter, easily make them from plywood, acrylic, or some other material. Begin by downloading the templates, Arduino sketches, and other digital assets for this project from the MAKE Github repository.

Print out the paper templates and use scissors to cut out the individual parts, sparing the lines. Tape the templates to your balsa wood and cut around them with a sharp utility knife. Make each cut in multiple passes, rather than trying to cut all the way through in one stroke.

There are seven parts altogether: the large front bezel, the two mirror-image sidewalls, the bottom brace, and the three small spacers. Use your utility knife to clean up the rough cuts so the parts slot neatly together.

Test-assemble the case by slotting the sidewalls into the bottom brace, then the front bezel onto the sidewalls. Make sure the holes in the spacers are the same size as the holes in the front bezel.

Get your glue on

Using your paintbrush apply glue to the joints starting with the holes in the sidewalls and the tabs on the bottom brace. Glue the sidewalls to the bottom brace. Apply glue to the recesses on the front bezel and the sidewalls, then glue the front bezel in place.

Use a damp paper towel to clean off any excess glue that has been pressed out of the joints.

Apply glue to the back of the spacers and then press them onto the backside of the front bezel (the side with the bottom brace). Make sure the edges of the holes in the spacers and the holes in the bezel line up.

Check to make sure all the joints are tight, then set the case aside for 24 hours to let the glue fully dry.

Make a double-power jumper

The Ethernet Shield has two 5-volt pins, but for this project we need three, so we’ll make our own custom “Y” cable to split one of the five volt pins into two.

Use a razor blade to split the insulation covering the female connector on one of your jumper wires and peel it out of the way. Clip off the female connector from a second jumper wire (leaving a long wire with the male connector still attached). Strip 4mm of insulation from the end from which the female connector was removed.

Wrap the stripped wire around the exposed female header near the crimped part of the connector, and solder it in place. Be careful not to get solder in the connector or it may not join correctly with a pin.

Pull the insulation back down and secure it with a small piece of electrical tape or a fresh layer of heat shrink tubing.

Stop: solder time!

Break one 4-pin and two 3-pin sections off the header pin strip from the Ethernet shield kit.

Solder the two 3-pin strip headers right next to each other, as shown, into the two sets of adjacent holes that correspond to the Arduino’s GND, GND, and 5V connections. Solder the 4-pin strip header into the holes on the Ethernet shield that correspond to digital pins 4, 5, 6, and 7.

NOTE: The header on pin 4 may be useful for testing and debugging but will not be connected during the build. It’s a good idea to go ahead and attach it, but it’s not strictly necessary.

Once all the pins are soldered, install the Schmart Board on the Arduino, making sure all the pins line up and connect properly. Connect your special “Y” jumper to one of the 5V pins, splitting it into two outputs, and then connect seven more normal M/F jumper wires to the other 5V pin, three of the GND pins, and digital pins 5, 6, and 7.

Install the servos

Plug in a GND jumper at the brown lead on each of the three servo connectors. Connect a 5V jumper to the red lead on each connector. Finally, connect pin 5 to the left-hand (from the front of the case) servo’s yellow lead, pin 6 to the middle servo’s yellow lead, and pin 7 to the right-hand servo’s yellow lead.

Press-fit the servos into the three holes in the case front bezel. Each should fit tightly with just a little force. If the fit is too tight, open the hole a little with sand paper or a utility knife. If it’s too loose, use some tape to “thicken” your servo.

If the servo arms are attached to your servos, remove them now with a small screwdriver.

Add the dials and hands

Print the dialface and indicator hand art onto rigid card stock and cut out each shape. Again, if you have access to a laser cutter, consider etching and cutting the art from plywood or plastic panel stock.

Rubber-cement the dialfaces over the holes in the front bezel, as shown. Make sure to align the indicator hand holes with the servo shafts, and that the center of each dial’s sweep range is pointing straight up.

Don’t put the servo arms back on the servos just yet. First, glue an indicator hand to each arm with rubber cement. Be careful to closely align the hand with the servo arm’s centerline.


Connect your Arduino to your computer with a USB A/B cable. then open ServoCalibration.ino and upload it to the board. One at a time, the servo shafts should sweep one direction, then the other, and finally stop. When they stop they are at their “zero” positions.

Reattach the servo arms (and indicator hands) to the servo shafts. Try to get the pointer on each as close to its dial’s zero position as possible. (A little bit under zero is better than a little bit over.)

If any of your pointers are aligned under zero, adjust the “zero” variable in the Arduino sketch code that corresponds to that dial. For example, adjusting “zeroC” from 180 to 178 will increment the zero position of the right-hand “C” servo by two degrees.

NOTE: Keep track of any calibration changes you have to make to the code, as you’ll need them in the next step.

Final setup

Connect the Ethernet Shield to your local network with an ethernet cable.

Open the DataDial.ino arduino sketch and adjust any of the three “zeroX” values to match the numbers from the calibration step.

Upload the sketch to your Arduino and sit back and watch as the dials begin reading out the tectonic status of our planet.

Once the code is uploaded you disconnect the Arduino from your computer and use the wall power supply to power the device. Just make sure you keep it plugged into your network.


If your dials don't move into place, open the Arduino IDE's "Serial Monitor" window at 115200 baud and check the output. Here you can see status updates as the device attempts to connect to the web to download the data it needs to update the dials. Once it has made a connection, the dial output values will also report in the Serial Monitor window.

If you see the error message "Failed to configure Ethernet using DHCP," check to make sure your Ethernet cable is plugged in and your network is configured to use DCHP.

If you see "connection failed," try to visit on a computer connected to the same network equipment as the Data Dial Dashboard. If you don't have any problems opening the site this way, wait a few minutes to let the device try again.