3D Printed NeoPixel Yoyo

This project is a derivative of Morgan Stewart's Circuit Playground Yoyo (Watch her demo it on Adafruit's Show & Tell). In this remix, we'll encase a single Circuit Playground board and a lipo battery in 3D printed parts to make a yoyo. The NeoPixel LEDs can shine through the cover, making cool glowy effects. Most of the yoyo parts are 3D printed, and no hardware (machine screws, hex nuts, etc) are required. They feature threads that allow the pieces to be twisted together.

History of the Yo-Yo

From Wikipedia:

A yo-yo (also spelled yoyo) is a toy which in its simplest form is an object consisting of an axle connected to two disks, and a length of string looped around the axle, similar to a slenderspool. It is played by holding the free end of the string known as the handle (usually by inserting one finger into a slip knot) allowing gravity or the force of a throw to spin the yo-yo and unwind the string (similar to how a pullstring works), then allowing the yo-yo to wind itself back to one's hand, exploiting its spin (and the associated rotational energy). This is often called "yo-yoing". First made popular in the 1920s, yo-yoing remains a popular pastime of many generations and cultures. It was first invented in ancient Greece.


This is a fun project but in not intended to replace a professional yoyo. Because a yoyo relies on perfect balanced weight, it can be challenging to evenly distribute the weight two both sides - That being said, it can be done. I personally was able to get it to sleep for about 2-3 seconds which allows enough time to do tricks like Rock The Baby.


We'll need just a few parts to build this project, most of which are available in the Adafruit shop. You'll need to source a yoyo string. Everything else is 3D printed.

Tools and Supplies

Here are some tools and supplies that you'll need access to complete this project. If you don't have access to a 3D printer, you can send the STL files to 3DHubs.com

3D Printed Parts

Below is a list of the parts necessary for building the yoyo. It's composed of five printed pieces, with a translucent cover (ideally acrylic). The parts are optmized to 3D print without any support material and is small enough to fit on most FDM machines.


Contains battery and slide switch.


Contains Circuit Playground PCB.


Yoyo string loops around axle.


Top screws onto Side A.


Top screws onto Side B.


Cover press fits into the Top A part.

Slice Settings

Below are some recommended slice settings. We used simplify3D to slice these parts and generate the gcode. These parts were printed on a Micro M3D using a .4mm nozzle and 1.75mm filament.

  • .15mm layer height
  • 220C extruder / PrintInZ Skin
  • 20% infill
  • 4 top/bottom layers
  • 2 shells / parameters
  • 40mm/s printing speed

Top Covers

The twisty top for cp-yoyo-side-a.stl was designed for a separate cover piece. This can be 3D printed, milled, lasered, or cut out of any type of material that can diffuse the NeoPixel LEDs.

Acrylic Cover

I milled the cp-yoyo-cover.stl part out of 2 colored acrylic sheet using the Othermil desktop CNC. The toolpaths were generated in Autodesk Fusion 360 using CAM tools. If you'd like to generate your own GCODE, you can grab the source by downloading the fusion 360 archieve below.

Remix Design

You can download the source files in a varitey of file formats such as, STEP, SAT, IGS, SketchUp, DXF and others.

Parts for Slide Switch

To make it easy to turn on/off the circuit, we'll need to build a JST slide switch adapter. The Circuit Playground board doesn't have an onboard power switch, so we'll build one using a slide switch and JST extension cable. The battery in this project can either be a 105mAh battery or a 350mAh battery, which ever you prefer. 

Cut to Size

The JST extension is about 500mm in length, so we'll need to cut it down to size. Here's a good length to start with:

  • 80mm JST Female connector end
  • 150mm JST Male connector end

Strip & Tin Wires

Next, we'll pull the ends part and remove about 5mm of insulation from each wire. Then, we can tin the exposed strands of wire by applying a bit of solder. I recommend using a pair of Helping Third Hands to help keep the wires in place while soldering.

Wire Slide Switch

Now we can solder the power/voltage wires from the two JST wires to the slie switch. First, we need to snip off one of the legs from the slide switch (either the left or right, not the middle leg). Then, we can tin the two remaining legs by apply a small amount of solder to them. This will make it easier to attach the wires. Solder the two red power/voltage wires from the JST connectors to the slide switch.

