12. Skin Electronics¶
Research¶
Beauty technology is an emerging field at the intersection of cosmetics, personal care, and advanced digital innovation. It focuses on using sensors, wearable devices, artificial intelligence, and smart materials to enhance skincare, improve product performance, and personalize beauty experiences. As consumer interest grows in data-driven wellness and high-precision skincare, the industry is rapidly adopting technologies once limited to medical or industrial use.
Body & Skin Electronics
Skin electronics—also known as epidermal electronics or biocompatible wearables—are ultra-thin, flexible devices designed to be worn directly on the skin. These devices conform to the body’s contours and can measure various physiological signals without discomfort. Their development is transforming both beauty and health monitoring.
Applications in Beauty and Skincare
Real-Time Skin Analysis: Flexible sensors can track hydration levels, pH, sebum production, and temperature. This allows personalized skincare routines based on continuous data rather than periodic testing.
Smart Cosmetic Patches: Beauty patches infused with microcurrents, microneedles, or delivery enhancers can improve the penetration of active ingredients. Some patches now include micro-sensors to monitor whether users are receiving the intended dose.
UV and Light Exposure Monitoring: Ultra-thin UV sensors placed on the skin help individuals track sun exposure and prevent skin damage, improving long-term skin health.
LED and Phototherapy Wearables: Light-based beauty devices use red or blue LEDs to target acne, inflammation, or signs of aging. Body-worn formats allow localized treatment with consistent exposure.
Emerging Body Tech Trends
Electronic Tattoos (E-tattoos): Temporary tattoo-like circuits that can measure sweat, muscle activity, or stress levels, merging aesthetic design with functionality.
Haptics for Wellness: Wearable patches that use gentle vibrations to promote relaxation, improve circulation, or enhance product absorption.
Smart Clothing for Skin Health: Fabrics embedded with sensors can measure posture, muscle tension, or movement patterns, contributing to wellness and beauty by preventing strain and improving body alignment.
Impact on the Beauty Industry
Beauty technology is shifting the industry toward hyper-personalization, preventive care, and data-driven routines. Brands are integrating AI skin scanners, at-home diagnostic devices, and smart patches to offer consumers tailored solutions. These advancements promote transparency, boost consumer engagement, and open opportunities for new beauty-tech hybrid products.
References & Inspiration¶
Katia Vega’s work inspires me because she reimagines the human body as an interface—something not just biological, but interactive and expressive.
Her research reimagines the body—not just as something to decorate—but as a powerful interface for interaction.
Her projects on Hairware show this beautifully. By embedding conductive materials into strands of hair, Vega turns simple gestures—like tucking your hair behind your ear—into invisible commands for digital devices. It’s subtle, stylish, and empowering, especially in contexts where discreet interaction matters. There's something magical about the idea of controlling technology through movements we make instinctively every day.
Her work on interactive nails pushes that idea even further. The nails become tiny, functional surfaces—capacitive sensors, RFID tags, or even miniature trackpads—allowing wearers to trigger actions with a tap or a swipe.
Vega’s vision motivates me to think differently about beauty and body-based technology. She proves that design, aesthetics, and engineering can coexist—pushing the boundaries of how we interact with the digital world through the things we already wear every day.
Tools & Materials¶
- Arduino UNO
- Arduino IDE
- RC522 RFID reader
- OLED Display 128x64
- NFC, RFID programmable nail tags
- Nail polish
Process and workflow¶
Inspired by the Twinkle Interactive Nails project, I explored the use of NFC/RFID-programmable nail tags to enable quick and seamless communication. By simply bringing my nails close to a smartphone, I can trigger actions such as sending a WhatsApp message or initiating a phone call, making interaction effortless and intuitive.
Steps for Android¶
- Install NFC Tools: Download the NFC Tools app from the Play Store.
- Write a Record: Open the app, tap "Write," then "Add a Record".
- Choose a Type: Select "URL/URI" and then "Write the URL". I added the Fabricademy URL.
- Encode: Save the record and tap "Write," then scan your NFC tag to program it.
- Test: Tap the tag with your phone to launch WhatsApp with the set contact or message.
- Add the sticker to my nail and try it.
I wanted to explore how an RFID reader could interact with nails embedded with RFID tags. To do this, I used an RC522 RFID reader paired with an Arduino Uno to program the system and detect the tagged nails with a simple swipe. References: RFID tutorial
Circuit¶
The circuit only includes the display connection. To connect the RC522 RFID reader. The pin layout is as follows:
RST ▶ Digital Pin 9
IRQ ▶ Unconnected
MISO ▶ Digital Pin 12
MOSI ▶ Digital Pin 11
SCK ▶ Digital Pin 13
SDA ▶ Digital Pin 10
Code Example¶
Code to read an RFDI tag and display a message when swipping the nails.
/#include <MFRC522.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SPI.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
int code[] = {69,141,8,136}; //This is the stored UID
int codeRead = 0;
String uidString;
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
// Clear the buffer.
display.clearDisplay();
display.display();
display.setTextColor(WHITE); // or BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print("RFID Lock");
display.display();
}
void loop() {
if( rfid.PICC_IsNewCardPresent())
{
readRFID();
}
delay(100);
}
void readRFID()
{
rfid.PICC_ReadCardSerial();
Serial.print(F("\nPICC type: "));
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
Serial.println(rfid.PICC_GetTypeName(piccType));
// Check is the PICC of Classic MIFARE type
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F("Your tag is not of type MIFARE Classic."));
return;
}
clearUID();
Serial.println("Scanned PICC's UID:");
printDec(rfid.uid.uidByte, rfid.uid.size);
uidString = String(rfid.uid.uidByte[0])+" "+String(rfid.uid.uidByte[1])+" "+String(rfid.uid.uidByte[2])+ " "+String(rfid.uid.uidByte[3]);
printUID();
int i = 0;
boolean match = true;
while(i<rfid.uid.size)
{
if(!(rfid.uid.uidByte[i] == code[i]))
{
match = false;
}
i++;
}
if(match)
{
Serial.println("\nI know this card!");
printUnlockMessage();
}else
{
Serial.println("\nUnknown Card");
}
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], DEC);
}
}
void clearUID()
{
display.setTextColor(BLACK); // or BLACK);
display.setTextSize(1);
display.setCursor(30,20);
display.print(uidString);
display.display();
}
void printUID()
{
display.setTextColor(WHITE); // or BLACK);
display.setTextSize(1);
display.setCursor(0,20);
display.print("UID: ");
display.setCursor(30,20);
display.print(uidString);
display.display();
}
void printUnlockMessage()
{
display.display();
display.setTextColor(BLACK); // or BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print("RFID Lock");
display.display();
display.setTextColor(WHITE); // or BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print("Unlocked");
display.display();
delay(2000);
display.setTextColor(BLACK); // or BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print("Unlocked");
display.setTextColor(WHITE); // or BLACK);
display.setTextSize(2);
display.setCursor(10,0);
display.print("RFID Lock");
display.display();
}
Challenges and Learning Outcome¶
I wasn’t able to get the RFID card to read, even after double-checking that all the connections were correct. While reviewing Arduino Uno forums, I found several suggestions to use a logic level converter to ensure a consistent 3.3V supply for all components. I wasn’t able to test this setup to confirm the theory, but the display worked without issues. I plan to try again using a new RFID reader along with the logic level converter.





