12. Skin Electronics¶
goals of the week & contents¶
- 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.
Skin electronics refers to thin, flexible, and stretchable electronic systems designed to integrate seamlessly with human skin. These technologies often mimic the properties of skin, such as stretchability, biocompatibility, and responsiveness to external stimuli.
On Katia Vega class, we explored how biotechnology and skin-based professions like makeup artists, special effects (SFX), and tattooing collaborate to use the skin as an interface for electronic interaction and human-device integration.
-
In contrast to wearables eletronics, which attach to garments or textiles, skin circuits embed directly onto the skin or appendages such as nails, hair, or masks.
-
Focus on seamless integration, prioritizing wearability, comfort, and discreet interactivity. Materials like conductive inks, stretchable circuits, and soft robotics, ensuring flexibility and biocompatibility.
-
LED tattoos, light-reactive makeup, or hair with embedded sensors.
Image from Katia Vega 2024-2025 Skin Electronics Lecture.
research¶
At the start of the week, I had no clear idea of what skin electronics could offer. However, after Katia Vega's lecture, I was fascinated by the concept of conductive tattoos. Although I didn’t pursue them this week, they’re something I’d love to explore in the future.
My appreciation for skin electronics grew mid-week as my final proposal started taking shape. As I said in Wearables Week, I’ve struggled with the transition from breadboard circuits to wearable designs, but this week helped me gain a lot more confidence.
For inspiration, I also included, on the second row, design research focused on masks that could potentially integrate electronic setups. While these artists didn’t include actual circuits in their work, I found them really interesting and open to eletronic explorations.
- BEAUTY TECHNOLOGY by KATIA VEGA, Katia Vega uses conductive ink to apply LEDs and some sort of movement switches directly to the skin, allowing the LEDs to be controlled by the wink of an eye or other facial movements.
- SKINTILLATES by UC BERKELEY STUDENTS, temporary tattoos with embedded electronics. These “epidermal wearable interactive devices” can serve as everything from passive and active on-skin displays, to capacitive and resistive sensors for controlling gadgets, to strain gauges for posture detection.
- NAIL'D IT, NAIL ART COMPETITION TV SERIES, nails that shine with LED lights.
- ANDREEA MANDRESCU, inlaid skin accessories.
- JAMES MERRY
- NARCISSUS by RUBY MELLISH
- IRIS VAN HERPEN
Neclumi is a digital necklace created by polish design collective PanGenerator, which uses a smartphone app and a projector to display light patterns on the wearer’s neck. It responds to movement, sound, and even the passage of time. Neclumi aims to replace physical jewelry with digital, having customizable aesthetics.
I found the Neclumi project fascinating! The concept of digital jewelry is something I'd love to experiment with and integrate different interactions or behavioral responses, with light, motion and sound.
I’m also really inspired by Michelle Vossen’s "Servo Earring" project, created during FabAcademy. Bringing movement into wearable jewllery is really fun and you can explore all the details of her project and documentation here.
Video from Michelle Vossen's documentation.
xiao ESP32 > bluetooth midi controller¶
Rico Kanthatham gave a lecture on how to use the Xiao ESP32C3 microcontroller as the centerpiece of an electronic MIDI controller (that can be integrated into a garment or wearable device). You can watch the class here.
We began by reviewing Rico Kanthatham's documentation, which you can see here. After, we moved on to assembling the circuit on a breadboard. The materials required are: Xiao ESP32C3 microcontroller, a button/switch, a potentiometer and jumper wires.
Building this Circuit on a Breadboard:
-
Connect one pin of the button to GND and the opposite pin to D6.
-
Connect the potentiometer power pin to 5V, the ground pin to GND and the data-in pin to A0.
CODE:
#include <BLEMIDI_Transport.h> //BLE MIDI Transport library
#include <hardware/BLEMIDI_ESP32.h> //BLE ESP32 library
BLEMIDI_CREATE_INSTANCE("CarolinaSynth", 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
}
}
SOFTWARE PREPARATION
To get started with programming the ESP32 for MIDI control on Arduino, first, open the Arduino IDE and go to Boards Manager. Search for ESP32 by Espressif Systems and install it. Then, go to Manage Libraries and search for BLE-MIDI by Lathoub and install it.
After installing, you will need to adjust a file within the Arduino libraries folder. Navigate to your Arduino Libraries folder (usually found under Documents > Arduino > Libraries), and locate the BLE-MIDI folder, go to src > hardware > BLEMIDI_ESP32 and open this file in a text editor. Find line 116 and add .c_str() to that line. Save the changes.
protected:
BLEMIDI_ESP32 *_bluetoothEsp32 = nullptr;
void onWrite(BLECharacteristic *characteristic)
{
std::string rxValue = characteristic->getValue().c_str();
if (rxValue.length() > 0)
{
MOBILE PHONE APPs
Android: SynprezFM (or other synthesizer app that allows BLE MIDI connections) + MIDI BLE Connect (or other Bluetooth MIDI connection management app)
Iphone: GarageBand + Bluetooth MIDI Connect
To connect your Bluetooth MIDI device, first open your Bluetooth MIDI app and make sure your MIDI device is online. In the code above, replace "CarolinaSynth" with a different name in the line below.
BLEMIDI_CREATE_INSTANCE("CarolinaSynth", MIDI)
After that, on your Synthesizer app, I used GarageBand, go to Definitions > Advanced > Bluetooth MIDI devices, and select your device from the list to establish the connection. Once everything is set up, you should be able to start playing music by pressing the button and adjusting the potentiometer to change pitches.
Note: If your device doesn’t appear in the Bluetooth MIDI app, try restarting your phone to help the app update and detect the device.
final proposal¶
For my final proposal, I decided to create a mask, incorporating these elements: Christmas LED strips with insulated wires and multicolored bulbs, and synthetic hair from our arts and crafts box.
I’ve been loving working with lights as an output in my electronics projects, and this time I decided to paired it with an LDR sensor for some interactivity. I wanted to be able to control it on my body, so I used latex as a skin-like material to hold and blend the circuit.
design process¶
To begin the design process, I started by sketching ideas for the mask. I was drawn to a symmetric design, and my plan was to use the hair to outline facial features.
The next steps involved considering some questions about the mask’s design and functionality:
- How should the hair be styled?
- How can the LEDs be integrated discreetly into the design?
- What can I use to hide the circuit components?
- How can I make the intersection of hair and LED elements visually interesting?
- Could the LEDs have an interactive or dynamic element to add another layer of interaction?
I began experimenting with the hair to explore these ideas. Initially, I had two main approaches in mind, the first was baby hair curls. I envisioned shaping the hair into curls around the face. To achieve this, I tested with hair gel and wood glue to make the curls rigid and stay in place. However, I faced the problem of integrating the LEDs seamlessly.
The second idea was to style the hair into braids and weave the LED strips through them, making the lights appear as a natural part of the braid design.
I decided to move forward with the braided design. Initially, I attempted to incorporate the LED wires directly into the braids as I created them, but the stiffness of the wires caused the braids to look crooked and uneven.
Instead, I used a crochet hook, I carefully interlaced the LED wires into the braids after they were completed. This method ensured that the LEDs were only visible on the front of the braid, and the wire on the back. To secure the wires on the back of the braid, I hand-sewed them in place, preventing movement and allowing me to shape the braids into the desired design.
One problem I encountered was the length of the hair I was using, it was too short to create the long braids I wanted. My design needed two extended braids that could wrap symmetrically around the face, each covering one half. To overcome this, I explored ways to extend the braids or join them together seamlessly. After several experiments, I settled on hot-gluing three shorter braids together to achieve the desired length. To hide the glue joints, I used black heat shrink tubing, which not only hid the connections but also blend with the hair.
To complete the design, I began by sketching the lines I wanted on paper, using them as a guide for shaping the braids. Since the LED wires didn’t have the strength to hold the curves in place, I hand-sewed certain areas to ensure the braids retained their shape.
Afterward, I replicated the process for the other half of the mask, using the first braid as a template. Once both sides were done, I hand-stitched the two braids together at the center.
circuit¶
For the circuit, I used a code from E-textiles week, which included an LED and an LDR (light-dependent resistor). For this mask, I used two LED strings, one for each side of the face. To simplify the circuit and use a single resistor for both strings, I wired them in a parallel circuit, allowing the brightness to be distributed evenly between the two strings.
The LDR added an interactive element to the design. It enabled me to control the LED brightness based on light levels and even turn them off entirely when desired.
To make the circuit skin eletronic, I planned to cast it in latex, creating a flexible, skin-like enclosure. My idea was to position the encased circuit on my chest or belly, allowing easy access to control the LDR while keeping the electronics concealed.
Building this Circuit on a Breadboard:
-
Use a lighter to carefully burn the insulation off the ends of the positive and negative wires on the LED strings.
-
Insert the LEDs string and the microcontroller into the Breadboard.
-
Connect the 220Ω Resistor. Attach one end of the resistor to the longer leg (+) of the LED and the other end to pin A0 of the microcontroller.
-
Connect the short leg (-) of the LED to the GND, using a jumper wire.
-
For the second LED string, connect its positive leg (+) to the positive leg of the first LED string and its negative leg (-) to the same point as the resistor. This parallel configuration shares the current between both LED strings.
-
Connect one leg of the LDR to pin A1 on the microcontroller. The other leg to 3V3, using a jumper wire.
-
Connect one of the legs of the 10KΩ Resistor to the LDR leg that its on pin A1. The other leg connect to GND, using a jumper wire.
CODE:
int sensor_pin = A1;
int LED_pin = A0; // Pin the LED is attached to
int brightness = 0; // how bright the LED is
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
pinMode(LED_pin, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(sensor_pin);
// print out the value you read:
Serial.println(sensorValue);
brightness = map(sensorValue, 2000, 3400, 0, 255);
brightness = constrain(brightness, 0, 255);
Serial.println("Mapped brightness value:");
Serial.println(brightness);
analogWrite(LED_pin, brightness);
delay(100); // delay in between reads for stability
}
To translate the circuit into a wearable design, I began by sketching the schematic and planning the wire connections. I used a piece of skin-colored mesh fabric as the base for the wearable circuit, so that later I could cast latex on top of it. Using conductive fabric, I adhered it to Vliesofix (a fusible webbing) with a heat press to create the traces. The next step was to cut out the traces into a droplet shape.
Once the traces were ready, I positioned them carefully on the mesh fabric, ensuring no conductive pieces overlapped or touched. Using a heat press set to 320°F, I fused the traces to the mesh for 20 seconds.
For the components connections, I used insulated wires to connect the components to the microcontroller. The power source was a 3.7V LiPo battery, which I connected to the back of the microcontroller. The microcontroller's designated + (positive) and - (negative) terminals were used for this, and I ensured polarity by using matching wire colors, red for positive and black for negative, consistent with the LiPo battery's wires.
For the remaining connections, I carefully paired the respective wires with their corresponding components, securely twisting them together before soldering them for more stability. To ensure the connections were well-protected and isolated, I used heat shrink tubing over each soldered joint.
mask testing¶
One of the fun aspects of working with these Christmas LED strings is the variety of colors they offer on the same string. While testing the LEDs with a simple 3V battery, I noticed that when I connected the positive leg to the battery's positive terminal and the negative leg to the negative terminal, the LEDs alternated between red and white lights. However, reversing the polarity by connecting the negative leg to the positive side of the battery caused the blue and green lights to illuminate instead.
For the final design, I focused on using the red and white LEDs, but experimenting with the other colors during testing was a lot of fun. I wasn’t using the full circuit I had built, instead, I connected the LEDs directly to the 3V battery. During this test, the blue and green LEDs were positioned on the wrong side of the design, near my face. When they lit up, they created a stunning effect that I really love.
I experimented with two configurations, a chest piece and a mask. I ultimately decided to go with the face mask, as that had been my goal from the beginning. But I really liked the chest design too!
outcome on the body¶
To attach the circuit to the body, I used the thin, skin-colored mesh that I had for the circuit and secured it with skin-safe tape, which worked really well. In this photo, I taped the circuit onto a basic undershirt for demonstration purposes, but it is suppose to be applied directly to the skin.
If I were to develop this into a more complete garment, I would create a simple shirt using mesh fabric and hand-sew the circuit onto areas such as the chest, belly, back, or even the side. However, it’s essential to use transparent or mesh materials to ensure the LDR remains functional, allowing the light-sensing interaction to happen.
future improvements¶
I am really happy with the outcome of both the mask and the chest piece. However, there are some aspects I would like to improve further:
- I preferred the effect of the LEDs when they illuminated my face, rather than facing outward, as shown in the video above. Unfortunately, I couldn’t adjust the direction of the LEDs because they were already woven into the braids, but its something I would like to revisit or incorporate into future designs.
- I would like to experiment with both LEDs strips on, including the ones that are currently positioned on the back of the braids. These LEDs have a different configuration of negative and positive polarities when connected to the power source and have different colors (blue and green). Additionally, it would be exciting to control the two LED strips separately using two LDRs, which could open new possibilities for interaction.
- The aesthetics of the braids could be improved by trying different sizes, adding more braids, and using longer synthetic hair. In this iteration, the synthetic hair was short, so I had to glue braids together and hide the joins with black shrink tubing. This workaround impacted the the final result.
- I would like to explore different codes and inputs to have new ways of interacting with the lights.
- The attachment mechanism for the necklace needs some improvement. For this version, I used the same insulated black wire as the circuit to secure it at the back.