12. Skin Electronics¶
Skin Electronics - Quick Overview¶
Skin electronics are ultra-thin, flexible circuits that stick to your body like a temporary tattoo.
They bend, stretch, and wrinkle with your skin - no chunky hardware, no discomfort, no drama. This makes technology not just functional, but expressive and human.
Ultimately, skin electronics suggest a world where wellbeing becomes proactive instead of reactive. Imagine early warnings for dehydration during heatwaves, pollution-sensitive masks for urban populations, or personalised wearable diagnostics for communities far from medical infrastructure. These technologies are small, soft, and intimate - but their impact could be enormous.
The Future of Health with Skin Electronics¶
As skin electronics mature, healthcare is likely to shift from episodic check-ups to continuous, meaningful insight. Instead of waiting for symptoms, ultra-thin biosensing patches could detect early signs of infection, inflammation, hormonal imbalance, or cardiovascular stress long before a crisis emerges. This empowers individuals to act early and clinicians to intervene with precision, dramatically reducing the burden on hospitals.
These systems may also become deeply personalised, learning an individual’s baseline rhythms - pulse variability, temperature cycles, stress reactions, hydration patterns - and recognising subtle deviations unique to that person. A future patch might whisper: your body is working harder than usual today, or your recovery is incomplete, replacing generic health advice with context-rich, body-specific guidance.
On a global scale, skin electronics could help close health equity gaps by providing low-cost diagnostics that function without bulky equipment, labs, or specialist training. Entire communities could access tools that detect respiratory issues, monitor chronic illness, or track environmental hazards. In a warming world, with rising pollution and new disease patterns, these lightweight technologies may become essential infrastruc
Inspiration pictures¶
Research¶
KINISI¶
Kinisi is a FX e-makeup application that tries to answer the question: "Could your skin act as an interface?"
Kinisi could change the world with a smile, a wink,
A combination of FX makeup with sensors were precisely applied on specific muscles. LEDs were also hidden on the skin and hair. Digital signals collected by the sensors are sent to a microcontroller that activates a light sequence on Kinisi's face and hair.
The Dermal Abyss¶
DermalAbyss was a proof-of-concept that presented a novel approach to bio-interfaces in which the body surface would be rendered as an interactive display. By replacing traditional tattoo inks with biosensors whose colors change in response to variations in the interstitial fluid, it blended advances in biotechnology with traditional methods in tattoo artistry.
Inspiration - The Three-Finger Pulse¶
I first saw the three-finger pulse in Sri Lanka, sitting across from a doctor whose calm presence felt almost otherworldly. She placed her fingers gently on my wrist, each one listening for a different layer of my pulse, not just the beat, but the story beneath it.
It felt like she was reading a language my body spoke but I’d never learned.
There was no machine, no graph, no data stream. Just touch, intuition, and a kind of quiet magic.
That moment stayed with me.
It made me wonder:
What if light could read the body the same way?
What if a soft wearable on the wrist, something almost invisible, it could glow, shift, or breathe to reflect what’s happening inside us?
A modern echo of an ancient practice.
The three fingers become three sensors.
The doctor’s intuition becomes colour, rhythm, and pattern.
The pulse becomes visible, a small whisper of the body made luminous.
This project is rooted in that meeting:
a reminder that technology doesn’t have to replace magic;
Sometimes it can help us see it.
Inspiration - The Three-Finger Pulse¶
I first learned the three-finger pulse in Sri Lanka, sitting across from a doctor whose touch felt almost like divination. She rested her fingers on my wrist - three light points of contact — and suddenly it felt as if she could see straight into the hidden layers of my body.
No machines, no screens. Just presence, intuition, and an ancient skill refined over centuries.
This experience connected me to something older than I realised.
Health and Wellbeing in the Ancient World¶
Long before modern medicine, the ancient Greeks and Romans also read the pulse with extraordinary sensitivity. They paid attention to qualities we rarely consider today:
size, frequency, strength, speed, fullness, order, equality, rhythm.
For them, feeling the pulse was a kind of superpower — a way of understanding the person, not just the heartbeat. Their focus on quality rather than quantity reveals how deeply pulse-reading was tied to knowledge, trust, and even authority.
As some ancient writers said:
“They consider a pulse that is not large to be large, or one that is not swift to be swift…”
It wasn’t just about measuring; it was about interpreting.
A Modern Echo¶
That Sri Lankan doctor reminded me of this older tradition. Three fingers, each listening to a different layer. Three readings, one story.
And it sparked a thought:
What if light could become the interpreter today?
What if a soft wearable - a ring of LEDs around the wrist - could read and translate the pulse into colour, rhythm, or glow?
A modern version of this ancient sensitivity, made visible.
The three pulses become three light behaviours:
- strength
- heat
- calm
The old knowledge becomes a quiet visual language.
Technology doesn’t replace the magic — it simply helps us see it.
Nadi Vignyanaya (Sri Lankan 3-Pulse) Light Prototype¶
Simple ON/OFF Pattern Demonstration
This first version of my pulse-inspired wearable uses a very simple ON–OFF–ON sequence across
three NeoPixel LEDs. It is based on the traditional Sri Lankan pulse-reading method called
Nadi Vignyanaya used to sense Vata, Pitta, and Kapha.
Instead of reading qualities with fingertips, here the LEDs act as digital stand-ins for
the three doshas:
This version is the “first baby step” - just a rhythm of switching states to show
how each dosha could be visually represented on the skin.
Hardware Setup¶
- Board: RP2040
- Pin: D7 → NeoPixel Data In
- LEDs: 3 pixels in a row
- Power: Shared 5V + GND
Arduino Code - Simple 3-Pulse ON/OFF Cycle¶
```cpp
include ¶
define DATA_PIN D7¶
define NUM_LEDS 3¶
Adafruit_NeoPixel strip(NUM_LEDS, DATA_PIN, NEO_GRB + NEO_KHZ800);
void setup() { strip.begin(); strip.setBrightness(60); // safe + visible strip.show(); }
void loop() {
// ----------------------------------- // Pattern A: OFF – ON – OFF // -----------------------------------
// Vata OFF strip.setPixelColor(0, 0, 0, 0);
// Pitta ON (orange–fire) strip.setPixelColor(1, strip.Color(255, 100, 0));
// Kapha OFF strip.setPixelColor(2, 0, 0, 0);
strip.show(); delay(500);
// ----------------------------------- // Pattern B: ON – OFF – ON // -----------------------------------
// Vata ON (violet–air) strip.setPixelColor(0, strip.Color(80, 0, 150));
// Pitta OFF strip.setPixelColor(1, 0, 0, 0);
// Kapha ON (teal–earthwater) strip.setPixelColor(2, strip.Color(0, 150, 80));
strip.show(); delay(500); }
3-Pulse Vata / Pitta / Kapha Light System¶
Each dosha is visualised by one NeoPixel LED:
- Vata → soft, breathing violet flicker
- Pitta → fiery, punchy orange pulses
- Kapha → slow, gliding teal fade
The idea is to physically show an “inner state” on the skin - a little preview of a future where
light on your wrist or fingers could tell you how you’re feeling.
Concept: From 3-Finger Pulse to 3-LED “Mood Map”¶
In traditional pulse reading each finger reads a different quality of the body - not just “fast/slow”, but also:
- strength
- fullness
- rhythm
- order / balance
- Frequencies
- Hormones
Here I translated that into light behaviour instead of just numbers:
| Dosha | Colour (base) | Light Behaviour | Emotional / bodily reading |
|---|---|---|---|
| Vata | Violet / sky (cool) | Soft breathing flicker | Air, movement, sensitivity |
| Pitta | Orange / fire | Strong, punchy heat pulses | Fire, intensity, drive, stress |
| Kapha | Teal / green (earth) | Slow, smooth gliding fade | Earth, stability, heaviness |
Right now the board is just pretending to “read” the body (the patterns are time-based).
In a future version, these animations could be driven by real sensor data: heart rate,
HRV, skin temperature, GSR, etc. Same patterns, but actually linked to how you are.
Hardware Setup (3 NeoPixels + Seeed ESP32)¶
- Board: Seeed Studio ESP32 (using pin
D7for data) - LEDs: 3 × WS2812 / NeoPixel LEDs in a small chain
- Power: 5V and GND shared between board and LED strip
- Connections:
D7→ DIN of first NeoPixel- 5V → LED strip 5V
- GND → LED strip GND (common ground is important)
Order of LEDs on the strip:
- LED 0 - Vata
- LED 1 - Pitta
- LED 2 - Kapha
Arduino Code - Vata / Pitta / Kapha Animations¶
```cpp
include ¶
define DATA_PIN D7¶
define NUM_LEDS 3¶
// If colours look wrong, you can later try NEO_RGB or NEO_RBG instead of NEO_GRB Adafruit_NeoPixel strip(NUM_LEDS, DATA_PIN, NEO_GRB + NEO_KHZ800);
// Base colours for the three doshas // Vata: violet/sky const uint8_t VATA_R = 80; const uint8_t VATA_G = 0; const uint8_t VATA_B = 150;
// Pitta: orange/fire const uint8_t PITTA_R = 255; const uint8_t PITTA_G = 100; const uint8_t PITTA_B = 0;
// Kapha: teal/green const uint8_t KAPHA_R = 0; const uint8_t KAPHA_G = 150; const uint8_t KAPHA_B = 80;
// Phase variables for animations uint8_t vataPhase = 0; uint8_t pittaPhase = 0; uint8_t kaphaPhase = 0;
void setup() { strip.begin(); strip.setBrightness(80); // global cap, per-LED brightness handled in code strip.show(); }
void loop() { // Update phase (think of these as little "time counters") vataPhase += 9; // fairly quick, but soft pittaPhase += 20; // faster, punchy kaphaPhase += 2; // slow and smooth
// --- VATA: breathing, soft flicker (LED 0) --- uint8_t vataBase = triangleWave(vataPhase); // 0–255 triangle uint8_t vataJitter = (vataPhase % 5 == 0) ? 30 : 0; // tiny flicker now and then uint8_t vataLevel = constrain((vataBase / 2) + vataJitter, 0, 255);
setScaledColor(0, VATA_R, VATA_G, VATA_B, vataLevel);
// --- PITTA: pulsing heat waves (LED 1) --- // Strong on/off pulses with a little rise/fall uint8_t pittaLevel; if (pittaPhase < 50) { pittaLevel = pittaPhase * 5; // ramp up quickly } else if (pittaPhase < 100) { pittaLevel = 255; // full blaze } else if (pittaPhase < 150) { pittaLevel = (150 - pittaPhase) * 5; // ramp down } else { pittaLevel = 0; // off / rest } // mild cap if (pittaLevel > 220) pittaLevel = 220;
setScaledColor(1, PITTA_R, PITTA_G, PITTA_B, pittaLevel);
// --- KAPHA: gliding swan fade (LED 2) --- uint8_t kaphaLevel = triangleWave(kaphaPhase); // very slow wave kaphaLevel = kaphaLevel / 3; // keep it soft, not glaring
setScaledColor(2, KAPHA_R, KAPHA_G, KAPHA_B, kaphaLevel);
// Send to LEDs strip.show();
// Frame rate delay(40); // ~25 frames per second }
// --------- HELPERS ----------
// Triangle wave from phase 0–255 → value 0–255 uint8_t triangleWave(uint8_t phase) { if (phase < 128) { return phase * 2; // ramp up } else { return (255 - phase) * 2; // ramp down } }
// Set one pixel with scaled brightness (0–255) void setScaledColor(uint16_t index, uint8_t baseR, uint8_t baseG, uint8_t baseB, uint8_t level) { // level = 0–255, we scale base colour by this factor uint16_t r = (uint16_t)baseR * level / 255; uint16_t g = (uint16_t)baseG * level / 255; uint16_t b = (uint16_t)baseB * level / 255;
strip.setPixelColor(index, strip.Color(r, g, b)); }