JWST Touch Sensitive Light Up Costume

by kev_creates in Circuits > Wearables

924 Views, 5 Favorites, 0 Comments

JWST Touch Sensitive Light Up Costume

kevincostumespaceshoot11062022wildecompany9435.jpg
kevincostumespaceshoot11062022wildecompany9408 (1).jpg
kevincostumespaceshoot11062022wildecompany9393.jpg
kevincostumespaceshoot11062022wildecompany9420.jpg

Howdy! This instructable covers the making of my Halloween Costume of the James Webb Space Telescope (JWST).

I came to the idea for this costume after getting some conductive fabric sensors and staring at them for many months without doing anything. One evening after looking at the latest captures from the JWST, it clicked that I too could be in search of exoplanets, and my mission to make an interactive JWST costume had begun.

Just like the reflectors on the real JWST, a signal (someone's hand) would hit the hexagons on a golden skirt, and that signal would travel to a receiver on the top part of my body and react with light! It combined so many things– space nerdery, reactivity, simple interfaces, light, and a longing to wear a cute shiny skirt. 

I welcome feedback, questions, and comments! I hope you enjoy reading and that this inspires and informs 💙


High quality photos taken & edited by my dear friend Amy at Wilde Company.

Supplies

PXL_20221007_212637281.MP.jpg
PXL_20221022_160053308.MP.jpg

Supplies

Gold Skirt

Black Shirt 

Black Leggings

White Shirt

Woven Conductive Fabric x 6

Flora Wearable Circuit Board 

Flora Neopixels x 6

Sewable Snaps x 21 (one sheet has 24)

Stainless Medium Conductive Thread, 3 ply

Fabric Fusion Adhesive

White Felt

Hot Glue

Solder

Scrap Insulated Wire

Scrap Cardboard for stencils

Large Bandaids for connecting self to ground wire


Accessories

White Platform Shoes

JWST Images

White Sheet (for cape) 

Version Numbers

Copious amounts of glitter


Tools

Scissors (silver thread dulls scissors at a quick clip, use your least favorite pair)

Hand Sewing Needles

Hot Glue Gun

Safety Pins 

Wiring Multitool (used stripping and cutting function)

Soldering Iron

Multimeter (used for continuity testing)

Laptop with Arduino IDE

Prototyping

PXL_20221008_184116670.MP.jpg
PXL_20221012_040402215.MP.jpg

Before gluing or soldering anything, I prototyped with a bunch of banana clips. Originally I was taking inspiration from Capacitive Touch with Conductive Fabric & Flora and had a resistor for each conductive hexagon. Luckily, right before beginning to glue, I found the Plush Game Controller tutorial, which features a route for detecting changes in capacitance without a round trip and without a resistor! The complexity of the skirt was cut in half.

I soldered snaps onto my Flora circuit board for easy testing and removal. This proved to be one of the most helpful techniques I took from this build.

After adding the snaps I flashed a quick test script to use for the majority of the build:


#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#include <CapPin.h>
#define THRESHOLD 200

int ledPin = 7;

long total;

CapPin capPin = CapPin(0);

void setup() {
  pinMode(ledPin, OUTPUT);     
}

void loop() {
  // print out the sensor value
  total = capPin.readPin(2000);

  // if the value is greater than the threshold
  if (total > THRESHOLD) {
    // turn the LED on
    digitalWrite(ledPin, HIGH);
  }
  // if it's lower than the threshold
  else {
    // turn the LED off
    digitalWrite(ledPin, LOW);
  }

  delay(10);
}

Tip: When working with a new sensor, set up a logger and see how it works with different materials and situations! That's how I built confidence that the skirt materials would work, and arrived at a touch threshold of 200.



Skirt Assembly

PXL_20221014_140544386.MP~2.jpg
PXL_20221018_051613947.MP.jpg

I created a stencil of a (regular) hexagon to match the JWST's mirrors by using a very professional trick- taping tracing paper to an old computer screen and using that to create a cardboard template. The cardboard template helped measure placement and eventually was used in the chest piece. Be mindful that the conductive thread and fabric dull scissors quickly.

Once I had a working prototype with the new circuit, I got to gluing! This was done by laying the skirt fanned out flat on the ground. I reused my hexagon stencil to space them equidistant apart from each other and the waist. I thoroughly covered each hexagon with fabric fusion, checking and gluing down loose edges as it dried. The real JWST has 18 hexagons much more closely together, but to get mine out on schedule (😉) and with a low risk of shorts, I stuck with 6.

From here, I began to sew! The first run at sewing was to run each of the newly glued hexagons to a corresponding snap on the waistband (seen in purple). To ensure a strong connection, I sewed up to the snap and then back down to each hexagon, tracing the previous stitch. After each hexagon, I tested each sensor by attaching the newly sewn snap to the corresponding snap on pin 0 on my Flora. I also put a finger on a ground snap on the board. If the connection worked, the onboard LED lit up each time I hit the hexagon. MAGIC ✨

Shirt (Dis)assembly

PXL_20221016_031556254.MP.jpg
DressCodeOctober2022-AllPhotos-361.jpg
PXL_20221022_195703251.MP.jpg
IMG_20221030_182315.jpg
PXL_20221103_011852496.MP.jpg

This is where everything went wrong many lessons were learned. The shirt had many responsibilities:

  1. Connecting the skirt sensors with the Flora
  2. Holding the lights & connecting them to the Flora
  3. Holding the Flora and its battery pack
  4. Connecting the ground to my body
  5. Keeping every other pin from touching my body
  6. Looking fabulous

I switched to the 2-ply thread, having struggled to rethread the needle using 3 ply. Lesson: 2-ply thread is not strong enough for clothing applications. The 2-ply thread broke so much– by the end of the build I had replaced every 2-ply stitch with 3-ply.

I used an embroidery hoop to hold the collar and make it easier to sew. Lesson: Sewing a fabric while stretched can lead to slack in the conductive thread, which can lead to shorts. The collar had so many shorts on its first use I abandoned the design altogether and cut off the top of the shirt. This led to a *happy little accident* of the final design, a strapless top look with a pendant to hold the lights. The cardboard hexagon would get its final use!

After I sewed & glued a functioning pendant, I put everything together and had the first fully functional version of the costume. But, the whole front sagged. Lesson: Batteries are heavy, and fabric tape cannot take much stress. With the help of my dear friend Ash and their quick stitching skills, the top of the shirt was permanently and securely affixed in place.

So much trial and error later, I had a functioning costume!

Code

Here's where I landed with the code:

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#include <CapPin.h>

#define NUMBER_OF_HEX 6
#define THRESHOLD 200
#define RESTING_BRIGHTNESS 0.15

Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, 1, NEO_GRB + NEO_KHZ800);

