Use the Flora wearable microcontroller and its GPS module to tell time with a stunning ring of pixels. A leather cuff holds the circuit and hides the battery. The watch is chunky but still looks and feels great on tiny wrists!

The circuit sandwich becomes the face of the watch, and you’ll use a tactile switch to make a mode selector. The watch has three modes: timekeeping (one LED shows the hour and one shows minutes), compass (always points north), and GPS navigation. Customize your waypoint in the provided Arduino sketch, and the LEDs will point the way and then tell you when you’re arriving at your destination.

This is an intermediate-level project requiring soldering and some precision crafting. Before you begin, you should read the following guides at adafruit.com:

This project is adapted from our new book, Getting Started with the Adafruit Flora, available from the Maker Shed. Project help and modeling from Risa Rose.


Why Flora?

Flora is Adafruit’s Arduino-compatible wearable electronics platform. Measuring only 1¾” in diameter, the main board is small enough to embed into any wearable project, and it has large pads for sewing with conductive thread. The round shape means there are no sharp corners to poke through your garment, and the 14 pads are laid out to make it easy to connect sensors like a sewable motion sensor, color sensor, the Ultimate GPS, or the Flora light sensor. Power and ground buses are interleaved with data pads specifically to prevent crossed threads.

The most innovative modules in the Flora family are the Flora NeoPixels: addressable, color-changing LED pixels designed to be daisy-chained and easy to sew.

The Flora is beginner-friendly, and easy to use with a wide variety of battery packs from 3.5 to 16 volts. Its four indicator LEDs let you know about its power status and data transmission.

Since it uses the powerful ATmega32u4 microprocessor, Flora has built-in USB support allowing it to act as a keyboard or mouse just by plugging into its mini USB connector. It’s programmed via Mac, PC, or Linux with free software you download online. Adafruit publishes hundreds of tutorials and dozens of free code libraries for Arduino-compatible boards, so you’ll never be lacking project ideas or sample code to get you started.


Circuit Diagram

Each component connects to the Flora main board as follows:

3.3V → 3.3V
TX → Flora RX
RX → Flora TX


3.3V → 3.3V

NeoPixel ring:

Vcc (power) → Flora VBATT
IN (Data Input) → Flora D6
Gnd (ground) → GND

Tactile switch:

any 2 diagonal pins → Flora D10 and GND


plugs in via the onboard JST port

Project Steps

Prepare the components.

Gather your tools and supplies on a clean, stable work surface with good lighting.

Start by soldering small stranded wires to your electronics components, about 2″ long each. Strip the wire ends and twirl the stranded core to make it more easily pass through the circuit boards’ holes. Solder wires to the NeoPixel ring’s IN, Vcc, and Gnd pads. It’s best to solder on the backside of this board, since the pads are quite close to the leads of the NeoPixels on the front of the board, where a large dab of solder could bridge the two.

Also solder wires to the GPS module (3.3V, RX, TX, and GND) and the accelerometer/compass module (3V, SDA, SCL, and GND).

Trim off any wire ends with flush snips.

Mount the GPS and accelerometer.

Use the NeoPixel ring to help position the round GPS module in the center back of Flora. (The ring is exactly the same size as Flora, and so it functions as a jig.) Use double-stick tape or a dab of E6000 glue to hold the GPS in place.

Hold the circuit with the help of a third hand tool and wire the GPS connections to Flora according to the circuit diagram. Make sure the wires are not longer than they need to be, and sit flush to the board.

Flip the circuit over and solder the wires to the Flora main board. Trim any excess wire ends.

TIP: My third-hand tool has heat-shrink tubing over the grippy alligator clips. This was Collin Cunningham’s pro tip, and prevents scratching my circuits and their components!

Use a piece of double-sided foam tape to mount the accelerometer in the center of the Flora board, right on top of the central 32u4 microcontroller chip. The foam helps distance the boards from one another to avoid shorting any components on the board.

