Skip to content

12. Skin Electronics

♘Research and Ideation♘

Skin electronics is something that is completely new to me and I was really surprised by the many processes and applications that are being explored in this area.

On one hand I am particularly interested in the capabilities for bio-sensing and interactions with the invisible workings of the body, bringing the inside onto the surface of the skin. In line with this, but in a very different tone I am also drawn to the silly, playful and exaggerated elements of skin electronics.

I am inspired by cartoons and slapstick where the body and its interactions are exaggerated. In technique of cartoon notification something complex can be expressed through just a line or color. The mallebility and elasticity of the cartoon body deals with dark matter in a very simple, light way e.g a body being slapped by a giant hammer, anger triggers steam coming out of your ears and a punch gives an instant black eye. I think there is something about skin electronics that can bring this kind of intensified corporeality and explore the tragicomic elements of this experience in a way that is both silly and serious.

moodboard

  1. Professor Takao Someya at the University of Tokyo's Graduate School of Engineering is protyping stretchy, ultrathin electric “skin” that can read and display the wearer’s heartbeat using built in electrode sensors and wireless communication.

  2. Phillips and Stella, Skintiles. These are mood effecting and biostimulating jewellery peices that are completely bio compatible and hypoallergenic. I like the understated and seamless way these peices are adorned on the body.

  3. Daniel Ramos Obregón, Outraspection: Body and Mind.. I was thinking about prosthetics and other appendages/ outgrowths of the body which could be enhanced via electronics.

  4. Phillips and Stella, Skintiles.

  5. KINISI by Katia Vega explored the skin as an interface, amplifying the micro gestures and movements of the face through control of tiny leds. I like how seamless the design is and how simple the gestures are that trigger the electronics.

  6. AquaDjing, Katia Vega, is an underwater DJ controller using Beauty Tech Nails to change tracks and add sound effects. I've been interested in haptic instruments for a long time and the added beauty of this project with the light and water is really inspiring.

  7. Rubbery Light, Mike Koetse.

  8. Neclumi, a projection based interactive necklace. Connected to the iphone and a picoprojector attached to the wearers chest. It reacts to the bodies movement, rotation, speed and also ambient sound in the light design it creates.

✙Documentation Workflow✙

This week we needed to design a skin circuit. Katia Vega gave us a great introduction to this bold new world, where biotech and skin professionals (such as make-up artist, SXF practitioners, tattooists) explore the skin as in interface for electronic interaction and human device integration. Unlike Wearables week where we were embedding electronics onto garments and textiles, Skin electronics is about attaching the ciruits directly onto the skin or skin appendage such as nails, hair, mask etc. This week we are thinking about seemless integration and wearability when designing our projects, creating interactions that highlight the body without distraction from visible mechanisms.

moodboard

Slide from Katia Vega 2024-2025 Skin Electronics Lecture.

Assignment Criteria: Week 5
  • Document the concept, sketches, references also to artistic and scientific publications
  • Design a skin circuit: Build your own version of the “Skin masquerade party” project or Build your own version of the “Twinkle Nails” project.
  • Document the project and included all source files and all materials used.
  • Make a video with your skin electronic working.
  • Make a performance of your project functioning.
Top Tip!!!
  1. WORK SMARTER NOT HARDER!.... thats all.
Inspiration!!!

☃︎Cartoon Bodies☃︎

This was one of those assignments where I immediately could imagine what I wanted to do- which doesn't happen to me often!

As I explained above, I think the exciting thing about skin electronics to me is how it exaggerates the invisible and enigmatic behaviours of the physical body. Characters internal worlds are shown through the skin and the hyperbole of the depiction shows the vulnerable, grotesque and silly parts of the human body unabashed.

I had this picture in my mind of anime blushing, with little tiny hearts swaying around in the air and beams of pink light becoming an aura around the character. A secret feeling made dramatically obvious.

Blushing is a involuntary physiological repsonse and triggered by emotional stress associated with passion, embarrassment, shyness, fear, anger, or romantic stimulation. It can't be faked or acted, its natures emotion tracking technology! For this reason I think it would be a little silly and a little serious to celebrate this phenomena of vulnerability and body enforced honesty! I wanted to make a skin electronic circuit that gives the wearer a exaggerated pink blush when a sensor picks up a fluctuation in their heartbeat.

moodboard

❥Blushing and Heart Beat Sensors❥

First things first to get this project going I would need a Pulse sensor so that I could use the readings to create the output with LEDS.

