Introduction: Light for Life: Glowing Button Cycling Jacket

Not everyone wants to look like an athlete while cycling to work or school. This cycling-jacket, made of hemp and wool, is equipped with lots of shining bright LEDs. It looks just as good during the day as it does during the night. Embedding the Arduino Lilypad electronics in the jacket, makes it at practical as it is nice to look at!

Step 1: Gather Stuff for the Project

This project includes working with textile and a bit of electronics.
To make the jacket I used the following tools:

- sewing machine
- sewing needles
- seam ripper
- enough cloth to make a jacket
- tape measure
- pins
- sewing thread in different colours
- 16 semitransparent buttons

electric tools/equipment:
- multimeter
- conductive sewing thread
- Lilypad Arduino
- 2 Lilypad pushbuttons
- Lilypad batterypack
- 6 red 3mm LED
- 6 orange 3mm LED
- 2 white 3mm LED
- puffy fabric paint

Step 2: Start Our Own Sewing Project!

The project starts pretty simple; acquire a jacket you like, I am using a sporty running-jacket. You can either use the jacket as it is, or you can take it apart with a seam ripper. When the jacket is taken apart, quickly iron out the parts, especially the seams, to make it easier to transfer the pattern to the textile. For my jacket I use 3 different textiles, Hemp Denim (500gsm), Hemp canvas (300gsm) and wool jersey (200gsm). Denim for the front and back, canvas for arms and wool underneath the arms.

Open up seams and lay the parts on your textile. Outline the parts with tailors chalk or a coloured pencil, and cut out the pattern with a pair of sharp scissors. Make sure to lay the textile in double layers, to get two mirrored identical parts (for the ones that are identical).

Step 3: Sewing the Jacket

For complete instructions on how to assemble and sew a piece of clothing, I will recommend another tutorial on this site. This is on of my first sewing projects, and I have limited skills. I have assembled the jacket inside out. I have mostly used a jeans seam, with a strong polyester thread. This makes it a solid piece of clothing.

The original jacket, being a running-jacket, has a thin netting fabric underneath both arms to keeps your body cooler under sweaty conditions. I have replaced this with a comfortable thin wool fabric. When sewing this thin wool together with a thick hemp denim, make sure not to stretch the cloth. I was forced to undo the seams more than once, and I assure you, opening up a seam on thin wool is a bit of a task!

Step 4: Exploring With Electronics

