Wearable Wayfinder

Views: 8514 Difficulty: 3 Status: Complete

The Wearable Wayfinder is a totally programmable, beautiful little computer for your wrist packed with sensors.

The Wearable Wayfinder is a DIY programmable smart watch packed with sensors. Totally open and hackable this little gadget can do so much! Play and program fun gesture-based games, track your daily physical activity, display beautiful digital watch faces and compasses. Check them out in our store! Totally portable this device comes with a rechargeable lithium battery. USB ready out of the box, the Wayfinder can be programmed as a keyboard or a mouse to interface with virtually any laptop or desktop computer. It is Arduino compatible so you can program it with the popular Arduino Platform. Just follow the step-by-step instructions below. It comes with a real time clock, a compass, accelerometer, and temperature sensor, as well as a glorious TFT LCD screen with tens of thousands of colors right there on your wrist! We have crafted a 3D printed enclosure with space for the battery and a standard watch band.
This widget is LUCID-- You can take it apart an re-assemble it to your heart's content. The PCB is intricately silkscreened and labelled so you will learn as you play. The board also includes a thumb wheel potentiometer, two buttons, two LEDs and a power switch. We think the Wearable Wayfinder is an excellent platform for learning C++ programming because it is simple to use, yet incredibly powerful. The Wayfinder can connect with other devices using the I2C or serial protocols, or by using any of the four GPIO pins or two analog inputs.
We have written tons of programs for the Wayfinder which you can peruse and hack to you heart's content! For example check out our color clock, cellular automata animation, color compass, and alarm clock! And let us know about your next project in the comments!

Wearable Wayfinder in living color!

The wayfinders come in vibrant colors and dynamic shapes. But the real magic lies in the code you write for them!

Wearable Wayfinder Video

The Wearable Wayfinder displyaing its awesome capabilities.

The Wearable Wayfinder Diagnostic Code in Action

This video shows the Wearable Wayfinder running the Wearable Wayfinder Diagnostic sketch which you can find below. Nothing too exciting but you should run this code to see that all the sensors are working. Left button triggers the piezo speaker, the other changes the color.

Wearable Wayfinder Diagnostic Arduino Code

