LED wearables let you change colors to match your outfit or your mood. This customizable cuff, made from simple craft materials, uses two LED strips which diffuse and mix their colors into hot glue "gems" to produce dynamic color gradients spanning the spectrum.

The small, versatile QT Py board can create complex color patterns with simple CircuitPython code, and the bracelet itself is a surprisingly straightforward build - using tools no more complex than a hot glue gun and soldering iron.

There's no need for an power switch, because the board and LEDs obtain power from a LiPo battery with a male USB C connector soldered to the leads. The USB C connector doubles as a clasp, turning the QT Py board and LED strips on when closed.

The EVA foam casing makes this cuff soft and flexible, fitting comfortably on the wrist, but also protects and secures electronics and wires. Memory wire loops, sandwiched between the foam layers, add structure and define and maintain the cuff shape while preventing strain on solder joints and connections.

Adafruit Parts

Parts for the Cuff:

Adafruit QT Py - SAMD21 Dev Board with STEMMA QT

PRODUCT ID: 4600
What a cutie pie! Or is it... a QT Py? This diminutive dev board comes with our favorite lil chip, the SAMD21 (as made famous in our GEMMA M0 and Trinket M0 boards).For...
$6.00
IN STOCK

Adafruit NeoPixel LED Side Light Strip - Black 60 LED

PRODUCT ID: 3636
Fancy new side light LED strips are a great alternative for folks who have loved and used Adafruit LED strips for a few years but want gorgeous, glowy light emitting at...
$17.95
IN STOCK

Lithium Ion Polymer Battery - 3.7v 350mAh

PRODUCT ID: 2750
Lithium ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light and powerful. The output ranges from 4.2V when completely charged to 3.7V. This battery...
$6.95
IN STOCK

USB Type A to Type C Cable - approx 1 meter / 3 ft long

PRODUCT ID: 4474
As technology changes and adapts, so does Adafruit. This  USB Type A to Type C cable will help you with the transition to USB C, even if you're still...
$4.95
IN STOCK

If you need wire and heat shrink tubing:

Silicone Cover Stranded-Core Wire - 2m 26AWG White

PRODUCT ID: 1882
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire...
$0.95
IN STOCK

Silicone Cover Stranded-Core Wire - 2m 26AWG Black

PRODUCT ID: 1881
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire...
$0.95
IN STOCK

Silicone Cover Stranded-Core Wire - 2m 26AWG Orange

PRODUCT ID: 1883
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire...
$0.95
IN STOCK

Multi-Colored Heat Shrink Pack - 3/32" + 1/8" + 3/16" Diameters

PRODUCT ID: 1649
Heat shrink is the duct tape of electronics which I guess makes this heat shrink the colorful and exciting duct tape they sell at craft stores.  This heat shrink comes in six...
OUT OF STOCK

Parts for the Battery Charger

Adafruit Micro-Lipo Charger for LiPo/LiIon Batt w/MicroUSB Jack

PRODUCT ID: 1904
Oh so handy, this little lipo charger is so small and easy to use you can keep it on your desk or mount it easily into any project! Simply plug it via any MicroUSB cable into a USB...
$6.95
IN STOCK

Adafruit USB Type C Breakout Board - Downstream Connection

PRODUCT ID: 4090
Throw out all those Mini and Micro B USB cables you have in a plastic bin - the next generation of USB connectors is here with USB C! You will start to see these...
$2.95
IN STOCK

Additional Parts/Materials

  • 1x USB C male breakout with solder pads for power connections. These breakouts from Amazon come with housings that aren't needed for this project.
  • 2x Sheet of 2-3mm Thick Adhesive EVA Foam, like these from Amazon.
  • Translucent white hot glue sticks. These ones with glitter add an extra sparkle to the project, but any translucent white color glue stick will do.
  • Memory wire (only 2 coils are needed for this project), available on Amazon or in many bead and craft stores
  • Electrical tape

Tools:

  • Hot glue gun compatible with the glue sticks
  • Soldering iron/solder
  • Wire cutters
  • Pliers
  • Craft knife or sharp scissors