The jacket is now sewn together, zipper not included, and it is time to start planning the electronics, which basically makes the jacket one large ciruit-board. I advise you to draw a simple semantics for the placement of electric components on your jacket. I have decided to place 12 coloured lights on the back, in pairs of 3, and 2 white lights on the front. A push-button on each arm to activate the lights. It is important to remember that the conductive thread, usually made of polyester and stainless steel, does have a lot of resistance. I measured 14 ohms pr. 30cm (or 1' foot) on my 4-ply thead, as opposed to standard 1mm wire, which is less than 0.5 ohm. The Arduino Lilypad carries a 5v output with 40mA. Placing the LEDs at right distance from the mainboard, you eliminate the need for resistors. Here is a simple LED calculator

Step 5: Make Your Own Shining Bright Buttons

The standard 3mm LEDs come equipped with an epoxy lens to direct the light in one way. With some sandpaper, rub down the lens, so you are left with only the metal core. Caution! if you look closely, you will se that there is a small metal wire right above the light source, do not rub this away! At a local store I found some simple semitransparent buttons, 14 for the lights and 2 for the pushbuttons. Using a mounted or handheld powertool, make a small hole where it makes most sense to place the LED. My hole measures 6mm in diameter, 2mm deep. I have placed the hole below the button-holes. Bending the legs on the LED so they are pointing in the same direction as the light, the legs are put where the button-holes are. To make it look better, cut two small grooves from the LED hole to the button-holes, one for each leg. The reason for this is that you will later sew the buttons to the jacket with conductive thread. The conductive thread will connect with the led LED legs, + and -, and make them shine!
Remember: on normal LED lights, the longest leg is +. place all the LEDs the same way, and it will be easier for you!

Step 6: Make Your Own Interactive Jacket

With all the LED buttons ready and the schematics at hand, it is time to start sewing with conductive thread. The 4-ply conductive thread is placed in the bottom thread, with a cotton or polyester thread on top of the sewing machine. I have measured up all the lengths, with approximately 20cm excess on each end. I have decided to place the mainboard and battery at the inside on the front of my jacket.

All the lights at the back of the jacket are in pairs of three. This means that each section has to have 4 connections, one for each light(+), and a ground(-). Make sure no conductive thread is overlapping without placing something in between. This is where the ground(-) for each button have to overlap the other threads. This for my part is the most time consuming, but keep in mind, this is where you can experiment with ornaments and coloured threads!

When all the theads are in place, it is time to start sewing the buttons together. Caution: when sewing the button, + and -, make sure they don't touch each other, this will cause a short. With a small needle, I sew each thread 3 times, making sure there is a firm connection with the LED legs. Do the same with the pushputtons, placed on each arm. On top of the pushbuttons I have simply sewn a button on top, to make it look better, and making it a larger button. As well as tying a knot to fasten the button, use a soldering-iron to melt the end thread to its self. This reduces risk of the two threads touching and creating a short!

Step 7: Connecting the Arduino

In my project I have linked up all the lights to an Arduino Lilypad prototyping board. This is a small round circuit-board that you can connect to any USB, and enables you to create an infinite number of light sequences and fuctions. It is reasonably simple to use, though some programming needed. Check out the Arduino homepage for more info and where to buy.

It is also possible to just connect it all to a simple battery. In fact, this would be a whole lot easier. I want my lights to act as turning signals, so I have used the Arduino.

Step 8: More on Connecting the Bits and Pieces

To make it easier(or more difficult), I have soldiered all the electronics, the Arduino and its 5v battery, to a copper circuit-board. The circuit-board has a connector soldiered to it. The opposite connector is placed on the jacket, with each thread connected on a seperate pin. The connector is a 34-pin floppy connector I found in an old computer, and is perfect for my project.

It is also possible to sew the Arduino Lilypad and its batterypack directly to jacket. The board should be waterproof, are we to believe the creator Leah Buechley. Check out her webpage for more info.

All the ground(-) theads are put together. Remember where you place the - on the connector, as it has to be placed at the same place on Arduino board. As the Arduino Lilypad only has 14 seperate programmable connections, I have connected the light on the front of the jacket to the + on the battery. The 12 light and the 2 pushbuttons are put on the programmable connections.

On the programming part, I have basically borrowed Leah Buechley's code for her cycling-jacket, and given some more fancy light sequences, as I am very novice in Arduino programming. At the bottom of this page i have pasted in my code. Check out Leah's homepage for more detailed info on how to connect the electronic components together, particularly her jacket!

To insulate the conductive thread is advisable. This helps the threads touching eachother. Paint all the threads with puffy textile paint.

int BL1 = 10;
int BL2 = 9;
int BL3 = 8;
int TL1 = 6;
int TL2 = 5;
int TL3 = 4;

int BR1 = 11;
int BR2 = 12;
int BR3 = 13;
int TR3 = 3;
int TR2 = 2;
int TR1 = 1;

int leftSwitch = 7;
int rightSwitch = 0;

int x, y;
int mode = 0;
int DAY = 0;
int NIGHT = 1;

int d;

void setup() // run once, when the sketch starts
{
d = 100;

pinMode(BL1, OUTPUT);
pinMode(BL2, OUTPUT);
pinMode(BL3, OUTPUT);
pinMode(TL1, OUTPUT);
pinMode(TL2, OUTPUT);
pinMode(TL3, OUTPUT);

pinMode(leftSwitch, INPUT);
digitalWrite(leftSwitch, HIGH);
pinMode(rightSwitch, INPUT);
digitalWrite(rightSwitch, HIGH);

pinMode(TR1, OUTPUT);
pinMode(TR2, OUTPUT);
pinMode(TR3, OUTPUT);
pinMode(BR1, OUTPUT);
pinMode(BR2, OUTPUT);
pinMode(BR3, OUTPUT);

}

void loop() // run over and over again
{
checkLeft();
checkRight();
if (mode == NIGHT)
night();
else
day();
}

void checkLeft()
{
if (digitalRead(leftSwitch) == LOW)
{

while (digitalRead(leftSwitch) == LOW)
{
if (digitalRead(rightSwitch) == LOW)
{
while (digitalRead(rightSwitch) == LOW | digitalRead(leftSwitch) == LOW);
mode = 1-mode;

return;
}
}
leftTurn();
}
}

void checkRight()
{
if (digitalRead(rightSwitch) == LOW)
{

while (digitalRead(rightSwitch) == LOW)
{
if (digitalRead(leftSwitch) == LOW)
{
while (digitalRead(leftSwitch) == LOW | digitalRead(rightSwitch) == LOW);
mode = 1-mode;

return;
}
}
rightTurn();
}
}

void leftTurn()
{
for (x=0;x<10;x++)
{
digitalWrite(TL1, HIGH);
digitalWrite(BL1, LOW);
for(y=0;y<10;y++)
{
delay(30);
if (digitalRead(leftSwitch) == LOW)
{
while (digitalRead(leftSwitch) == LOW);
digitalWrite(TL1, LOW);
digitalWrite(BL1, LOW);
return;
}
}
digitalWrite(TL1, LOW);
digitalWrite(BL1, HIGH);
for(y=0;y<10;y++)
{
delay(30);
if (digitalRead(leftSwitch) == LOW)
{
while (digitalRead(leftSwitch) == LOW);
digitalWrite(TL1, LOW);
digitalWrite(BL1, LOW);
return;
}
}
digitalWrite(BL1, LOW);
}
}

void rightTurn()
{
for (x=0;x<10;x++)
{
digitalWrite(TR1, HIGH);
delay(d);
digitalWrite(TR2, HIGH);
delay(d);
digitalWrite(TR3, HIGH);
delay(d);
digitalWrite(BR1, LOW);
delay(50);
digitalWrite(BR2, LOW);
delay(50);
digitalWrite(BR3, LOW);
delay(50);
digitalWrite(TL1, LOW);
digitalWrite(BL1, LOW);
for(y=0;y<10;y++)
{
delay(30);
if (digitalRead(rightSwitch) == LOW)
{
while (digitalRead(rightSwitch) == LOW);
digitalWrite(TR1, LOW);
delay(d);
digitalWrite(TR2, LOW);
delay(d);
digitalWrite(TR3, LOW);
delay(d);
digitalWrite(BR1, LOW);
delay(d);
digitalWrite(BR2, LOW);
delay(d);
digitalWrite(BR3, LOW);
delay(d);
return;
}
}
digitalWrite(TR1, LOW);
delay(d);
digitalWrite(TR2, LOW);
delay(d);
digitalWrite(TR3, LOW);
delay(d);
digitalWrite(BR1, HIGH);
delay(d);
digitalWrite(BR2, HIGH);
delay(d);
digitalWrite(BR3, HIGH);
delay(d);
for(y=0;y<10;y++)
{
delay(30);
if (digitalRead(rightSwitch) == LOW)
{
while (digitalRead(rightSwitch) == LOW);
digitalWrite(TR1, LOW);
delay(d);
digitalWrite(TR2, LOW);
delay(d);
digitalWrite(TR3, LOW);
delay(d);
digitalWrite(BR1, LOW);
delay(d);
digitalWrite(BR2, LOW);
delay(d);
digitalWrite(BR3, LOW);
delay(d);
return;
}
}
//digitalWrite(BR1, LOW);
digitalWrite(TR1, LOW);
digitalWrite(TR2, LOW);
digitalWrite(TR3, LOW);
digitalWrite(BR1, LOW);
digitalWrite(BR2, LOW);
digitalWrite(BR3, LOW);
}
}

void night()
{

digitalWrite(TR1, HIGH);
digitalWrite(TR2, HIGH);
digitalWrite(TR3, HIGH);
digitalWrite(BR1, HIGH);
digitalWrite(BR2, HIGH);
digitalWrite(BR3, HIGH);
digitalWrite(TL1, HIGH);
digitalWrite(TL2, HIGH);
digitalWrite(TL3, HIGH);
digitalWrite(BL1, HIGH);
digitalWrite(BL2, HIGH);
digitalWrite(BL3, HIGH);

}

void day()
{

digitalWrite(TL1, HIGH);
digitalWrite(TR1, HIGH);

digitalWrite(BR1, HIGH);
digitalWrite(BL1, HIGH);
}

Step 9: And There Was Light!

And there was light! The jacket works well, and my mother is now a whole lot safer cycling at dark. And mum, if you read this, remember to wear a helmet!

Get the LED Out! Contest

Runner Up in the
Get the LED Out! Contest

Get the LED Out! Contest

Participated in the
Get the LED Out! Contest

Mother's Day Contest

Participated in the
Mother's Day Contest