This code shows the output from all the Wearable Wayfinder's sensors. The buttons trigger the piezo speaker and changing the text color. While it isn't to exciting this code serves as a nice stub for any project you may want to do with the Wearable Wayfinder. It is a good idea to make sure this code runs correctly before diving all the way into the awesome world of the Wayfinder :)!
/* LucidTronix Wearable Wayfinder
 * For instructions, details and schematic, See:

#include <WearableWayfinder.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <Wire.h>
#include <SPI.h>
#include <Color.h>
#include <HMC5883L.h>
#include <MCP79410.h>
#include <I2C.h>
#include <MMA8453Q.h>

// for leo:
Adafruit_ST7735  tft = Adafruit_ST7735(SS, 9, 8);
WearableWayfinder ww = WearableWayfinder(&tft);
int cur_note = 0;
int old_pot = 0;
char notes[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

void setup(){  
  Wire.begin(); // Start the I2C interface.
  //ww.set_date_time(__DATE__, __TIME__);
void loop(){
  ww.draw_string(5, 4, "Time", ww.stroke.color_16(), 1);
  ww.show_time(10, 15);
  ww.draw_string(5, 36, "Date", ww.stroke.color_16(), 1);
  ww.show_date(10, 45);
  ww.draw_string(5, 66, "Compass", ww.stroke.color_16(), 1);
  ww.show_heading(10, 75);
  ww.draw_string(5, 91, "Accelerometer", ww.stroke.color_16(), 1);
  ww.show_accelerometer(10, 100);
  ww.draw_string(5, 136, "Potentiometer", ww.stroke.color_16(), 1);
  int pot =  analogRead(0);
  if(pot != old_pot) tft.fillRect(10, 145, 50, 10, ww.background.color_16()); 
  ww.print_integer(10, 145, pot, 1);
  old_pot = pot;
  if(digitalRead(ww.btn1_pin) == HIGH){
    ww.playNote(notes[cur_note++], 300);
    if (cur_note == 8) cur_note = 0;
  if(digitalRead(ww.btn2_pin) == HIGH){
    ww.stroke = Color(random(255), random(255), random(255));


Great library from Adafruit for controlling this LCD Screen Github page here.
Click Here to Download: ST7735

Adafruit Graphics Library

The Adafruit GFX library. This is the wonderful work of adafruit we just host it here for convenience. We made the most minor modification of replacing the dash in the library folder with an underscore so this baby is ready for your Arduino library folder out of the box :) Check out the GitHub page for the latest.
Click Here to Download: Adafruit Graphics Library

MCP79410 Arduino Library

Get the clock library: Download the MCP79410 Arduino library

MMA8453Q Accelerometer Arduino Library

I2C Arduino Library

Similar to the wire library but more flexible. You may wonder why we cannot use the standard Arduino Wire library, it is because the MMA8453Q uses a repeated start condition for the read operations and the default Wire library cannot handle those without modification.
Click Here to Download: I2C Arduino Library

HMC Compass Library

Download the library for the 3D compass module.
Click Here to Download: HMC Compass Library


Title Description # Cost Link Picture
TFT LCD Screen 1.8 inch 160 x 128 pixels LCD screen. ST7735R driver. JDT-1800. 1 $9.95 Link Id618_lrg
ATMEGA32U4-MU Integrated Circuits MCU AVR 32K FLASH 16MHZ 44-QFN Value: 2.7 V ~ 5.5 V 16MHz 1 $6.04 Link Screen_shot_2012-12-28_at_7.31.41_pm
Accelerometers MMA8453QR1 Tripla axis: X, Y, Z ±2g, 4g, 8g 16-VFDFN I²C 16-QFN (3x3) Value: I²C 1 $1.43 Link 16-vfdfn_exposed_pad
Clock MCP79410 Real-Time Clock Chip I²C, 2-Wire Serial 1.8 V ~ 5.5 V Alarm, Leap Year, Square Wave Output, SRAM, Unique ID Value: I²C 1 $1.08 Link 8-soic
Crystal 32.768KHZ 12.5PF SMD 32.768KHz crystal oscillator for use with DS1307 RTC chip. Value: 32.768kHz 1 $0.94 Link Ecs-2x62_series
Battery Lithium Coin Cell 3V 12.5MM Batteries Non-Rechargeable (Primary) Lithium Coin, 12.5mm 3V 36mAh Value: 3V 1 $0.71 Link Cr1220
HOLDER COIN CELL 12MM SMD Coin Cell, Retainer PCB, Surface Mount SMD (SMT) Tab Value: Coin, 12.0mm 1 $0.49 Link Bk-885-tr
Voltage Regulator 3v3 SMD IC REG LDO 3.3V .15A SOT23 Up to 6V input output 3.3V 150mA (Max) Value: 3.3V 1 $0.46 Link Sot-23-3_pkg
CD4050 IC BUFF/CONVERTER HEX 16SOICN 8mA, 48mA Value: 3 V ~ 18 V 1 $0.45 Link 16-soic_(7.5mmwidth)
BSS138 MOSFET N-CH 50V 220MA SOT-23 Value: MOSFET N-Channel, Metal Oxide 1 $0.25 Link Sot-23-3_pkg
Button Tactile switch SMD SPST 0.05A 12V Value: SPST 1 $0.2 Link Fsm4jsma
Capacitor CAP CER 10UF 10V Y5V 0805. Ceramic Capacitor. Value: 10µF 1 $0.16 Link 0805(12_5mm_thickness)
Resistor Chip Resistor - Surface Mount RES 10K OHM 1/8W 5% 0805 SMD Value: 10k 4 $0.1 Link Screen_shot_2012-12-28_at_7.29.44_pm
Capacitor CAP CER 0.1UF 50V Y5V 0805 Value: 0.1µF 1 $0.1 Link 0805(6_0mm_thickness)
Resistors RES 300 OHM 1/8W 5% 0805 SMD Value: 300 1 $0.1 Link Screen_shot_2012-12-28_at_7.28.51_pm
Resistor SMD 2.2K 0805 Surface Mount resistor 2.2k ohm, 0805 package. Value: 2.2k 1 $0.1 Link Crsm_pt0805
Handheld gaming machine, based on the Arduino Leonardo, equipped with joystick, SD card and more....
Coupling the HMC5883L Compass with our color library turns the Wearable Wayfinder into a handy naviga...
Wearable digital compass displays the direction in green LEDs....
A wearable real-time clock with vibrant color display....
Standalone programmable Heart-Shaped LED display....
Our take on the classic bouncing ball, paddle game....
Use the Wearable Wayfinder and the MCP79410 Real time clock chip to make an Arduino alarm clock....
Connecting the MCP79410 real-time clock chip and our Heart Matrix you can show the time with love....