Interactive Fashion | Assignment 6

Circuits and Codes

The circuit and the codes are the simplest part for the inflatables. Though used many wires, the circuit itself is intuitive, and the most parts are merely repeating process. Just to connect the motor pump with a resistor, a transistor, and a diode. The code is also straightforward. Something to notice are that the motor pump has no polarity, with the middle pump inflating and the side one deflating.

  

Baking Paper

Cutting the baking paper is the first difficulty in this assignment. After creating the shape in Rhino, and transform the file using “canvasworkspace.brother.com”, I used the vinyl cutter (ScanNCut machine) to cut baking papers. Several problems could happen with the vinyl cutter. The first is when the baking paper is not firmed attached to the paperboard, then the baking paper could probably band in the cutting process. The second is when the paper tape used to attach baking paper is too thick, then the machine could also mess the cutting process up. The third problem happens when too much glue is applied to the baking paper, then baking papers would get wet, and get wrinkled.

  

After failing for several times, I succeeded in using that machine, but some minor problems would still happen from time to time. Then I tried to use the laser cutter, which turns out to be much more promising. After attaching baking paper with the machine using paper tapes, the laser cutter could cut the shape quick and accurate.

  

Sealing the TPU

The heat sealing is the most frustrating step in the whole process. I used iron to heat the two layers of TPU, sealing everywhere except those covered with the baking paper. Two major problems I met all the time are: the TPU are not securely sealed, especially for the small gaps between baking papers; the TPU melt due to the high temperature, leaving holes on it.

    

The second problem was rather easy to solve, I could add another layer of TPU on the hole to seal it. But such practice would also make the inflatable more messy. The first problem is the one I spent most time on. I used the iron for hours trying to seal every corner, but it just does not always work. Later I found that the smaller iron is much better to use compared to the normal size. The smaller one could seal the gaps more accurately.

 

After finishing all four pieces, I found that there is this super machine that could automatically heat seal the TPU within ten seconds. And the result is very perfect, that every corner is sealed, flat and neat. I really look forward to trying this machine in the future.

Final Pieces

I made altogether four pieces of inflatables, three are copies from the essay, one is an original design.

In the process, several lessons are learned. First, don’t make the margins of the baking paper too thin, if so air might not be able to go through, thus the rest of the piece would not inflate. Second, leave a rather wide platform to place to valve, so that the little iron circle would not block your way sealing the TPU. Third, never stay too long at the same place when ironing, the TPU would probably melt.

The first piece worked for a while, and it leaked afterwards. The gaps between baking papers are too thin, so that air cannot go through easily.

 

The second piece was a complete failure, everywhere of the TPU leaked, I sealed again and again, but not solving the problem so much. Even with paper tapes to seal the margin, the piece still does not function fully.

 

The third piece was the most successful one. It could inflate as designed into a 3D tetrahedron. I leave every gap and margin big enough so that it worked well. With the smaller iron, the sealing process was also much smoother.

 

The fourth piece is my own design. I did not really have a clear pattern in my mind when drawing the shape on Rhino. After drawing so many lines, I decided to make a “star”. I also tried to explore the different directions of banding, by sealing the piece using different sides, three poles were ironed in front, and the other three were ironed at back. But the final result does not sure a clear pattern of inflating in different directions.

 

The overall making process of these inflatables are not very pleasing, with so many problems in each step. But I think with the laser cutter and the bread-baking like machine, the whole process should be much easy and more efficient.

Interactive Fashion | New Bodies

Drowning

Concept & Design

Yasmin, Rainee and I worked together for this project of New Bodies. We initiated the design with the ocean living creature, fish. Although human are quite familiar with fish, and are being exposed to this creature from time to time, there is actually huge gap between human and fish. We have different organs and different living habits. When thinking of fish, people would relate to the mystery ocean environment. Indeed, there are still so much we do not know about fish, and their habits. Therefore, we tend to explore and extend the relationship between human and fish through creating new bodies for human beings that alters senses into the water-living creature style.

” ‘Drowning’ is a bio-mimic textile of deep-ocean creatures. We choose to alter a shared body part of both human and fish – the spine, to create empathy between us and ocean creatures who might be suffering from plastic and oil pollutions.