Foam Template Files

This projects uses two pieces of adhesive craft foam with adhesive sides joined together, securing coils of memory wire and electronics between them. The interior foam piece is shaped like a simple rectangle, while the exterior piece contains cutouts to hold the LEDs and QT Py.

Download the vector template files for the EVA foam by clicking the green button below. Inside the Zip file are templates for three different cuff sizes. Choose the file which best corresponds to your wrist circumference:

  • SMALL:      wrist size < 6.5"
  • MEDIUM:   6.5" < wrist size < 7.5"
  • LARGE:      7.5" < wrist size

Machine Cutting the Foam

If you have access to a vinyl cutter or laser engraver/cutter, you can import the SVG template vector file provided into the control software for your machine. You may also cut the foam pieces by hand, as described below.

EVA foam is safe to laser cut, but if using a laser, it's a good to verify that the settings generate a clean cut that doesn't melt the foam.

Hand Cutting the Foam

Print the template and check the scale using the 1" reference square. After printing, trim the template close to the piece outlines, then tape it onto the paper covering the adhesive side of the craft foam.

Cut out the small rectangular shapes first with the craft knife.

Cut around the exterior of the two cuff pieces. If the piece edges are a bit rough, you can trim them with scissors. The cutouts will be filled with hot glue, so small imperfections in the shape of the rectangles won't be apparent when the bracelet is finished.

Cut Memory Wire Coils

Two coils of memory wire provide the cuff's shape and structure. The length of the wire loops will be the same, irrespective of wrist size. Using wire cutters, cut two coils from the wire, each the length of a complete circle. 

Once cut, use fine-nosed pliers to bend both ends of each coil back on themselves so that the loops are perpendicular to the plane of the circle. Rounding the ends of the wire prevents them poking through the foam.

Cut the JST Connector from the LiPo Battery

When cutting battery wires, be very careful that you do not cut both power and ground wires in the same snip. Cutting them simultaneously creates a short between battery power and ground and can generate a nasty shock!

Using wire cutters, carefully snip the JST connector from the LiPo battery at about 3 cm from where the wire joins the battery. Be sure to snip one wire at a time to avoid creating a short between ground and power wires. After removing it, save the JST connector for a bit later, when we'll use it in a USB C to JST power adapter.

Solder the USB-C Connector

Take the USB C breakout board (bottom left of image) and identify the pads for power and ground connections on either side of the small PCB. Tin both pads with small blobs of solder.

Next, snip through one of the battery wires, then strip and tin the end of the cut wire with solder.

It's best to solder the first battery wire before cutting the second to reduce risk of shorting the leads together. Lay the tinned end of the cut battery wire on top of the corresponding breakout board solder pad (red wire <-> Vcc, black wire <-> Gnd), and melt a bit of solder on the tip of the iron. Holding the wire in place, touch the tip of the iron to the wire as it rests on the pad. This will melt the solder and connect the wire to the pad.

Once both wires are soldered, heat up the hot glue gun, and squeeze a small dollop of hot glue over the solder connections to secure and insulate them.

Cut a small length of 1cm diameter shrink tube and slide it over the end of the connector so that it covers the wires and breakout PCB. Don't let the shrink tube extend more than a few mm over the connector itself, or it won't fit into the QT Py's USB connector.

Heat the shrink tube until it tightens around the glue and wires. Add an additional dollop of hot glue in the end of the shrink tube near the wires to provide additional strain relief.

Secure the Connector to the Battery

Electrical tape secures the connector and provides extra protection to the battery. Position the USB connector over the battery so it is oriented perpendicular to the battery's long axis and the length of the connector (but not the breakout PCB) extends past the battery's edge.

Cut a piece of electrical tape, then firmly wrap it around the connector and battery twice lengthwise.

Cut another piece of electrical tape, and slice it in half lengthwise to form two narrower tape strips.

Wrap the narrower tape pieces around the short axis of the battery, perpendicular to the first piece of tape. Attach the strips so they sit just next to the USB C connector on either side.

