Introduction: Cyberpunk Wig

Idea created and concept designed for my final project!  Because who doesn't want a wig that can light up and dazzle friends and coworkers?  This wig is just one part of a greater entity and I am excited to finish this costume for portfolio purposes.  Enjoy!

Step 1: Step 1: Materials Needed

Ignore my photograph!  It is only a fraction of what you need.  I get really into making things that I forget to document the beginning. For this project you will need;

Tech;
RGB LED Flexible Strips.  For this project, I used 5 Meters.  This can get pricey fast and you can omit some of these strips to save money.  http://www.aliexpress.com/item/Free-shipping-WS2801-Dream-Color-RGB-SMD-5050-Flexible-LED-Strip-Ribbon-Rope-Light-5Meters-with/613982799.html  For this project I used WS2801 RGB LED Strips  This tutorial may not work the same with a different style of RGB LEDs  - I spent $100 on my lights for this project
Arduino Uno - R3 - available on http://www.adafruit.com/products/50 - $29.95
USB Cable - (if you don't already have this) - http://www.adafruit.com/products/62 - $6.00
Breadboarding Wire - http://www.adafruit.com/products/153 - $4.00
The Arduino Software - http://arduino.cc/en/Main/Software (If you are new like I was, you are going to need this or nothing is going to work!  For veterans, ignore this)
5 V Powersource

Tools;
Soldering iron - http://www.radioshack.com/product/index.jsp?productId=2062738 - $12.99
Standard Rosin-Core Solder - http://www.radioshack.com/product/index.jsp?productId=2062719 - $4.49
Hands Free Soldering Station - http://www.sears.com/shc/s/p_10153_12605_SPM6544190601P?ci_src=184425893&ci_sku=SPM6544190601&sid=IDx20130125xMPALLx028 - $9.99
Insulated 30 gauge wire in the colour of your choice, purchased it at a local hardware store.
Wire Stripper - http://www.radioshack.com/product/index.jsp?productId=17877946 - $6.99
Heat Shrink Tubing or Electrical Tape

Wig Base;
For this project I chose to use the Westley wig from Adra Wigs.  I chose this wig because I have worked with this company's products before and have always been pleased with the fibers.  In addition to the fibers, because the end product will be dreads in the back, I wanted more hair in the front and cropped style in the back so that I could hide the tech in the ponytail of electronic dreads.  http://arda-wigs.com/collections/spanish-brown-050/products/westley - $30.00

Step 2: Step 2: Soldering Leads

First decide how many RGB strips you want/can afford before cutting your strips up into a huge mess.  For this project I chose to do 5 RGB LED strips - 3 @ 20 units and 2 @ 10 units to mix it up a bit, but you can just measure and figure out your own lengths.

For each RGB LED strip you will need 4 leads;
5V which is your power in line,
CK which is the clock,
SD which sends your data
GND or ground. 
I chose to use White, Purple, Blue and Black for my leads so that I could keep them in order.

Get soldering!  I will see you on Step 3!

Step 3: Step 3: Styling of the Wig

You can choose to skip this step!  But if you have never worked with a wig before, you need to know that most wigs, unless styled previously, aren't all that awesome to look at when you get it in the mail.  I love the base of the Westley but it needed some help in the fringe.  Because of how fiber heavy it is in the front I feathered and cut the wig into a much more fashionable look.

In other news, ignore the dumb faces I pull.  It was 2 A.M.

First is right out of the bag and the second two are after I have cut and styled the wig.  Better, no?

Step 4: Step 4: Placement of RGB LEDs

Now that we have the wig styled and the RGB LEDs soldered and ready to go we need to get the placement of the lights!  Again, this is completely open to your own interpretation, you don't have to follow where I placed mine.

I would suggest putting the wig on AND THEN bobby-pinning the anchor points for your LEDs  That way you can be happy with where they are placed on you rather than the head block you are using.  Because you and the head block look different.  Pin and cross the pins in an 'X' fashion so that they will hold your lights tightly.  Cause you are going to be jostling this wig around as you wire it.  As a cautionary note, DO NOT pin on the light itself or the chip.  You can break your unit doing that.  

Step 5: Step 5: Preping Your Leads

Now that we have pinned the LEDs in the desired places, you are going to take a needle with a large enough eye to thread the 30 gauge wire thru.  What you are wanting to achive at this point is a secure and short line from the front of the wig, attached to the LEDs on the surface, to the wiring mess you are going to make on the other side.  I would suggest that the exposed wire on the surface is no longer than 5 mm. 

Also, at this point, you need to anchor where you want your Arduino Uno to live.  I placed mine at the ponytail height and encased the back with leather so that I could be sure that I would have enough places to sew to.

Step 6: Step 6: Reverse Wig

Now because you are going to be doing the rest of the work on the inside of the wig, it is time to turn it inside out on the head block.  This way you can clearly see what you are doing.  Not to mention the fact that you don't have to worry about dropping it or something terrible while you are working on it.  So pin your LEDs and fringe back and then turn the wig inside out and pin it to your head block.  It going to look like a really bizarre snood/toupee/antenna combination. :) 

In other news, don't worry about your wig fibers, they will be fine and with a bit of brushing and Got2B Glued, its going to look great when you are done!

Step 7: Step 7: Sewing Your Leads

Yep!  We are now going to sew, or more appropriately, weave the 30 Gauge wire into the wefts and lace front of the wig.  I chose to do this out of necessity.  The last thing I wanted was for the actor to be able to play with stray wires.  Or worse, have the wires get snapped or broken because they got caught on a finger or bobby pin.  So find a needle that you can tread your 30 gauge wire thru and begin leading the wire down and towards your Arduino Uno.

As a note, you need to divide the leads into power and ground lines to the side that your power source will connect to and Clock and Send to the Digital side of the board.  So be mindful as to where those leads have to go and how you are going to get them there. :)  I would suggest Tailor's chalk to map out your grid.

