Studio Contrechoc

design & textile & technology entries

Monthly Archives: February 2011


When you want your cloths to be interactive you need to do some wiring. Which wires to use? It took me a long time to get the material I wanted. So maybe this comes in useful.

Copper (conductive thread is different)
Wires are copper filaments with isolating material around, plastics. Soldering wires to plugs or the device has to be done careful. Most of the time you need only a fraction of a millimeter of copper to get a good connection! (When I started I needed at least a centimeter 🙂 More visible copper means problems, short cuts and so on.

Electrical wire comes in two varieties: with one kernel, and with many copper filaments inside one plastic coating. The first (one kernel wire) is good to use in the breadboard, the second is better for real life, where there is wear and tear. The one kernel wire seems sturdier, but it breaks easily when bending it for a while.

For smart textiles you don’t need “thick” wire. The currents are small.
First I used “normal” wires, diameter .14 mm2. With these wires the “Connected Garments” are made (by and
Nowadays I use wires with a diameter of .05 mm2. This is more flexible and smaller, also in “visual size”.
Conrad codes: 605860, for blue, the site gives the codes for the other colors if you have this one.

It is good practice (of technicians) to use some color coding. Red for VCC (plus or 5 or 3.3 V), black (white) for GND (Ground, 0V or minus). Pins are connected with colors different from red or black. Use these colors in groups which are related so that you can easily spot which wires belong together.
But that is the normal technological situation. If you are doing “design” you will use wires in accordance with the colors of the design or give the wires and the colors a function in this design.

For my “Lifejacket” I used black for all the wires, although these wires are in the inside. But then don’t you loose track of the VCC and GND? Yes! You have to be very careful. And I connect the black to the colors to have a clue where to start debugging if something is wrongly wired. Of course these colored connections are hidden somewhere in the jacket!

Getting the wires together.
When you have one wire there is no problem at all. But you have two wires a minimum (plus and minus) and most of the time lots of wires running from one corner of your design to the other. Then you get a knot or a bunch of terrible spaghetti if you don’t take care (like me).

How to get these wires in order?
Several solutions: you can buy the wires attached. Or do the ordering yourself.

Buying wires (industrially) glued/molded together.
The glued wires are very handy, only when you want to add a wire later on you get another mess. But of course you think ahead and never make last minute extra’s! (As I do.)
There are also nice gray flat cables. Cut of the number of wires you need and the wires remain nice.
You can also use cables like network cables and get the wires out. Sometimes this is a good solution but these wires are very hard and won’t bend to make a comfortable garment.

Sewing together
Also these glued wires tend to be stiff. (Although you can buy several grades of stiffness.) For the “Lifejacket” and the “Philosophers Vest” I used another technique. I sewed the wires together using a zig zag stitch. You can do this either dense or not so dense. You can even camouflage the colors of the wires by the color of the thread.

Finishing the ends
Having your wires under control you have to solder them to your device. Sometimes you want to be flexible and use little plugs (so you can unplug for instance the battery). Then the connection can be tidied up using shrinking rubber tubes (shrinks when heated). Either in the color of the wires or of your design. These shrinking tubes can also be used over the bunch of wires to tidy them up. The tubes serve as nice connection to the little plugs, but also isolate the wires from each other.

A last tip: collect the pieces of metal you don’t need and cut off from LED’s or resistor. These small pieces of metal can be handy in soldering parts which are close together or to make an improvised PIN connection.


The philosophers vest

Ever wondered what happens when we open up a personality? We think we will enter a world of the most wonderful innermost feelings and thoughts (called “zieleroerselen” in Dutch). But no! We will only see numbers! Numbers, numbers, numbers! What cannot be put in reality by sheer numbers? What escapes the database?  Are we not just text? (Text being just numbers??)

So i made this vest to reflect on numbers being us and us being numbers. The vest will be very helpful in the future remembering all our numbers, pin codes and security numbers, and reminding us of buying milk and getting the children from Kindergarten in time. (Making the sound of a final countdown when we try to forget about these children…)

The felt vest has an inner and an outer layer. The outer layer consists of strips of felt. Here and there the outer layer of the vest opens up and the numbers peep through. Not only numbers, also bits of text, patterns, flows of numbers, half sentences…
My innermost feelings, my protective layer of rationality?

The question posed by this vest is simple: what of us cannot be put into a database? How long can we keep denying that we can copy ourselves inside some computer in the (near) future?

The felt vest is double layered, the felt is hand made and uncut, the felt is fastened together using a happy-locker. For the rest it contains a few double digit displays (in three groups, one big group in front and two smaller at the back),  a handful of chips (14 ATtiny2313’s and one ATmega328). At the moment of writing about ten different number, character or sign patterns are programmed.

digit displays

This is a big thing consisting of three units with digit displays. The digit displays are controlled by a ATTINY2313. The ATTINY2313 are controlled by an ATMEGA328. The chips are connected through the TX RX pins, using UART.

This is the back. Of course you should make a nice PCB of it, but since this is a unique project, i have soldered about 200 wires…. every double unit having 17 wires and the TX RX connections, GND and VCC between the chips.

It looks a lot of wires, but the wiring is kept long between the three units for an important reason, there are only three wires between the big and each of the small units, GND, VCC and UART.

It runs on a nive 2.5 V. In the ATTINY2313 there are patterns programmed, and the ATMEGA328 just sends a CHAR to indicate which unit should respond and the next CHAR is indicating the symbol.

I have added more symbols than only the numbers. Although the expressive value of the digits is limited, you can do more than just display numbers. Some letters are available, but not all. Outlines are nice to do, an outline around the big shape of nine double digits is available.

Several modes of showing numbers and symbols are alternating. The ATMEGA328 gets a RF12 module and will be able to receive commands. It has time to listen, because only once in a while characters are send in UART.

Using a line to indicate for instance sound levels.

In this picture you see the ATMEGA and the ATTINY2313’s on the testPCB.

The actual programming of the different patterns takes a long time, and is facilitated by a ISP connector to the ATMEGA328. For the ATTINY2313, if I want to change anything in their memory, I have to get them all out 😦

And what is the purpose of this all? I’ll start sewing this weekend! For another surprise.


Life jacket

Life jacket…
Normally we use life jackets when drowning from a ship or something. But in normal land based life we don’t even know that we are in the habit of being drowned in a reduced reality. This simplified reality is caused by our laziness to explore possible new views on what we are and what we saw in life.

This jacket is a life saver because it opens up new combinations of things that happened in your life.
This vest gives five sentences, three on the back and two in front. These sentences form the story of your life. Each time you change position the sentences change and you get a new interpretation of your life. Since there are 5 displays with each 10 sentences there are 100,000 interpretations of the wonders (and catastrophes) which happened during your life. I am pretty sure there are some interpretations you never guessed!

If you realize that even this extremely simple combinatory vest gives so many different combinations of situations you get an idea what happens with the number of interpretations you could think of in real life, with bigger stories.
We are mostly stuck in quite a simplified universe of a few feelings and views on our life, relations and friends. We could imagine more!

Once in 10 seconds the interpretation is sent by wireless to those who are listening. The rest of the time, the vest is listening itself to wireless messages, and it puts the messages on the displays to explore even more possibilities of this bizar universe.

The vest is a mesh of cloth. This mesh gives the vest an large amount of natural pockets. These pockets come in handy if you want to hide some electronics and sensors!

There are five LDR’s on the vest looking for changing light.

Some hacking of LCD – boards

Look ma, 5 LCD Plugins on two Jeelabs Ports!!!

Hm (ma) for this I had to hack those beautiful Jeelabs PCB’s. These I2C boards have a fixed address 0x24 and I had to connect 5 LCD’s to one Jeenode.

(If you don’t know the devices see

Since the fun of I2C is that you can connect several devices to the same DATA and CLOCK wires, because these devices can have several addresses it is a bit of a shame the nice Jeelabs PCB’s cannot be changed from the fixed address 0x24.

Well what means “cannot”?? The PORTSLCD lib (specially written for the Jeelabs LCD Plug and open source) can be changed rather simple:

in the PortsLCD.h from Jeelabs:

class LiquidCrystalI2C : public LiquidCrystalBase {
DeviceI2C device;
LiquidCrystalI2C (const PortI2C& p, byte addr =0x24);

This byte addr =0x24 is the hard coded address and can be made a variable, given as a parameter in the declaration.

But what about the board? I first thought I could change the A2 data bit, but that was connected to several lines under the MCP23008, see the board file. Impossible to use this A2.

So I had only two options, the A1 and A0 bit. I have cut a wire on the PCB (as you can see on the image)  and connected A1 to A2 giving the LCD another address. Doing this again for another LCD only connecting both A0 A1 to A0. Then you have three different addresses, good for one J-Port.

Then I had to hack further, because I wanted to have 5 LDR’s connected to the ATmega analog PINS on the Jeenode. But these are taken by the Jeelab – Ports. So I decided to change this. I used the two unused digital PINS ( unused in the Jeenode, the Jeelabs-“Arduino” with wirelss RF12, PB0 and PB1) for the J-Ports i have taken for the 5 LCD’s, instead of the Analog PINS in these J-Ports.

And in doing so, I have enough (in fact 6) free analog PINS for my 5 LDR’s.

Of course you have to add a few lines of code to the Ports lib! These special J-Ports are now called 5 and 6!

class Port {
uint8_t portNum;
inline uint8_t digiPin() const
if ( portNum == 5 ) return 6;//special for LCD jacket
if ( portNum == 6 ) return 7;//special for LCD jacket
return portNum ? portNum + 3 : 18;
inline uint8_t digiPin2() const
if ( portNum == 5 ) return 9;//special for LCD jacket
if ( portNum == 6 ) return 8;//special for LCD jacket
return portNum ? portNum + 13 : 19;
inline uint8_t anaPin() const
{ return portNum - 1; }

My goal is to display lines on the LCD’s form 5 groups. These lines are chosen from the light value read from the LDR’s.

My first guess was that I could get 5 groups of ten lines of chars in the memory. But no! This was too much and strange errors occurred. In fact I check with an AVR project, in which the filling of the memory is indicated. I can get only 8 x 5 lines of around 32 chars into the memory.

(In a dedicated cpp lib.)

What is the purpose of this all????

That must remain a surprise for the moment….

I’ll sew it together this weekend…

PS another thing about the LCD plugs:, the graphical board of Jeelabs has the nice characteristic that you can dim the LED of the backlight with PWM. I thought this would be possible for the LCD plug too, but no……(But I decided to do no more hacking on these PCB’s)

Still I like these boards, but my first goal of gaining time, with regard to making my own version of supported LCD’s, using a Attiny2313 and the TX (so three wires, see last image) was wrecked! There was not much time difference between getting my own version or the Jeelabs version to do what I wanted it to do.

This is one of these LCD boards, having it’s own ATTINY2313. The TX/RX PIN’s can be used for several LCD’s if you alter a first bit the RX of the Attiny is listening for, creating an address.