long total;
uint32_t color;

int red = random(255);
int green = random(255);
int blue = random(255);

CapPin capPin[] = { 
   CapPin(0),
   CapPin(2), 
   CapPin(3), 
   CapPin(10),
   CapPin(9),
   CapPin(6)
};   


bool pressed[NUMBER_OF_HEX];
int count = 0;

void setup()                    
{
   strip.begin();
   strip.show(); // Initialize all pixels to 'off'
}

void loop()                    
{
    for(int i=0; i < NUMBER_OF_HEX; i++){
      total = capPin[i].readPin(2000); 
      
      if (total > THRESHOLD) {
        if (!pressed[i]) {
          red = random(255);
          green = random(255);
          blue = random(255);

          pressed[i] = true;
        }


        color = strip.Color(red,green,blue);
      } else {
        pressed[i] = false;
        // Dim when no longer pressed
        color = strip.Color(red * RESTING_BRIGHTNESS, green * RESTING_BRIGHTNESS, blue * RESTING_BRIGHTNESS);
      }
      
      strip.setPixelColor(i, color);
      strip.show();
    };                               
    delay(10);    // arbitrary delay to limit data to serial port 
}


This was an enjoyable bit of code to arrive at. The basic gist of it is: brighten the matching pendant pixel (i.e., front left hexagon pressed, bottom left pixel lights up) and change the color of all pixels. It took a little prodding to learn how to store a color value and that the color should only change when the hexagon is newly pressed.

Makeup and Finishing

IMG_20221126_152242_625.jpg
PXL_20221101_000347303.PORTRAIT.jpg
kevincostumespaceshoot11062022wildecompany9425.jpg
kevincostumespaceshoot11062022wildecompany9404.jpg

To make my satellite self reflect the power vested in me, I printed logos for the three participating space agencies: NASA, CSA, and ESA. I affixed them using hot glue. Be mindful that many LEDs do not take well to hot glue! I also hard-wired the lights, battery, and pendant as a single unit to make it easier to take on and off.

The JWST doesn't function properly without a solid sun shield, so I cut a cape from an old sheet. After a few different trials with tying it around my neck (using a slipknot and ensuring the neck strap is rippable from the cape), I landed on affixing it to the shoulders of the shirt. I added gold ties to complete the look.

For makeup, I wanted to look like I had stared into the soul of the universe for a bit too long. Layering black, purple, and blue eyeshadow and glitter in copious amounts did the trick.

And finally, I wanted to (compactly) recreate the experience the JWST team has when they collect new imagery, so I printed a handful of JWST captures to hand to folks after interacting with my costume.

Once I had my platform shoes on, I was ready to take off! To seek out new life and new civ... oh wait, that's a different costume.