Each strip should wrap around the battery approximately two times. When finished, the battery and USB connector should resemble the picture at left. The tape should secure the connector to the LiPo battery so that it won't slide around easily.

Cut LED Strip Segments

Most LED strips emit light perpendicular to the strip's surface. The "Side Light" LED strips in this project contain small 4020 (4mm x 2mm) LEDs which project light towards the side of the strip. These kind of strips work well to diffuse light edgewise along a surface into a diffusion material like hot glue.

A single cuff requires two lengths of LED strip containing seven LEDs apiece. You can cut these strips from the reel by snipping directly through the protective silicone coating with flush cutters.

When cutting the strips, be sure to cut through the middle of the solder pads on both strip ends (red arrows in image), leaving a partial pad on both sides of the cut. This allows wires to be soldered to both inputs and outputs of the cut pieces.

Electronics Layout

The wiring for the strips is shown in the Fritzing diagram below. Both LED strips receive power through the QT Py. The QT Py sends the LED control signals into the input of the first strip, and the output from the first LED strip becomes the input for the second LED strip. The strips must be oriented in opposite directions for the signal to travel through both.

The QT Py supplies power to the LED strips from its power pads, and controls the light patterns with a signal from its MOSI pin.

Wire It Up

In order to determine the lengths of hookup wire needed to connect the QT Py and LED strips, lay out the Side Light LED strips and QT Py controller in place on the top foam layer as shown. The end of the QT Py USB connector is even with the end of the foam, and the LED strips sit over the foam with one LED in each rectangular cutout.

Cut appropriate lengths of 26 AWG hookup wire to make the electrical connections. connections. Strip short lengths of insulation from both ends of each wire.

You can connect the power and ground wires to either the QT Py pins or to the small pads on the back of the board. In this tutoral, the wires are soldered to the pads as shown.

Solder the power/ground wires to the power pads and solder the signal wire (green) to the QT Py MOSI pin.

Insulate and reinforce the solder connections by applying a bit of hot glue over the solder joins, then sliding a short length of shrink tubing over the glue. Apply heat to shrink the tubing and hold the connections together.

Place another two pieces of shrink tube over the LED strip ends before soldering the signal wire between them. The signal wire runs from DO of the first strip to DI of the second.

Apply small blobs of hot glue over the newly soldered joins, then slide the shrink tube over the glue. Apply heat to shrink the tubing.

Test the Electronics

At this point, It's a good idea to connect the QT Py to power and run a program, like one from the Adafruit QT Py and NeoPixel tutorial, to be sure all electronics function correctly. If running a demo program, remember to set the LED pin to the QT PY's MOSI pin, e.g.

pixels = neopixel.NeoPixel(board.MOSI, num_pixels, auto_write=False)

Parts Needed

Assembling the cuff requires the following items from the previous steps:

  • Two cut EVA foam pieces
  • Two coils of memory wire with looped ends
  • LiPo battery with USB C connector
  • Electronics assembly of wired QT Py/LED strips

Assembly

First, place the exterior foam layer on a table with adhesive side facing up and peel away most of the paper. Leave the bits of paper that cover the long tabs at the end. This makes it easier to handle the foam piece without getting stuck to it.

Next, take the electronics assembly, oriented with the LEDs facing downwards, and set the QT Py into the small notch at the edge of the foam. The QT Py should be aligned so that the open end of its USB C connector lines up with the foam edge. Press the foam against the QT Py to ensure good contact

Continue carefully down the length of the electronics assembly, pressing both LED strips into the foam as you go. Move slowly and shape the foam and electronics into a curve with the foam on the outside. The foam cutouts are spaced so each LED is centered on the short edge of a cutout, while the rest of the strip sits behind the foam.

Once the electronics are firmly attached to the foam, place one of the memory wire coils inside the curved foam and press the foam around it. The loop should sit between the edge of the foam and the LED strip without touching either.