Trim, strip, and solder the wire connections for the accelerometer/compass according to the circuit diagram.

Mount the switch.

To prepare the tactile switch, flatten and snip off any 2 diagonal pins.

Insert the switch into D10 and GND on the busy side of the Flora board. Bend out the leads to hold it in position and solder the joints. This big tactile button makes it easy to switch watch modes by holding down the whole face of the watch for a few seconds.

Test your work. Verify that your solder connections are secure with a multimeter.

Before you proceed, test the GPS and accelerometer with the sample sketches provided with their respective code libraries. The next steps will make it hard to correct any bad solder joints or stray wires, so don’t skimp on testing the circuit now!

Mount the NeoPixel ring.

Trim, strip, and solder the NeoPixel ring’s wires to the pads on Flora according to the circuit diagram, routing them inside the ring. (Don’t route them outside, as we did. It turns out they’re not super durable that way, as they can catch on clothing.) Load the NeoPixel test code to be sure the ring is connected and functioning properly.

Glue the NeoPixel to Flora, lining up the PCB edges exactly. Don’t pinch the boards together too much — there should be a cushion of glue separating the two. Use a toothpick to fill in any gaps with more adhesive, for instance near where the GPS wires route under the board.

NOTE: The watch code will allow you to adjust which LED is at 12 o’clock, so the orientation of the ring doesn’t matter.

Allow the glue to set for at least 1 hour. The circuit is finished! Now let’s make it a watch.

Assemble the watch.

The watch circuit will be held in place by the small strap on a leather watch cuff. The USB and JST ports line up perpendicular to the band for easy access, and the tactile switch is on the “top” of the watch. This will point Flora’s on board power switch toward you when you wear the watch.

Unthread the small strap from one half the cuff and lay it over the busy side of the Flora board, between the USB port and JST battery connector. The tactile switch intersects with this strap for easy mode selection when you’re wearing it.

Use 2 small strips of fabric to make “belt loops” for the circuit. Apply a small dollop of E6000 adhesive to either side of the USB connector and clip a fabric strips to Flora with a binder clip. Wipe away and overflow adhesive.

Repeat with another belt loop to the other side of the USB port.

Line up the circuit with the band again, this time placing it between the circuit and the fabric strips.

Apply 2 more small dollops of adhesive, this time on either side of the JST battery connector, and stick the fabric down taut across the leather band. Clamp with more binder clips and allow to dry for 24 hours.

NOTE: Less glue is more! Be tidy and make sure there’s no adhesive touching the leather band. Your circuit should slide along the band freely so you can adjust it.

After drying, remove the clips and trim the fabric close to the board. It should slide along the band but not be too loose or your watch will be floppy! If your fabric strips aren’t tight enough, use a needle and thread to cinch them up now.

Glide your watch face toward the buckle side and thread the free end back through the cuff.

Upload the code.

The Flora NeoGeo Watch is very easy to use. It has three modes. To change between modes, press and hold the button for 2–3 seconds. You can hold down the button and it will cycle from mode 1 to mode 2 to mode 3 and then back to mode 1. The 3 modes are:

Watch Mode — shows the “hour hand” as an orange LED, the “minute hand” as a yellow LED, and if both “hands” are on top of each other, the LED will glow purple. When you first turn on your watch, you need to give the GPS a clear view of the sky. Once the GPS locks on, it will automatically update the time for you. Now, if you lose a GPS signal, it will still remember the time (until you disconnect the watch from power).

Navigation Mode — points an LED in the direction you need to go to reach the coordinates you entered in the sketch. When you get close to your destination, the LED will change from yellow to red. You need to have a constant GPS lock for this mode to work.

Compass Mode — a blue LED always points north.

The code for the Flora NeoGeo Watch is pretty simple and straightforward. We’re using the standard Adafruit GPS Library, a Time Library, the LSM303 Compass Module Library, and the Flora Pixel Library. You’ll find links to all of these libraries on the NeoGeo Watch Github page.