Connect Ground Wires

We should now be left with two ground wires from the JST extension cable. Cut a small piece of heat shrink tubing and slip it through one of the ground wires - this will insulate the exposed wires. Then, solder the two ground wires together. Now you can slide the piece of tubing over the exposed wire and apply some heat to shrink it in place (I use the edge of the soldering iron, but not the tip!).

Finished Slide Switch JST Adapter

OK, now we have our slide switch JST adapter! Wooho! Now we easily remove our lipo battery whenever we need to recharge it.

Strain Relief Wire From Lipo Battery

I found that this project can wear out the wire from the Lipo battery. In some cases, I mananged to completely rip the wire from the battery, which is BAD! So, to prevent that from happening, we can apply a dab of hot glue to the solder joins on the end of the lipo battery.

Test Circuit

Now it's time to test our circuit! Go ahead and plug in the male JST connetor from the lipo battery to the female JST connector on the slide switch adapter. Then, connect the male JST connector from the slide switch adapter to the female JST connector on the Circuit Playground board. 

Flip the switch on and should you see the NeoPixel LEDs light up (make sure the on board switch is on the + symbol).

Glue Cover to Top

The cp-yoyo-cover.stl part will have a loose fit when placing it over the cp-yoyo-top-a.stl part, so you'll need to use some adhesives to perminanently bond them tgoether. I used super glue, but anything similar should be fine.

Different Acrylic Colors

I tried out two different colored sheets of Acrylic sheet. The black on white colored acrylic is from Inventables. The other is florescent pink acrylic from amazon. Both are 1/8" thick.

3D Printed Cover

You can totally 3D print the cp-yoyo-cover.stl part. In order to get decent diffusion to allow the NeoPixel LED ligh to shine through, you'll need to use a light colored filament, such as natural white, transculent or glow-in-the-dark.

Install Axle

Insert cp-yoyo-axle.stl into cp-yoyo-a-side.stl with the thread going in first. Press until hex side mates with coupler. 

Align Side Ports

Insert cp-yoyo-b-side.stl onto cp-yoyo-axle.stl. Hold cp-yoyo-axle.stl while twisting cp-yoyo-b-side.stl tighten and reorient until ports of both sides are lined up.

Glue Axle to Side A

Hold cp-yoyo-axle.stl in place while applying super glue to the hex side. Hold together until glue full sets.

Install Yoyo String

Untwist the end of the yoyo string and place it over the axle. The loop should slip into a grove on the center of the axle.

Install JST Connect Circuit Playground

Insert the male JST connector and thread it into cp-yoyo-b-side.stl. Then, thread it through the cp-yoyo-axle.stl piece and pull it through cp-yoyo-a-side.stl.

Install Circuit Playground

Orient USB port of circuit playground with hole on cp-yoyo-a-side.stl. Then, lay circuit playground PCB onto the standoffs and press down until pegs snap into pins.

Twist Yoyo Halves

Insert axle from Side A and twist it onto Side B. Tighten both halves together.

Connect Battery & Install Switch

Plug in the male JST connector from lipo battery into female JST connector. Insert slide switch into clips on the side of cp-yoyo-b-side.stl.

Mount Battery

Use a piece of mounting tack and stick it on the back of the lipo battery. Stick the lipo battery to the surface of cp-yoyo-top-b.stl. Press down on battery to secure it in place. Twist cp-yoyo-top-b.stl onto cp-yoyo-b-side.stl until fully tightened.

Install Cover

Twist cp-yoyo-top-a.stl onto cp-yoyo-a-side.stl until fully tightened.

Wind up Yoyo String

Place finger over gap between halves and partially wind up the string. Remove your finger and then wind up the whole string. Now it's ready for a test spin!

Do Some Tricks!

I was able to get the yoyo to sleep for about 4 seconds until it came to rest. This should give you enough time to do some basic tricks like walk the dog or even rock the cradle.

You can load up any NeoPixel sketch to make cool designs, try out this Kaleidescope code for some motion-activated lights!

This guide was first published on Sep 14, 2016. It was last updated on Mar 08, 2024.