Skip to content

13. Skin Electronics

📆 2020 - December 15th to 22nd

What I did this week

A silicon prop that lights up when touched:

How did I get there?

This week's lecture by Katia Vega was a very fun way to end the Fabricademy lectures. Skin Electronics is an experimental and innovative field

💅🏼
Katia Vega works on incorporating technology into cosmetics to make it interactive. She creates Beauty Technology experiments, to add functionality to cosmetics and things we put on our skin. She uses unconscious auto-contact behaviours (for example touching our hair) and turns them into inputs to trigger different objects.

Her project go beyond wearables and integrate circuits onto the skin with tatto paper, into hair extensions, nails, cosmetics, or even using facial muscles to control behaviours.

A slide from Katia Vega's lecture


Deciding what to do

Last week for the Soft Robotics experiments, we casted silicon in a 3D mold. We had some silicon left after pouring it in the molds, so we decided to put it inside the vaccuum-molded boiled leather I did in the Textile as Scaffold week:

Using a leather mold for the silicon

It gave us this weirdly textured silicon blob, and we thought we could use it as a "skin extension" and hide a circuit with LEDs underneath. We tested the NeoPixels underneath, and it showed pretty well:

Testing is the silicon is see-through enough, with my swatch from the Wearables week

Here is the circuit I thought of, with the ATtiny, a momentary switch and a 3V battery:

Writing down the circuit and the material needed

Programming the ATtiny

First I had to program the ATtiny. Thanks to Emma's tutorial, as always very helpful, I managed to program it using the Arduino UNO as an ISP:

The connections used to program the ATtiny with the Arduino UNO

I uploaded a simple code, adapted from the color wipe Emma sent us, where the NeoPixels light up one after another with a random color, when pressing on the switch.

#include <Adafruit_NeoPixel.h>

// Pin where the NeoPixes are connected
#define LED_PIN    1

// How many NeoPixels are attached
#define LED_COUNT 4

// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

// The switch pin and status
int sw_pin = 2;
int sw_status = 0;

// Defining the colours
uint32_t off = strip.Color(0, 0, 0);
uint32_t red = strip.Color(200, 0, 0);
uint32_t blue = strip.Color(0, 191, 255);
uint32_t green = strip.Color(51, 153, 51);
uint32_t magenta = strip.Color(153, 0, 204);

// Putting the colours into an array so I can access them randomly
uint32_t colors[] = {red, blue, green, magenta};


// setup() function -- runs once at startup --------------------------------

void setup() {

  strip.begin();           // Initialize NeoPixel strip object
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
  pinMode(sw_pin, INPUT_PULLUP);

}


// loop() function -- runs repeatedly as long as board is on ---------------

void loop() {

  // Reading the switch status
  sw_status = digitalRead(sw_pin);

  if (sw_status == 0){
    // If switch status is 0, run the colorWipe function with a 50ms delay
    colorWipe(50);
  } else {
    // Else, successively turn off every NeoPixel in the strip
    for(int i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, off);
      strip.show();
    }
  }

}

// Fill strip pixels one after another with a color. Strip is NOT cleared
// first; anything there will be covered pixel by pixel.
// Color is not passed, but accessed in the global array
// The delay time (in milliseconds) between pixels is passed as an argument.
void colorWipe(int wait) {
  for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
    int randNumber = random(4); // Get a random number between 0 and 3
    // Set the color with one of the colors from the array
    strip.setPixelColor(i, colors[randNumber]);
    strip.show();  //display the color
    delay(wait);
  }
}

Testing the new code with my old swatch

Creating the circuit

With the ATtiny programmed, I could now create the circuit that would go underneath the silicon. I decided to do it with conductive thread on white felt, that I thought would not show too much under the silicon. I tested at every step if everything was still working, removing the wires each time I sewed or glued a new element on the circuit.

Testing the code with the new white felt swatch in the making (ATtiny not attached yet)

Testing the code with the white felt swatch finished

I had some trouble attaching the ATtiny to the circuit; as I am not at home right now, I did not have a soldering iron, so I glued it, and tried to separate the different pins with masking tape. In the process, I broke one of the pins! It's still working though 🙈

The final circuit on the white felt

Putting everything together

I then had A LOT of trouble trying to attach the fabric underneath the silicon. I thought I would glue it, but all the glues I had were not working with the silicon, nor were the double-sided tapes I had. In the end I sewed the two layers together.

Roughly stitched silicon and felt

I was surprised and relieved that everything was still working at this point!

The final swatch with the silicon

Trying to integrate it on my skin

I used double-sided tape to attach the felt to my skin, and blended all the edges with white paint and foundation. The result would have been better with something more appropriate for attaching it to the skin, but I was in a rush...

On the skin


What next?

👽 This weird blob would be better if the circuit was properly soldered! I could also have used latex or something that would have sticked to the skin better. Of course It would have meant having all the proper materials, and not doing this yesterday 😅

💅🏼 On a completely other subject, I really liked the idea to put small RFID chips in nails to use them to activate things. I did not have time to try it this week, but I might later in the future.


Last update: March 17, 2021