Step 8: Step 8: Combine Leads

Now that you have this mess of wires near your Arduino Uno, the time has come to strip the wires to the correct length that will allow the leads to weave onto the other side of the wig and plug into to the Arduino.  But before you can successfully plug into the Arudino Uno, you need to take four of those breaboard leads, snip and strip them in half so that you can attach those to your raw leads in the wig.

Now that you have measured, snipped and stripped the wires, I soldered mine just to be sure before covering the raw metal.

(As a reminder, I am simply demonstrating how to do one chain of lights.  They are combined at the ends to become one but you can easily add other independent lights in the same way that you have done the first.  Just make sure the power and ground are connected! )

Step 9: Step 9: Plugging It All In

Almost done!  The hand work is pretty much done.  Which is good, because I was getting a headache from all the soldering smoke.

You can now flip your wig the right way and pull your plugs thru.  At this point you need to plug in your 5V lead into 5V, GRN lead into Ground, CK lead into ~11 and SD into 13  Also, I did circle two other ports and that was just for the extra LED lights that I added.

Also, now is a good time to plug in your 9V power source

Step 10:

Now the first time you turn on your unit, don't be alarmed if nothing turns on or only the first light turns on or they all start freaking out and blinking or going a solid colour.  Its perfectly normal since you have not programed them to know what to do.  So onto the code!

Oh!  In other news to use this code you need to download the LPD8806 library or this isn't going to work  https://github.com/adafruit/LPD8806

#include "LPD8806.h"
#include "SPI.h"

// This is mainly taken from the simple RGB LED strand test and just played around with

/*****************************************************************************/

// Number of RGB LEDs in strand:  You do need to specify how many are in your longest strip
int nLEDs = 20;

// Chose 2 pins for output; can be any valid output pins:
int dataPin  = 11;
int clockPin = 13;


// First parameter is the number of LEDs in the strand.  The LED strips
// are 32 LEDs per meter but you can extend or cut the strip.  Next two
// parameters are SPI data and clock pins:
LPD8806 strip = LPD8806(nLEDs, dataPin, clockPin);

// You can optionally use hardware SPI for faster writes, just leave out
// the data and clock pin parameters.  But this does limit use to very
// specific pins on the Arduino.  For "classic" Arduinos (Uno, Duemilanove,
// etc.), data = pin 11, clock = pin 13.  For Arduino Mega, data = pin 51,
// clock = pin 52.  For 32u4 Breakout Board+ and Teensy, data = pin B2,
// clock = pin B1.  For Leonardo, this can ONLY be done on the ICSP pins.
//LPD8806 strip = LPD8806(nLEDs);

