12. SKIN ELECTRONICS#

Cancer´s aesthetics & sexuality#

Pictures took from Ana Ono

“I talk to my little niece, she wanted to know why I have cancer, what I felt when I found out, if I have cried, If I still have boobs, if I can wear a bikini, if i can become a mother… I told her about the m* fck cells that reproduce out of control, how sad I felt and how good I´m today, that I still have my teets withot neeples, that I can be mom but I can’t breastfeed and that I just bought some strapless bikinis and I will rock on them.”

Extract from Olaya Casado from her blog Cancer a los 30

Resilience is the perfect word to describe women that had went through any kind of cancer. Breast cancer in particular has physical and psychological consequences that are difficult to confront. It changes the relationship with your body, your selfsteme and directly afect your sexynes and sexual desire. The scars that breast cancer leaves should become a sign of how strong all these women are and how they defeat dead, something to be proud of, with this idea as inspiration, I decided to follow the movement of cool protesis and take it to a very sensitive but powerful world, the world of women who beat breast cancer.

In the picture above we can see how woman around the world and in different situations are reconciling themselves with their body through different expresions as tattoos and outstanding protesis. There are also happening some revindication movements as the Runway in NY runned by ANA ONO brand and communication is helping as we can se in the add below.

Runway in NY

Add

Breast prosthesis#

The material of the majority of protesis is silicone, depending on the result the density and colors vary but is the closest material for the breast texture.

Pictures took from AMOENA

I want to use a material good for skin and good for the environment, and while I was looking for this, we started experimenting with Alginate in the Lab and now I´m completely in love with the material.

For furder information on Alginate you can go to the Third Part from my module BIOFABRICATING DIES AND MATERIALS

Prosthesis experimentation#

While planning the proyect I came up with two ideas:

  1. A nipple protesis that reacts to cold or excitement
  2. A bionic breast protesis

I decided that the second one would be more interesting and I proceed with it.

Casting an Alginate Breast Prototype#

Alginate mold#

Ingredients

The first intempt I did too much and almost half of the mix went to waste so I recomend for casting a single breast to use:

50g weight of alginate

150 weight of water

1 plaster bandage

2 recipients to weight and mix the alginate

1 recipient with water for the plaster bandage

1 scissors

1 spoon

1 mixer

1 sieve strainer

Tips before you messure and mix:

You will need to mix 3 parts water to 1 part alginate ratio by WEIGHT because alginate is very light (Do not mix this 3:1 water:alginate by volume)

It´s better to measure the powder in separate containers, and then adding the water to the powder, rather than powder to the water so it mixes faster.

Proces:

Sieve and weight the alginate dust

Weight the water

Put the water into the alginate container and mix for 45 to 60 seconds

Use your hands to put it fast onto the body part you want to cast and wait for 5 minutes more or less until it gets dry.

You can see very detail information about the preparation here

As I was applying the mix with both hands and it dries super fast, I wasn´t able to make video or pictures of the process of applying, but you can see an easy way to apply in other parts of the body it in the video below

Prosthesis Cast#

Ingredients

25g sodium alginate 400ml water 40ml glycerin (50g)

25g calcium chloride 200ml water

Process

Prepare the mix with calcium chloride and water and put it into a spray container, leave it aside.

Put the sodium alginate into the water and mix it with a food blender, when most of the lums disolve, add the glycerin.

Keep mixing until it has the consistence below:

via GIPHY

Wet the mold with a little spray of calcium chloride and then pour the sodium alginate mix into the mold

Spray the mix with more calcium chloride

Wait for about 25-30 min and then take the prosthesis out and rinse it very well into plain water.

Observations:

The prosthesis will shrink when it gets in contact with the calcium chloride.

The first piece I made it with 10% of glycerin and put a lot of calcium chloride mix, wait for more than 40 minutes and it srinked a lot.

While I was cheking it, it broked a little so I had to left it 10 more minutes in the calcium chloride.

2nd chance!

The second piece I made it with 20% of glycerin, put less calcium chloride mix and waited for about 25 minutes and then I rinsed it. It seems to have better results and more detail.

I did a third one much thiner to see how it works. It needed less chloride and I waited only for 20 min to rinse.

Neopixels#

include <Adafruit_NeoPixel.h>

define N_PIXELS  12  // Number of pixels you are using
define MIC_PIN   A1  // Microphone is attached to Trinket GPIO #2/Gemma D2 (A1)
define LED_PIN    0  // NeoPixel LED strand is connected to GPIO #0 / D0
define DC_OFFSET  0  // DC offset in mic signal - if unusure, leave 0
define NOISE     100  // Noise/hum/interference in mic signal
define SAMPLES   60  // Length of buffer for dynamic level adjustment
define TOP       (N_PIXELS +1) // Allow dot to go slightly off scale

byte
  peak      = 0,      // Used for falling dot
  dotCount  = 0,      // Frame counter for delaying dot-falling speed
  volCount  = 0;      // Frame counter for storing past volume data

int
  vol[SAMPLES],       // Collection of prior volume samples
  lvl       = 10,     // Current "dampened" audio level
  minLvlAvg = 0,      // For dynamic adjustment of graph low & high
  maxLvlAvg = 512;

Adafruit_NeoPixel  strip = Adafruit_NeoPixel(N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  memset(vol, 0, sizeof(vol));
  strip.begin();
}
void loop() {
  uint8_t  i;
  uint16_t minLvl, maxLvl;
  int      n, height;
  n   = analogRead(MIC_PIN);                 // Raw reading from mic 
  n   = abs(n - 512 - DC_OFFSET);            // Center on zero
  n   = (n <= NOISE) ? 0 : (n - NOISE);      // Remove noise/hum
  lvl = ((lvl * 7) + n) >> 3;    // "Dampened" reading (else looks twitchy)

  // Calculate bar height based on dynamic min/max levels (fixed point):
  height = TOP * (lvl - minLvlAvg) / (long)(maxLvlAvg - minLvlAvg);

  if(height < 0L)       height = 0;      // Clip output
  else if(height > TOP) height = TOP;
  if(height > peak)     peak   = height; // Keep 'peak' dot at top

  // Color pixels based on rainbow gradient
  for(i=0; i<N_PIXELS; i++) {  
    if(i >= height)               
       strip.setPixelColor(i,   0,   0, 0);
    else 
       strip.setPixelColor(i,Wheel(map(i,0,strip.numPixels()-1,30,150)));
    } 

   strip.show(); // Update strip

  vol[volCount] = n;                      // Save sample for dynamic leveling
  if(++volCount >= SAMPLES) volCount = 0; // Advance/rollover sample counter

  // Get volume range of prior frames
  minLvl = maxLvl = vol[0];
  for(i=1; i<SAMPLES; i++) {
    if(vol[i] < minLvl)      minLvl = vol[i];
    else if(vol[i] > maxLvl) maxLvl = vol[i];
  }
  // minLvl and maxLvl indicate the volume range over prior frames, used
  // for vertically scaling the output graph (so it looks interesting
  // regardless of volume level).  If they're too close together though
  // (e.g. at very low volume levels) the graph becomes super coarse
  // and 'jumpy'...so keep some minimum distance between them (this
  // also lets the graph go to zero when no sound is playing):
  if((maxLvl - minLvl) < TOP) maxLvl = minLvl + TOP;
  minLvlAvg = (minLvlAvg * 63 + minLvl) >> 6; // Dampen min/max levels
  maxLvlAvg = (maxLvlAvg * 63 + maxLvl) >> 6; // (fake rolling average)
}

// Input a value 0 to 255 to get a color value.
// The colors are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}