We chose to use metal wire to create the structure net for the wearable ‘spine’, and use reflective textiles to create fish scale along the structure. When moving, the lighting will alter our perception of its navigation, while the person inside it feeling trapped – a beauty prison.” —- Rainee

See more detailed design process through Rainee’s Post.

Optic Fibers

In our initial plan, we wanted to use optic fiber around the shoulder. One end of the optic fiber is on the back, connected with the light sauce, the fiber would extend from the back, go through the shoulder, and end at the chest position. With the special kind of optic fiber that could show light from all its body instead of only two ends, the light sauce at the back would light up our whole piece, with varying colors. 

The main reason we abandoned this plan was because we failed to find a kind of light that is bright enough to “power up” the optic fiber. I first tried the normal LED bulb for Arduino, which is not bright enough to light up the fiber. I then used the NeoPixel LED strip, the LED on that strip was brighter, but was also not bright enough. the strip would only light up around 5 to 10 centimeters of the fiber. The only light sauce strong enough was my phone flashlight, which would light up meters of the fiber. But the phone flashlight could neither change colors nor easily connected to the Arduino.

 

Therefore, we changed our design to not include the optic fiber. Hope that with stronger light sauce, we could play with the optic fiber in the future.

Circuits & Codes

After failing to take advantage of the optic fibers, we then turned to NeoPixel LED Strip. With the initial intention to have the light changes brightness corresponding to the surrounding sound, we used the microphone sound sensor as input.

 

The circuit itself is pretty simple, just to connect both NeoPixel strip and the sound sensor directly to the Arduino Uno, the sound sensor has one analog input and the LED strip has one output. I first tried to use Lilypad instead of Uno board for building the circuit, though Lilypad is much smaller than Uno, the sensor and LED ports are all in line with Uno ports, so using Uno avoids the mess of having too many jumpers and wires to connect the sensor.

At first, we did not decide on whether to use the sound sensor or not, so the Arduino code for the LED strip was simple, I just used the example code called “rainbow” from the FastLED_NeoPixel library. As we wanted the color to be blue and purple, I changed the color range from all colors to a specific range of blue-related colors.

void rainbow(unsigned long wait) {
  for (unsigned long firstPixelHue = 30000; firstPixelHue < 50000; firstPixelHue += 20) {
    for (unsigned int i = 0; i < strip.numPixels(); i++) {
      unsigned long pixelHue=firstPixelHue+(i*10000UL/strip.numPixels());
      strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));}
    strip.show();
    delay(wait);}

The most difficult part of the circuit was the microphone sound sensor. The sensor was designed for both 5V and 3.3V, in order to keep our circuit tide, I chose to use the 3.3V for sound sensor, so that I need no breadboards or other wires to share the 5V input for both the LED and the sensor. However, I found that the analog input Varys in a smaller range when plugged with 3.3V instead of 5V, meaning that the sensor is less sensitive to the changes in sound loudness.

One other problem I found, for both 5V and 3.3V input, was that the analog input has very huge jumps given any sound. When there is no sound, the sensor would output a constant value of 97, (110 when using 5V). However, when there is sound, the sensor would normally have higher analog output, such that the louder the sound, the bigger the number. But the sensor also keeps having abnormal outputs that are around 97, might be either higher or lower. Therefore, when having loud sound, the sensor would not return a constant high output, but keeps jump between the baseline and the high value. So I cannot directly map the sensor value into the LED brightness, which would cause the LED to blink so rapidly, showing no clear reaction to the sound.

To solve this problem, I changed the code so that the LED would not dim or shine directly to the sensor value. Instead, I chose three ranges of value, so that when the sensor value did not change a lot (in the first range), the LED would dim a little bit, when the sensor output is relatively high (in the. second range), the LED brights up a little bit, but would not exceed a certain upper limit, if already exceeds, it would dim back to this limit. When sensor has extreme values (in the third range), the LED would also brights up a little bit, but all the way to the brightest. In this way, the LED strip would not blink from no light to the brightest, instead it would gradually change the brightness no matter what sensor output is. Also with the unstable sensor value, the LED would keep varying its brightness, which looks more dynamic than having constant brightness.

(See the end of this post for detailed code)

  

Limitations & Further improvements

Regarding the circuits part, there are actually several points to improve. Besides the varying output, the microphone sound sensor was also not sensitive to sounds from a distance. Only when the sound sauce is very close to the microphone can the sensor return informative values. So we had to play the music very close to the sensor when expecting the designed interaction between sound and light. To further improve the circuit, it might be a better idea to use some other sound sensors instead of this microphone one.