I started the project relying a little too heavily on the lab having a Arduino Pulse Sensor. These are perfect for a skin circuit as they are very small and discreet and can be clipped to the ear lobe rather than on either side of the finger tip like most pulse sensors.

Unfortunately, we didn't have one lying around and the postage time and price of buying one ruled that out pretty quick.

﹆DIY IR Heart Beat Sensor﹆

My next plan was to make one! Essentially, a heart rate monitor is a Infra Red (IR) receiver and emitter. This works because IR light is partially absorbed by blood. When your finger or earlobe is placed between the IR emitter and detector, the amount of IR light varies in sync with your heart beat and this information can be read and used with the right code!

moodboard

I followed this Instructables tutorial to see if I could set up the circuit and use their code (as writing one would have me a little out of my depth as it requires a second signal filtering code).

Another fun challenge- I also didn't have a IR emitter or receiver! Michelle suggested that I hack a Obstacle Avoidance Sensor Module InfraRed IR-08H as it has a IR emitter and IR receiver attached to the circuit board.

moodboard

We tried use the solder to remove them but this did too much damage to the legs so instead we decided to snip them off and this worked very well.

Once I had all the tools I connected the circuit as instructed in the instructable tutorial and ran then code provided in the documentation.

Obviously, this didn't work. Nothings ever that easy! My LED was lighting up which would suggest some IR was being emitted but I was getting very strange behaviours and instead I think I created some sort of touch sensor! Unfortunately, I didn't understand the code well enough to be able to troubleshoot.

❡IR Reciever and IR Remote❡

In an attempt to break up my problems into smaller problems, I decided to see if I could set up the IR recevier in a simple circuit and see if I could get some readings in the Serial Monitor.

To do this I used this Project Hub tutorial for Decode Any IR Remote Using Arduino!. through this tutorial I would set up my IR receiver circuit and use any InfraRed signalling remote to see the interaction in the serial monitor. This code also decodes the pulses sent by the IR remote and shows the HEXcodes sent by different buttons on the remote as data input for different actions in the serial monitor.

I set up my circuit as per the documentation but of course used the XiaoESP32c3 instead of the Arduino Uno and connected the signal pin to A0, changing this in the code also.

moodboard moodboard moodboard

And then after installing the iremote library into my Arduino IDE, I ran this code:

    #include <IRremote.h>
int IRPIN = A0;
IRrecv irrecv(IRPIN);
decode_results result;
void setup()
{
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn();
Serial.println("Enabled IRin");
}
void loop()
{
if (irrecv.decode(&result))
{
    Serial.println(result.value, HEX);
    irrecv.resume();
}
delay(500);
}

The results were so exciting after all the failure of the day! You can see in the video below the different hex codes when I press different buttons from the remote.

This essentially gives me a wireless input for my future projects and could help me trigger multiple different output options in one circuit.

This is great for Skin Electronics as it slims down the amount of hardware I need and gives a very seamless, invisible interaction.

I then tried to connect this up to the IR Emitter but found a real defceit of good examples and documentation online as everyone was using modules rather than single emitter and receiver components. I couldn't work out how to create the code myself unfortunately. I set up the Emitter with a simple blink example sketch but struggled to set this up with the receiver also.

✰LED behaviour controlled by IR Remote.✰

In a slight pivot, I thought I could try and use what I had learnt with the IR remote to make my project feasible again! I wanted to turn on and off the blush LEDs with a IR remote, perhaps using the different HEX codes generated to output different brightness.

I followed this Projecthub tutorial to set up two LEDs with the IR receiver ad 2x 220 ohm resistors. Again I was using the XiaoESP32C£ instead of the arduino uno and therefore had to translate the pins using the ESP32c3's pin out. This meant I had my two LEDs in pins GPI0 8 and 9 and my receiver pin as A1

moodboard

I used this code as provided by the documentation but I adapted it to my set up. I didn't understand the flagging the original code used so I changed it to a simple digital write depending on the code received.

#include <IRremote.h>
int IRPIN = 2;       // Receiver Pin
int Redone = 8;      // Red LED 1
int Redtwo = 9;      // Red LED 2
IRrecv irrecv(IRPIN); // Reads the signals from the receiver
decode_results results; // Saves decoded results

void setup() {
    Serial.begin(9600);
    Serial.println("Enabling IRin");
    irrecv.enableIRIn(); // Start receiving
    Serial.println("Enabled IRin");
    pinMode(Redone, OUTPUT);
    pinMode(Redtwo, OUTPUT);
    digitalWrite(Redone, LOW); // Ensure LEDs are off by default
    digitalWrite(Redtwo, LOW);
}