The foam is longer than the coils of wire.  Position the coils so that one looped end sits very close to the end of the foam with the QT Py. The other end of the foam with the long tabs will extend past the memory wire.

Press the second memory wire into the other side of the foam, parallel to, and aligned with the first.

Place the taped battery in the cuff so that its USB C connector just sits inside the "U" shaped notch between the long tabs.

Now that the electronics and memory wire are correctly positioned, take the second piece of EVA foam and start to peel back the protective paper from one end. Carefully attach the peeled end to the interior of the cuff, adhesive sides of both pieces together. Start at the end containing the QT Py and be sure that edges and end of both foam pieces are lined up.

Continue peeling back the paper, and pressing the interior foam piece against the exterior one. As you go, push and smooth the adhesive foam surfaces together, while keeping the edges of both pieces aligned. Press the foam around the coils of wire to secure them in place.

The edge of the interior foam piece may extend past the side of the battery with the USB C connector. If so, carefully trim the end of the interior foam piece with scissors so that it just extends just past the LiPo battery. Be VERY careful not to cut or puncture the battery when you cut the foam.

The two tabs on the exterior EVA foam piece wrap back around the edge of the battery into the bracelet interior. This helps secure and protect the battery. Before peeling the paper, bend the tabs back around the interior of the bracelet, and mark the position where they just extend beyond the battery. Trim them at that point.

Peel the paper from the tabs and fold them around the battery, just on either side of the USB C connector. Stick them firmly to the interior of the bracelet by pressing the foam togehter.

Check the Clasp

Now that the bracelet body is assembled, try it out by placing it around your wrist and closing the clasp. It may take a little practice to learn to slip the USB C connector into the QT Py with one hand.

Once closed, check that the QT Py and LEDs are powered. When opening the cuff, pinch the USB C connector and battery between your fingers and slide them away from the QT Py to disconnect.

Ada, Get Your (Glue) Gun

A hot glue gun and glue sticks are all you need to create color mixing gems. Glitter glue sticks provide a nice sparkle but any standard translucent white glue stick will do. Plug in the glue gun and give it a few minutes to heat up.

Hot glue may burn, please exercise caution and ensure the tool is kept away from curious onlookers and unplugged when not in use. Older makers should assist younger makers with hot glue.

Glue Application Technique

When filling the cutouts with glue, start with the glue gun tip near one edge, pointing towards an LED. Squeeze to extrude the glue towards the LED, slowly drawing the tip of the gun away as the hot glue starts to fill the cutout. At about the middle of the cutout, rotate the cuff 180 degrees underneath the tip of the gun, and move the glue gun tip to the opposite LED.

Squeeze the glue towards the other edge, moving the tip back towards the middle. When the cutout is mostly filled with hot glue, lift the glue gun up slightly and squeeze a light strip of glue across the very top of what is already extruded. Run that final light squeeze of glue from one end of the cutout to the other, allowing it to melt and create a smooth top surface. After gluing each gem, set the glue gun aside and hold the bracelet level while the glue you just applied settles and cools.

The video below demonstrates this technique.

Tips and Tricks for Good Gluing

It can take a little trial and error to find the best technique for applying the hot glue. You may find it useful to cut holes into scrap pieces of EVA foam and practice gluing those before working on the bracelet directly.

 Some other useful glue application tips:

  • Create each gem one at a time, and don't start the next one until the previous one has fully cooled.
  • After extrusion, glue will flow a bit until it cools, so it is important to hold the hole with the molten glue horizontal until it sets.
  • If a small bit of glue overflows the hole, it's easiest to remove it before the glue dries. Carefully use tip of a toothpick to scrape off any excess drips around the hole.
  • If you don't like the shape of the dried glue, you can re-heat it carefully with a hair drier or hot air gun set to low heat. Be careful not to burn the EVA foam in the process. Once the glue liquefies and flows a bit, hold the "gem" level while it dries again.

Custom Battery Charge Adaptor

