JWST Touch Sensitive Light Up Costume
by kev_creates in Circuits > Wearables
1025 Views, 6 Favorites, 0 Comments
JWST Touch Sensitive Light Up Costume
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
Supplies
Black Shirt
Black Leggings
White Shirt
Flora Neopixels x 6
Sewable Snaps x 21 (one sheet has 24)
Stainless Medium Conductive Thread, 3 ply
White Felt
Hot Glue
Solder
Scrap Insulated Wire
Scrap Cardboard for stencils
Large Bandaids for connecting self to ground wire
Accessories
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)
Hot Glue Gun
Safety Pins
Wiring Multitool (used stripping and cutting function)
Soldering Iron
Multimeter (used for continuity testing)
Laptop with Arduino IDE
Prototyping
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
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
This is where everything went wrong many lessons were learned. The shirt had many responsibilities:
- Connecting the skirt sensors with the Flora
- Holding the lights & connecting them to the Flora
- Holding the Flora and its battery pack
- Connecting the ground to my body
- Keeping every other pin from touching my body
- 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
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.