void loop() {
    if (irrecv.decode(&results)) {
        Serial.println(results.value, HEX); // Debugging: print received value

        if (results.value == 0xBB44FB04) { // If the specific code is received
            digitalWrite(Redone, HIGH);   // Turn on both LEDs
            digitalWrite(Redtwo, HIGH);
        } else {                          // For any other code or no signal
            digitalWrite(Redone, LOW);    // Turn off both LEDs
            digitalWrite(Redtwo, LOW);
        }

        irrecv.resume(); // Ready to receive the next signal
    }

Unfortunately, this also didn't work! The circuit was picking up the IR signal but it was only turning on one LED and it also didn't respond to the HEXcode. The LED would turn on if any button was pressed.

I tried to trouble shoot by breaking it down and testing the circuit with the LED Blink example sketch in Arduino IDE. This worked perfectly so I know it is the code that is buggy.

Again, I didn't feel able to troubleshoot this in the code myself and I couldn't find anyone who had done it online and documented their project. I think I really need to do some more basics in Arduino IDE and get better at troubleshooting with writing the code. I don't think I'm at a place where I can confidently know what I am changing yet.. but one day!

I don't think I would have been able to get this IR communication up and running this week but for a future project I would love to spend some time getting to grips with it as it is a really useful and interesting function.

🗡️Kill your Darlings🗡️

At this point, it was clear it was time for a BIG PIVOT and general simplification of the plan. I'm sure one day I will work out how to do this with IR but in order to finish the assignment and get on to the Skin electronics of the week I decided to swap this our for a simple LDR to control the LEDs.

❉LDR Setup❉

I drew out my circuit both as a circuit diagram and how it would be on the body. I used a resistor calculator to work out which resistors I would need with the LEDS and the mulitmeter to find the resistance range of the LDR.

moodboard moodboard

I built my circuit on a breadboard to test if it worked. The LDR through a voltage divider was in pin A0 to 3.3V and the two LED circuits in A1 and A2 to ground.

I used a simple LDR/LED fade code we had used in E-textiles week but adapted it:

  • For 2 LEDs
  • Reversed the brightness mapping so that the lower the Sensor value the higher the brightness.

Here is my code:

int sensor_pin = A0;  // Pin connected to the LDR
int LED1_pin = A1;    // Pin for the first LED
int LED2_pin = A2;    // Pin for the second LED
int brightness = 0;   // Brightness value

// The setup routine runs once when you press reset:
void setup() {
// Initialize serial communication at 115200 bits per second:
Serial.begin(115200);

// Set LED pins as output:
pinMode(LED1_pin, OUTPUT);
pinMode(LED2_pin, OUTPUT);
}

// The loop routine runs over and over again forever:
void loop() {
// Read the input on the LDR sensor:
int sensorValue = analogRead(sensor_pin);

// Print out the value you read:
Serial.println("sensorValue");
Serial.println(sensorValue);

// Map the sensor value to a reversed brightness range:
brightness = map(sensorValue, 1500, 3200, 255, 0); // Reverse mapping
brightness = constrain(brightness, 0, 255);

Serial.println("Mapped reversed brightness value:");
Serial.println(brightness);

// Set the brightness of both LEDs:
analogWrite(LED1_pin, brightness);
analogWrite(LED2_pin, brightness);

// Delay for stability:
delay(100);
}

moodboard

⚙︎Building a Skin Circuit⚙︎

◎LEDS◎

The next step was to work out how to put this on the body in a discreet, flexible and wearble way.

I started by deciding what kind of LEDs I wanted to use. The standard LEDS are quite clunky and don't sit flat against the skin.

I decided to try surface mount LEDS first:

moodboard

I found these little things so hard to work with!!! I found it impossible to solder them to wire (yes it didn't help that I later found out I had to remove the coating on the wire) and even though I stuck them to tape and marked their direction I kept losing track of which side was positive and negative.

N.B. I later discovered there is a small green line on these ones that denotes the positive side.

So in frustration I switched to using string LEDs. I cut up the individual LEDS, collecting Red and White ones and resoldered them together in the pattern I required.

I had to burn off the coating and use a bit of sandpaper to get the solder to stick to the wire on these. I also had trouble with the flux from the solder so please excuse the veyr gross soldering on these:

moodboard

✧INTEGRATING THE MICROCONTROLLER✧

Next, I had to work out how to connect up the circuit in a way that was discreet and sat flat against the skin.

We first used pin connectors and headers to extend the pins of our Xiao ESP32c3 microcontroller whilst still having it sit flat.

Michelle also helped me to sold a battery connector to the positive and negative connections on the back of the microcontroller so that we could attach the Lipo Battery (we had to reshape the connection on the lipo battery with scissors to make it fit).

moodboard

✥TRACES✥

For my circuit my plan was to make a light pink mesh bib that would go over the wearer's head and fall around their back and collar. It would act as a base fabric for my conductive traces but not be seen against the skin.

moodboard

Then I adhered conductive fabric to Vlesofix using the Heat press and cut out my traces. I just drew them around my microcontroller and cut them out by hand with scissors.

When my traces were correct, I lay them out carefully on top of my mesh and taped them in the right place. I made sure none of them were touching. I than heat pressed them for 20 seconds at 320 Farenheit. The Vlesofix adhered the conductive traces to the mesh.

moodboard moodboard

☙SOLDERING EVERYTHING TOGETHER❦

The final step was to solder everything together.

I was very careful during this process to tape down all my connections before soldering so nothing moved and I didn't accidentally connect the wrong component.

I used insulated wire to make connections that travelled longer distances and found this a very nice material to work with.

I tested each connection with a multimeter as I went so that I knew if there was a problem before I had finished everything.

moodboard moodboard

I was very happy with the results. The soldering was not the most beautiful but the connections were strong and the mesh was basically invisable but held the weight of all the components including the lipo battery (which surprised me).

I tested out the circuit for the first time as a skin circuit!

☍FELTING☍

With the circuit working the final step was to felt some cute pink blush patches and attach them to the LEDs.

At this point I decided to remove the piece of wire I had put in between the two led strings to hook on to my nose. I decided it would look weird and completely obvious so I cut it out and decided to proceed with sticking the two blush pieces to the face with doublesided tape.

moodboard moodboard

I will try some experiments with latex also to see if this is a feasible solution as the latex will be more discreet and stick well to the skin. It will also be possible to embed the leds in the latex for a more cohesive design.

moodboard

I cast the first layer of latex with Carolina and we think it was a little too thick but we will see how the results turn out with the LEDs and a push button I am testing.

Final Result

And here it is in action:

moodboard moodboard moodboard

Overall I am very happy with my Skin circuit. I think the felt diffuses the light really nicely and from afar it really gives the cartoon effect I was looking for. I think my circuit is very discreet, you can barely tell the mesh it there and the wires are well hidden in my hair.

However, there are also a lot of kinks to be worked out. Considerations for next time include:

  • Can I use latex to better attach the blushing lights to my face?

  • Can I make the wire length shorter by bringing the circuit closer to where it is worn?

  • Can I make my connections stronger by making my traces more robust and using a stronger base fabric?

  • Can I generally make it more comfortable to wear and less scratchy on the face?

  • Can I make the triggering action something more natural or imperceivable?

All to be worked out later!

Controlling Garage Band Synthesiser with Midi

To add to the fun of Skin Electronics week we also had a tutorial from Rico Kanthatham.

Rico taught us how to set up a bluetooth midi controller to play a phone app synthesiser. This uses the XiaoESP3CS's Bluetooth capabilities to wirelessly communicate with our phone and allow us to play with an analog input device that can be embedded on the skin or in a wearable.

This was great fun and opened up a lot of possibilities for audio output in Skin Electronics that I didn't think about before.

The full tutroial of how to do this is available at this HERE or you can see the notion page HERE if you want to make along with Rico. I will outline the basic step by step below:

Tools

!!! example ""

HARDWARE:

* A Xiao ESP32C3 Microcontroller
* Breadboard
* Digital Switch
* Analog Input device e.g potentiometer, slider, capacitive touch sensor, Dial, Ultrasonic Sensor. 
* Jumper Cables
* USB/C Cable
* Mobile Phone
* Bluetooth Antenna (optional)

MOBILE APPS:

* BLE MIDI connect for iphone or BLE MIDI CONNECT for android. 
* SynprezFM for ANdroid or Garage Band for iphone

First we set up our Breadboard using the schematic Rico provided for us:

moodboard moodboard

We connected the potentiometer and button switch to the Xiao ESP32CS as so:

### Slider or Rotary Potentiometer

- VCC > Xiao 5V pin
- GND > Xiao GND pin
- SIG > Xiao (analog) GPIO pin 2

### Button Switch

- Row 1 > Xiao GND
- Row 2 > Xiao (digital) GPIO pin 21

Once the board is ready you can prepare your software:

  1. First you must install the board definition in your Board Manager if you haven't used a ESP32 board before. Search for ESP32 by Espressif Systems and install it

  2. Then in your libraries you need to install BLE-MIDI library by Lathoub 2.2. Importantly, compilation errors may occur if you have more than one BLE MIDI library installed so ensure you check an install any others e.g Arduino BLE library.

  3. Open BLEMIDI_ESP32.h in a text editor or code editor software go to line 116. Add “.c_str()” to the end of the line and save. It should look like this:

moodboard

  1. Upload this code to a new sketch in Arduino IDE.Ensure you change the name of your synth to your own so it is easy tl find in your Bluetooth app.

    #include <BLEMIDI_Transport.h>                                //BLE MIDI Transport library
    #include <hardware/BLEMIDI_ESP32.h>                           //BLE ESP32 library
    
    BLEMIDI_CREATE_INSTANCE("Issy's Synth", MIDI);                     //make instance of BLEMIDI
    
    const int buttonPin = D6;                                     //button pin
    const int potPin = A0;                                         //potentiometer pin
    
    //variables
    int midiNote;
    int btnState;
    int lastBtnState;
    
    void setup() {
    pinMode(buttonPin, INPUT_PULLUP);                           //define button pin mode
    pinMode(potPin, INPUT);                                     //define potentiometer pin mode
    
    MIDI.begin();                                               //start MIDI
    
    }
    
    void loop() {
    midiNote = map(analogRead(potPin), 0, 4025, 60, 80);        //read potPin and remap value to range of 60 to 80
    
    lastBtnState = btnState;                                    //reset lastBtnState to equal current btnState
    btnState = digitalRead(buttonPin);                          //assign read voltage state to btnState
    
    //trigger a note
    if(lastBtnState == 1 && btnState == 0){                     //if there is a difference between last button state and current button state
        MIDI.sendNoteOn(midiNote, 127,1);                         //send MIDI note generated by pot position
    }
    
    }
    
  2. Download the two necessary apps. We used Bluetooth MIDI connect and Garage Band so I will talk you through that as an iphone user.

  3. Connect your Bluetooth device. Open up Bluetooth MIDI Connect and ensure you allow bluetooth all bluetooth settings. Then select your synthesiser. It should automatically appear. If this doesn't work straight away, turn your phone on and off. I added a bluetooth antenna to my circuit for a stronger connection.

  4. Open your Synthesizer App for us it was Garage Band. Here you can go to Definitions > Advanced > Bluetooth MIDI devices and select your device.

  5. Select your instrument and start to play. You can affect the pitch of the note with the potentiometer and play the note using the push button. Play around with the affects in your phone app and see what you can do! We had great fun playing together and trying out different sounds.

Here is a video of Michelle artfully playing mine and Carolina's synths at the same time:

Prototyping it for the body

From what started as a joke, I decided to have some more fun and make a mini project. I wanted to see if I could control the midi synthesizer with my ponytail and make this circuit also discreet on the body.

I didn't have time to create a clean design but I prototyped the idea and think that if I had more time this would be a really fun way to interact with a digital instrument.

I knew the first thing I needed to do was get the potentiometer away from the breadboard so I soldered some really long insulated wire to the pins and on the other end soldered the wire to a jumper cable connection.

moodboard

This was very DIY job and I didn't have any pin connectors or heat shrink to make this more refined so I insulated my connections with tape!.

Next I needed to attach the potentiometer to a hairband. I also didn't have a glue gun so I made do with some double sided tape and twistable wire! I needed it to be held on strong so that it wouldn't come off as I twisted the potentiometer knob.

I also needed something as a make shift crank that I could easily disguise into my ponytail but would also be strong enough to twist the knob as I moved my pony. So I decided to twist up some black insulated wire and attach this firmly to the knob and using tape again! Luckily I didn't get any of it stuck to my hair but hot glue will definitely be a must next time!

moodboard moodboard

Once I had my hair attachment ready I plugged it into the circuit and tested if everything worked and all my connections were good:

It worked great! So all that was left to do was to get it into my hair and make a nice pony tail. I hadn't yet integrated the circuit but I made the wires long enough that they could be disguised in my hair and run down the back of my clothes to where the circuit and push button could be held in the hand. The discreet integration of the rest of the circuit is for the next spiral.

moodboard

And here is the final prototype! I am really happy with how effortlessly the pony tail controls the circuit and how naturally everything is disguised by my hair and body. I think this is such a playful interaction and if I had more time I would love to explore haptic control of audio output more and explore all unexpected ways you can make music with your body:

Fabrication files


  1. File: xxx 

  2. File: xxx