Charging the bracelet requires connecting the USB C battery connector/clasp to a LiPo charge board. Many charge boards, like the Adafruit Micro-LiPo Charger for LiPo/LiIon Batteries w/MicroUSB Jack use a JST power jack to connect to the battery, but this won't work for our battery with its custom USB C connector.

To charge our battery with a USB C connector, we will make a JST to USB-C adaptor using the JST connector we cut from the battery earlier and a USB C female breakout, like the Adafruit USB Type C Breakout Board - Downstream Connection. The only pins needed on the the breakout are the power (VBUS) and ground (GND) connections. Simply solder the power (red) and ground (black) JST connector leads to the VBUS and GND pins on the breakout, respectively.

Now, we can charge our modified LiPo battery by connecting it to the USB C to JST adaptor we just built. The adaptor's female JST connector fits the corresponding male connector on the LiPo charger. Now you can hook up 5V power to the LiPo charge board and charge the bracelet battery.

Double the Pixels, Double the Fun

Setting each gem's two LEDs to different hue and brightness values creates color gradients across the gem. The QT Py's CircuitPython code gradually changes the hues with time to display all colors in the spectrum. The code also brightens and fades each LED alternately which make the colors appear to slide from side to side.

CircuitPython Libraries

Be sure to have the latest version of CircuitPython installed on your QT Py. The board ships with CircuitPython ready to go, so unless you've already coded it in some other language, the demo code below will run. If you need to update or re-install CircuitPython, follow these instructions.

The following CircuitPython libraries should be placed in the lib folder on the QT Py for the demo program to work - see this page for more on libraries for the QT Py:

  • neopixel
  • adafruit_pypixelbuf
  • adafruit_bus_device

Save the program below by clicking the link for code.py. Copy the file onto the the QT Py CIRCUITPY drive. The code should run after copying - enjoy watching the colors blend!

Demo Code

# Demo code to generate an alternating color-gradient effect in
# the QT Py LED cuff bracelet LEDs.
import time
import board
import neopixel

# Total number of LEDs on both strips
NUM_PIXELS = 14

pixels = neopixel.NeoPixel(board.MOSI, NUM_PIXELS, pixel_order=neopixel.GRB, auto_write=False, brightness = 0.4
)

def wheel(pos):
    # Input a value 0 to 255 to get a color value.
    # The colours are a transition r - g - b - back to r.
    if pos < 0 or pos > 255:
        return (0, 0, 0)
    if pos < 85:
        return (255 - pos * 3, pos * 3, 0)
    if pos < 170:
        pos -= 85
        return (0, 255 - pos * 3, pos * 3)
    pos -= 170
    return (pos * 3, 0, 255 - pos * 3)
    
# Scales a tuple by a fraction of 255
def scale(tup, frac):
    return tuple((x*frac)//255 for x in tup)

# Sawtooth function with amplitude and period of 255
def sawtooth(x):
    return int(2*(127.5 - abs((x % 255) - 127.5)))

# Hue value at the opposite side of the color wheel
def oppositeHue(x):
    return ((x + 128) % 256)

hueIndex = 0         # determines hue value (0->255)
brightnessIndex = 0  # input to the sawtooth function for determining brightness (0->255)
brightnessSpeed = 3  # bigger value = faster shifts in brightness

while True:
    bright = sawtooth(brightnessIndex)
    
    # get RGB color from wheel function and scale it by the brightness
    mainColor = scale(wheel(hueIndex),bright)
    oppColor = scale(wheel(oppositeHue(hueIndex)), 255 - bright)

    # hue and brightness alternate along each strip
    for i in range(NUM_PIXELS//2):
        pixels[i*2] = mainColor
        pixels[i*2 + 1] = oppColor
    pixels.show()
    
    # increment hue and brightness
    hueIndex = (hueIndex + 1) % 255        
    brightnessIndex = (brightnessIndex + brightnessSpeed) % 255

For more information and additional LED code examples for the QT Py, check out the LED Animations with QT Py Haxpress Learn Guide

This guide was first published on Oct 16, 2020. It was last updated on 2020-10-16 14:35:14 -0400.