Another improvement is to fix the circuit onto our “cloth”. As now the Arduino board and the sensor were not fixed at any certain place, but and be moved around a little bit. We could sew the whole circuit onto some fabric that is attached to the project piece, so that the whole circuit would be more stable, and maybe hide into the piece.

I also met the problem that the Arduino board would be disconnected from time to time. I highly suspect that was because the NeoPixel strip used too much power from the Arduino board, because such situation would not happen when the strip was not connected. Therefore, it would be better to have an individual power sauce for the LED strip, instead of having 5V power directly from the Arduino board.

Other improvements besides the circuits are to build a larger piece of “body”. Instead of having only the back, we could have covered the whole body, and maybe having face or head covered. For the NeoPixel LED strip, we could have a plastic cover on it so that each LED light would not be so apparent, the plastic cover could blur the light so each bulb would not have straight light. It is also exciting to explore about how to make our project move or rotate, making it not only a piece of cloth, but more dynamic like a living creature.

#include <FastLED_NeoPixel.h>
#define SENSOR_PIN A0
#define DATA_PIN 2
#define NUM_LEDS 71

// LED brightness, 0 (min) to 255 (max)
int BRIGHTNESS = 20;
long firstPixelHue = 30000;
int INCREASE = 1;

CRGB leds[NUM_LEDS];
FastLED_NeoPixel_Variant strip(leds, NUM_LEDS);

void setup() {
  pinMode(SENSOR_PIN, INPUT);
  pinMode(DATA_PIN, OUTPUT);
  strip.begin(FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS));
  strip.setBrightness(BRIGHTNESS);
  Serial.begin(9600);
}

void loop() {

  if ((firstPixelHue < 30000) || (firstPixelHue > 50000)) {
    INCREASE = INCREASE * -1;
  }

  firstPixelHue = firstPixelHue + INCREASE * 20;
  
    for (unsigned int i = 0; i < strip.numPixels(); i++) {
      unsigned long pixelHue = firstPixelHue + (i * 10000UL / strip.numPixels()); // vary LED hue based on position
      strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));  // assign color, using gamma curve for a more natural look
    }

  int sensorValue = analogRead(SENSOR_PIN);
  sensorValue = abs(sensorValue - 98);
  
  if (sensorValue < 20 ) {
    
    if (BRIGHTNESS > 0){
      BRIGHTNESS -=10;
    } 
    else {
      BRIGHTNESS = 0;
    }
  }

  else if (sensorValue < 60) {
    if (BRIGHTNESS < 125){
      BRIGHTNESS +=5;
    } 
    if (BRIGHTNESS > 125){
      BRIGHTNESS -=5;
    }
  }

  else if (sensorValue < 100) {
    if (BRIGHTNESS < 255){
      BRIGHTNESS +=5;
    } 
  }

  else {
    if (BRIGHTNESS < 255){
      BRIGHTNESS +=5;
    } 
  }

  Serial.println(sensorValue);
  strip.setBrightness(BRIGHTNESS);
  strip.show();
  delay(25);
  }

Interactive Fashion | Assignment 5

In-class Recitation

In this recitation, Sylvia and I explored creating textiles using unconventional materials around the campus. I collected some wood fiber from the grass lawn, some construction materials, and a small piece of the wallpaper. Sylvia brought some plant leaves, both green and yellow ones.

  

One major problem we met was that the materials we collected are mostly small pieces and relatively hard to band or reshape. Therefore, we could not easily combine or intertwine these materials together to create textiles. Therefore, we tried to make use of iron wires to form a basic structure. We made a simple grid with several pieces of wires, and hot glued them together. We only glued the outer joints of the wires but not the cross points in the middle, so that the whole grid were not strongly fixed. Then, we attached those materials we found onto the base structure, also using hot glue. We did not have enough time nor enough pieces to cover the whole base, which was also because we made too big a grid.

The final outcome actually looks better than I had imagined, the different colors matched together without much conflict. But just as Professor recommended that we could make the textile more flexible than such hard platform we had. We could glue less joints, or to joint different wires with less secure means, so that the whole textile could appear more fabric like rather than this tablet.