workToy is a desktop TOY(L) that encourages playful behavior. thoughtBlocks, a set of work and play themed icon cubes, sit on the workToy dock in a tray. workToy’s dock acts as a digital button and contains all of the technology. The button state, determined by whether or not the tray of thoughtBlocks is on the dock, is recorded every minute to a Google Spreadsheet for data collection. workToy’s microcontroller is programmed to alert the user after a designated amount of time that the TOY(L) has not been played with. workToy was designed to foster a dialogue, both internally and with others, about work and play habits, by using data to help workers become more aware of their play and work habits.



DIY workToy – make your own workToy!

I want you to take workToy and make it your own. Swap out the thoughtBlocks for a productivity toy of your own. Try a different notification delivery component like LEDs. Experiment with a different microcontroller. We all play differently, and we all work differently. What makes workToy truly valuable is the experiences you put into designing it.


This basic set of instructions is intended to guide and inform the making of workToys. Please feel free to share your own process via the Contact page or on github.

Suggested Materials
  • copper tape
  • wire – smaller, stranded wire is easier and less expensive to work with
  • 10K ohm resistor for the digital button
  • wi-fi enabled microcontroller – a Particle (formerly Spark) Core is used in this example
  • example code from the workToy github repository
  • a dock – a clear acrylic box is used in this example
  • a toy that fits on the dock – you can make your own toy or add copper tape to the bottom of a toy you already have
  • vibration motor

Make a digital button with copper tape

  • Place two sections of copper tape onto the dock where the toy will sit. The two sections of copper tape should not touch.
  • Use copper tape or solder to attach two wires to one section of the copper tape, and one wire to the other section of copper tape on the dock. These wires will all connect to the microcontroller.
  • The section with one wire should connect to the microcontroller’s power pin.
  • One of the wires from the section with two wires should connect to a digital pin on the microcontroller (D2 in this example). The other wire from the section with two wires should connect to the microcontroller’s ground pin through a 10k ohm resistor. NOTE: failing to use a resistor before connecting the wire to ground will cause false results.
  • Place copper tape onto the bottom of the toy you’ll be using with the dock. When placed on the dock, the copper tape on the bottom of the toy should connect the two sections of copper tape on the dock.
  • Use the code and README file found in the workToy github repository to program your microcontroller.


  • Create a new Google Spreadsheet.
  • Set the Sharing settings to public so that “Anyone on the Internet” can find and view. Copy the share link.
  • Go to the spreadsheet’s Script editor (Tools > Script editor)
  • Paste the  code found in the workToy github repository in the script editor.
  • Replace the placeholder variables DEVICE_ID, VARIABLE_NAME and ACCESS_TOKEN in the first response declaration with your Core’s credentials. NOTE: after logging into the build site, navigate to the Devices menu. Select a core to see its Device ID. the VARIABLE_NAME will be “button” if you don’t change any of the Core’s code.Otherwise, change VARIABLE_NAME to the name of the variable you are publishing with Spark.publish command. ACCESS_TOKEN can be found on the Settings menu of the build site
  • Set how often you want your spreadsheet to check the button state. On the Script Editor menu click Resources > Current project’s triggers. Recommended setting (records the button state every minute): Time-driven; Minutes timer; Every minute

setup a notification output

  • Connect one wire of the output (vibration motor) to the microcontroller’s ground pin.
  • Connect the other wire of the output (vibration motor) to a digital pin on microcontroller (D4 if you’re using the example code.)
  • Program the microcontroller to set the digital pin the element is connected to to HIGH to turn the element on and LOW to turn the element off. See the example code in the workToy github repository for reference.
  • NOTE: the vibration motor works most effectively as a notification output when it rests near a side of the dock, or something hard it can rattle against.