Follow the Flora Pixel tutorial for more information about installing that library. Test the pixel sample code to be sure your pixels are functioning properly.

Then follow the Flora GPS tutorial to test your GPS module. To make sure your GPS has a direct view of the sky, hang your watch out the window (but don’t let it fall out). I used a USB extension cable so I could have the watch out the window but still plugged in to the computer!

Calibrate the compass.

Next, calibrate the compass module. Follow the steps shown on the Pololu LSM303 Github page on how to use the calibration sketch (github.com/pololu/LSM303). Then take the numbers from the calibration sketch and dump them into the NeoGeo Watch sketch. Look for this chunk of code and modify the numbers accordingly:

// Calibration values. Use the Calibrate example program to get the values for

// your compass.

compass.m_min.x = -809; compass.m_min.y = -491; compass.m_min.z = -793;

compass.m_max.x = +451; compass.m_max.y = +697; compass.m_max.z = 438;

The last section of the sketch that you’ll need to modify looks like this:




//Please enter the latitude and longitude of your |

//desired destination: |

#define GEO_LAT 44.998531

#define GEO_LON -93.230322


//Your NeoPixel ring may not line up with ours. |

//Enter which NeoPixel led is your top LED (0-15). |

#define TOP_LED 1


//Your compass module may not line up with ours. |

//Once you run compass mode, compare to a separate |

//compass (like one found on your smartphone). |

//Point your TOP_LED north, then count clockwise |

//how many LEDs away from TOP_LED the lit LED is |

#define LED_OFFSET 0


We like iTouchMap for finding latitudes and longitudes online. Dump in a location, such as your home, so you’ll always be able to find your way home.

We also know that your NeoPixel Ring and compass sensor won’t line up perfectly with our design (even our two prototypes didn’t line up exactly). So, we made it easy for you to calibrate your watch. First, calibrate your NeoPixel Ring. This is as simple as lighting up each pixel using the NeoPixel code and determining which pixel is your top pixel (from 0–15). In the code, it’s set to pixel 1.

Next, you need to make sure your watch knows which way north is. This is really easy to do. When your watch is on, hold down the button until you get to mode 3, the compass mode. Then, using a compass on your smartphone, or the old-fashioned kind, point your TOP_LED north. Count clockwise how many pixels away the lit LED is away from the TOP_LED. So, if you aim your TOP_LED north, and the LED 4 spots over (counting clockwise) is lit up, you would change the 0 in the LED_OFFSET code above and replace it with 4.

That’s it. Upload the code to your Flora, and start using your NeoGeo Watch!

Wear it.

Plug in a tiny LiPoly battery and tuck it into the cuff. Although you can place it directly behind the circuit, we like it better tucked into one of the “side pockets” where the cuff overlaps the strap. A piece of gaffer’s tape holds the battery nicely to the strap, where it can be protected by the cuff.

Flora’s onboard power switch should still be accessible, hidden under the part of the watch closest to you. If you don’t have nails, use a toothpick or other pointy, nonconductive object to flip the switch!

The watch fetches the time of day from GPS satellites, so when it first powers on, it needs to get a GPS fix by directly seeing the sky. Set it on your windowsill or go for a walk in the sunshine so your watch knows what time it is!

NOTE: It can take several minutes to acquire a GPS fix, but it only needs to do this once on power-up. You can attach an optional backup battery to the GPS to keep its fix between battery charges, and tuck it in the opposite “side pocket” of the cuff or right behind the face.

Once the GPS gets a fix, the watch will display the current time, with one pixel color for the hours “hand” and another for minutes.

Press and hold near the top of the watch face to engage the tactile switch for a few seconds to change modes. Compass mode lights up blue in the direction of north.

GPS navigation mode points towards the coordinates you configure in the Arduino sketch, and grows redder the closer you get to your destination.

This watch is not waterproof! Take it off and power it down if you get stuck in the rain. Don’t wear it while doing the dishes, etc.

Enjoy your new Neo Geo Watch!