12. Skin Electronics¶
Introduction to Skin Electronics¶
Skin electronics is an exciting field at the intersection of wearable technology and bioengineering. These ultra-thin, flexible devices seamlessly integrate with human skin, enabling advanced applications in health monitoring, robotics, and even augmented reality. By mimicking the properties of natural skin, such as flexibility, stretchability, and sensitivity, these innovative systems offer a glimpse into the future of personalized and non-invasive technology.
For a deeper understanding of how skin electronics work and their potential impact, check out this fascinating YouTube video. It provides a comprehensive overview of the technology, showcasing its real-world applications and possibilities.
Explore the use of conductive ink on the skin.¶
Materials Used
- Carbon powder
- Glue
- Vinegar
- Water
- Gold leaf
- Charcoal
- Glycerin
Mixed carbon powder with varying proportions of glue, vinegar, and water to create different conductive ink formulations.
Applied the mixtures to test surfaces and measured their electrical resistance.
Goal: Identify the optimal formula for conductive ink that adheres well to the skin and provides effective conductivity.
🔌 The Results Are In!¶
Material | Conductivity Rating | Verdict |
---|---|---|
Charcoal + glue | 0.5 Ω | "You’re hired!" |
Gold leaf | 0.2 Ω | "Luxury AND function welcome aboard!" |
Vinegar + glycerin | 10 Ω | "Uh, no. Try harder next time." |
Plain glue | Infinite Ω | "Literally does nothing. Bye!" |
Inspiration & Concept¶
This week, I found my inspiration in creating a party mask that light up on the skin. To start, I focused on researching the right design and figuring out the best way to make connections—whether with wires, conductive ink, or copper tape. I also explored which sensor would work best with the body, such as a temperature sensor, heartbeat sensor, or light sensor. Additionally, I considered the type of lighting I’d use, like LED lights, neopixels, or even glowing powders. As I worked through these ideas, everything started to come together once I finalized the design!
💡 also Dima wanted a crystal encrusted RGB earpiece with temperature sensitive LEDs. the stuff of futuristic fashion shoots.
🚨 Eureka Moment!
Why not connect these designs into a dynamic duo? A shared temperature sensor circuit would be the perfect bridge!
Circut design¶
Connections¶
Component | Connection | Pin/Voltage |
---|---|---|
Thermistor | One leg connected to | Pin 2 |
Other leg connected to | 3.3V (positive rail) | |
10k ohm resistor connected between | Pin 2 and GND | |
LED | Positive (anode) leg connected to | Pin 21 (PWM-capable) |
Negative (cathode) leg connected to | GND |
Building the circuit¶
Me colleague Dima worked on the design of the circut
CREDITS
Dima Hijab Design
1️⃣ Base Layer:
The stage where all the action happens. Non-conductive, sturdy, and ready to host the drama.
2️⃣ Positive Vibes Only:
Laid the positive wire like a roadmap to fabulousness. Without it, there’s no spark literally.
3️⃣ Array Magic:
Connected the bling squad (arrays) to the positive. Like tiny disco balls, they were ready to shine.
4️⃣ Insulation: Keep It Together:
Smoothed on an insulating layer to keep the chaos out and the sparkle safe. It’s the duct tape of the circuit world.
5️⃣ Negative Energy, But Make It Cool:
Finished with the negative wire the yin to the positive’s yang. It brought balance, power, and a touch of mystery.
tip
make sure of the Xioa board you are using - some of them got the places of the pins mixed
Prtotyping¶
My colleague Dima. worked on this incredible prototype. Her project focused on creating a wearable earpiece that combined functionality with a futuristic aesthetic. Here's how she brought her vision to life:
Here's how it went:
1️⃣ Ear It Is:
Dima shaped the circuit into an earpiece because why not wear brilliance? The design featured line arrays to give it that futuristic, tech-chic vibe.
2️⃣ Layered Brilliance:
First, Dima wired the positive layer, then added sketch tape for isolation. Finally, she wrapped the wires for the negative layer, keeping everything neat and functional.
3️⃣ Jumper Magic:
She connected it all with jumper wires and a battery to complete the circuit. Voila! The LEDs were ready to glow.
4️⃣ Test the Glow:
She plugged it in, crossed her fingers, and watched the micro RGB LEDs light up. Boom—working brilliance, in ear form!
It wasn’t just a prototype; it was a wearable tech success story by Dima. 🎧✨
3D printing¶
This Crystal was made in Textile Scaffold week and I took the advantage of this idea to make 3d print pieces !!
This was where the magic of Cura slicer and Ultimaker S5 wizardry came into play.
Crystal Printing Settings:¶
Setting | Value | Why It’s Awesome |
---|---|---|
Material | PLA (Blue/White Transparent) | Makes LEDs look like diamonds. |
Layer Height | 0.1 mm | Smooth but not slow. |
Infill | 15% | Lightweight brilliance. |
Build Plate Adhesion | Brim | Keeps those tiny parts from flying away. |
Print Speed | 70 mm/s | Balance of speed and precision. |
Coding Turning Science Into Sparkles¶
We designed a temperature sensitive circuit to make LEDs shine brighter as things heat up.
first attempt
The magic words (a.k.a. code) that made it all happen:
#define TEMP_PIN 2 // Analog pin for the thermistor
#define LED_PIN 7 // PWM pin for the LED (must support analogWrite)
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int sensorValue = analogRead(TEMP_PIN);
float voltage = sensorValue * (3.3 / 4095.0);
float temperature = (voltage - 0.5) * 26.3;
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
if (temperature >= 30) {
fadeLED();
} else {
analogWrite(LED_PIN, 0);
}
delay(1000);
}
void fadeLED() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness);
delay(10);
}
delay(1000);
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(LED_PIN, brightness);
delay(10);
}
}
🛠️ Explanation - Serial Communication
Serial.begin(115200);
Pin Mode for LED
cpp
pinMode(LED_PIN, OUTPUT);
🔄 2. Main Loop Logic
The loop()
function keeps repeating itself during operation. Here we monitor sensor data, process that input, and control the LED effect.
void loop() {
int sensorValue = analogRead(TEMP_PIN); // Read analog data from the temperature sensor
float voltage = sensorValue * (3.3 / 4095.0); // Map analog reading to voltage
float temperature = (voltage - 0.5) * 26.3; // Convert voltage to a temperature in °C
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
if (temperature >= 30) {
fadeLED(); // Trigger LED effect if temperature crosses 30°C
} else {
analogWrite(LED_PIN, 0); // Otherwise, ensure the LED is turned off
}
delay(1000); // Wait for 1 second before repeating the logic
}
Analog Signal Conversion
Read Sensor Data
int sensorValue = analogRead(TEMP_PIN);
💡 Logic Explained
float voltage = sensorValue * (3.3 / 4095.0);
Convert Voltage to Real World Temperature
float temperature = (voltage - 0.5) * 26.3;
Translates voltage into °C temperature using a specific calibration formula.
LED Trigger Logic
if (temperature >= 30) {
fadeLED();
} else {
analogWrite(LED_PIN, 0);
}
Delay
delay(1000);
💡 3. LED Fading Logic
The fadeLED() function provides a PWM effect by dynamically adjusting the LED's brightness over time.
void fadeLED() {
for (int brightness = 0; brightness <= 255; brightness++) { // Fade-in effect
analogWrite(LED_PIN, brightness);
delay(10);
}
delay(1000); // Wait momentarily at full brightness
for (int brightness = 255; brightness >= 0; brightness--) { // Fade-out effect
analogWrite(LED_PIN, brightness);
delay(10);
}
}
🚀 Explanation of How it Works
Fade In Logic
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness);
delay(10);
}
Hold at Full Brightness
delay(1000);
Fade Out Logic
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(LED_PIN, brightness);
delay(10);
}
LED brightness smoothly decreases back to 0.
⚙️ 4. Variables & Constants To ensure cleaner, easier to read, and modular code, define constants at the top of the program.
const int LED_PIN = 9; // Pin number connected to the LED
const int TEMP_PIN = A0; // Analog pin connected to the temperature sensor
🏆 Why Constants Matter Using constants like LED_PIN and TEMP_PIN makes the program easier to debug and reuse. If you ever change a pin's connection, you only need to adjust the constant value rather than hunting through the entire code.
🛠️ 5. Debugging Debugging with serial communication allows real-time feedback during testing.
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
✅ Why Use Debugging? Helps validate that sensor readings are correct. Enables troubleshooting faulty logic or unexpected values.
🖥️ 6. Coding Environment Below are key details about the tools and platform used during this coding phase:
Tool/Component Purpose
Arduino IDE Code development environment
Serial Monitor Debugging tool
LED_PIN/analogRead() For controlling LED response
👩💻 Coding Fail Moment
- I forgot a semicolon, and the board just blinked at me in protest.
Process¶
This pictures of the process was taken from my colleague Dima's website: Dima's Week 12 Assignment.
- Wrapped the wires Based on the deisgn.
- Isolated everything double while checking there's no short circuit.
- Attached 3D printed crystals to the earpiece.
- Connected LEDs to the circuit.
- Powered it up, and boom magic!
Result¶