void setup() {
  // Start up the LED strip
  strip.begin();

  // Update the strip, to start they are all 'off'
  strip.show();
}


void loop() {

  // Send a simple pixel chase in...
  colorChase(strip.Color(127, 127, 127), 500); // White
  colorChase(strip.Color(127,   0,   0), 500); // Red
  colorChase(strip.Color(127, 127,   0), 500); // Yellow
  colorChase(strip.Color(  0, 127,   0), 500); // Green
  colorChase(strip.Color(  0, 127, 127), 500); // Cyan
  colorChase(strip.Color(  0,   0, 127), 500); // Blue
  colorChase(strip.Color(127,   0, 127), 500); // Violet

  // Fill the entire strip with...
  colorWipe(strip.Color(127,   0,   0), 50);  // Red
  colorWipe(strip.Color(  0, 127,   0), 50);  // Green
  colorWipe(strip.Color(  0,   0, 127), 50);  // Blue
 
  colorWipe(strip2.Color(127,   0,   0), 50);  // Red
  colorWipe(strip2.Color(  0, 127,   0), 50);  // Green
  colorWipe(strip2.Color(  0,   0, 127), 50);  // Blue

  rainbow(10);
  rainbowCycle(0);  // make it go through the cycle fairly fast
}

void rainbow(uint8_t wait) {
  int i, j;
  
  for (j=0; j < 384; j++) {     // 3 cycles of all 384 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel( (i + j) % 384));
    } 
    strip.show();   // write all the pixels out
    delay(wait);
  }
}

// Slightly different, this one makes the rainbow wheel equally distributed
// along the chain
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;
 
  for (j=0; j < 384 * 5; j++) {     // 5 cycles of all 384 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      // tricky math! we use each pixel as a fraction of the full 384-color wheel
      // (thats the i / strip.numPixels() part)
      // Then add in j which makes the colors go around per pixel
      // the % 384 is to make the wheel cycle around
      strip.setPixelColor(i, Wheel( ((i * 384 / strip.numPixels()) + j) % 384) );
    } 
    strip.show();   // write all the pixels out
    delay(wait);
  }
}

// Fill the dots progressively along the strip.
void colorWipe(uint32_t c, uint8_t wait) {
  int i;

  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

// Chase one dot down the full strip.
void colorChase(uint32_t c, uint8_t wait) {
  int i;

  // Start by turning all pixels off:
  for(i=0; i<strip.numPixels(); i++) strip.setPixelColor(i, 0);

  // Then display one pixel at a time:
  for(i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c); // Set new pixel 'on'
    strip.show();              // Refresh LED states
    strip.setPixelColor(i, 0); // Erase pixel, but don't refresh!
    delay(wait);
  }

  strip.show(); // Refresh to turn off last pixel
}

/* Helper functions */

//Input a value 0 to 384 to get a color value.
//The colours are a transition r - g -b - back to r

uint32_t Wheel(uint16_t WheelPos)
{
  byte r, g, b;
  switch(WheelPos / 128)
  {
    case 0:
      r = 127 - WheelPos % 128;   //Red down
      g = WheelPos % 128;      // Green up
      b = 0;                  //blue off
      break;
    case 1:
      g = 127 - WheelPos % 128;  //green down
      b = WheelPos % 128;      //blue up
      r = 0;                  //red off
      break;
    case 2:
      b = 127 - WheelPos % 128;  //blue down
      r = WheelPos % 128;      //red up
      g = 0;                  //green off
      break;
  }
  return(strip.Color(r,g,b));
}

Yay!  Now it works!  'Tis fancy!  I included this code because from this code you can really make it do a variety of things, just cut what you don't want out!

Step 11: /End

Thank you for reading!  This is my first project using the Arduino Uno board and the RGB LEDs, so if there are errors, pardon me!  However, I learned alot and really enjoyed making this design sketch come to life.  After the basic programing, I added all sorts of different types of dreads and handmade cyber dreads to help make the RGB LEDs not look so out of place.  If you have questions, feel free to ask! :)
Dream It, Draw It, Wear It Contest

Participated in the
Dream It, Draw It, Wear It Contest