5. E-textiles¶
Research & Ideation
Inspiration: Artists and Projects
Objective:
Research on artists and projects utilizing E-textiles and soft sensors in fashion and textiles, focusing on how electronics are embedded into fabrics to create interactive, responsive garments or installations.
E-textiles and Smart Fabrics:
Ebru Kurbak:¶
An artist and researcher working with electronic textiles, Kurbak's work explores the intersection of technology and craft. She often uses soft, flexible materials, like conductive thread, to create interactive textiles that respond to touch, pressure, or sound. Her pieces highlight the invisible, often unseen, connection between craftwork and technology. Picture reference: Ebru Kurbak project
Kobakant:¶
A collaborative project founded by Mika Satomi and Hannah Perner-Wilson, Kobakant explores the integration of electronic textiles and wearable technology. Their work emphasizes handmade, DIY approaches to embedding sensors and actuators into fabrics, allowing for interactive garments and installations. Their explorations range from touch-sensitive clothing to soft sound-producing textiles.
Picture reference: Kobakant project
Syuzi Pakhchyan:¶
A pioneer in the wearable tech space, she combines fashion and electronics to create interactive garments. Her designs feature sensors and actuators embedded within fabrics to enhance the sensory experience of fashion.
Technologies in E-textiles::
Conductive Threads and Fabrics:¶
Conductive materials, like silver-coated threads, are used in E-textiles to transmit electrical signals throughout the garment, allowing for responsive interaction and embedded electronics. These threads enable the creation of circuits within fabric, making textiles functional and interactive. Picture reference: Conductive thread in action
Flexible Sensors:¶
Sensors woven into fabric allow garments to detect environmental changes or user input. For instance, pressure sensors can be used to monitor body movements or heart rate, while temperature sensors adjust the warmth of clothing based on outside conditions. Picture reference: Smart fabric with sensors
Wearable Microcontrollers:¶
Microcontrollers like Arduino or Lilypad are integrated into E-textiles to manage the input from sensors and produce corresponding outputs, such as lighting up LEDs or generating sound based on user activity.
Picture reference: Arduino in wearables
Relevant Projects:¶
Project Jacquard by Google: A collaborative project between Google and Levi's that integrates touch-sensitive panels into fabric. This technology allows users to control smartphones or other devices by touching specific areas on their garments. Picture reference: Google Jacquard jacket
CuteCircuit:¶
A fashion label that uses E-textiles to create garments with embedded LEDs and smart fabrics that change color or pattern based on user input. Their collections demonstrate the artistic and commercial potential of E-textiles in the fashion industry.
Picture reference: CuteCircuit's LED dress
Soft circuits :
Soft circuits are flexible, conductive materials used to create electronic circuits in textiles or soft materials. Unlike traditional circuits, they integrate components like conductive threads, fabrics, or inks, allowing them to bend, stretch, and move without breaking.
Sensors :
Sensors in soft circuits detect environmental changes such as temperature, pressure, or motion. They convert these changes into electrical signals, which can be processed to trigger actions or feedback. Soft sensors are often used in wearable technology, smart textiles, and interactive fashion, enabling devices to respond to the user or environment in real time.
Digital Soft Sensor¶
Conductive Thread Button Sensor: A digital soft sensor can be created using conductive thread stitched into a garment to form a simple button. When the thread makes contact (like when the fabric is pressed or squeezed), it completes a circuit, sending a digital signal (either on or off, 1 or 0). This type of sensor is often used in wearable electronics to detect touch or pressure.
Reference: HILLAMAN CURTIS
HILLAMAN CURTIS
Analog Soft Sensor¶
Stretchable Fabric Sensor: An analog soft sensor can be made by using stretchable conductive fabrics or threads. For example, a stretch sensor made from conductive elastomer or fabric can detect the amount of stretch or deformation of the material. As the fabric is stretched, its resistance changes, and this variation in resistance can be read as an analog signal, giving a range of values (rather than just on/off). This type of sensor is useful in applications like detecting body movement or measuring strain in wearable devices.
Embedding electronics in fabrics¶
Embedding electronics in fabrics involves integrating electronic components like sensors, circuits, and microcontrollers directly into textiles. This can be done by using conductive materials such as conductive threads or fabrics, which can be sewn or woven into garments to create soft circuits. Components like LEDs, batteries, or microcontrollers are attached to the fabric either by sewing, adhering, or embedding them during the manufacturing process.
Reference: E-Textile Swatch Exchange 2015 E-Textile Swatch Exchange 2015
Soft-hard connection¶
Soft-hard connections refer to the challenge of linking soft, flexible textile components with rigid electronics. To achieve reliable connections between the two, techniques like using snap buttons, conductive Velcro, flexible PCBs, or connector sockets are often employed. These methods allow for durability and maintain electrical conductivity while enabling the fabric to retain its flexibility. Careful design ensures that the hard components do not hinder the wearability or functionality of the fabric, making them suitable for applications in wearable tech, smart clothing, and interactive textiles.
FIRST EXPERIMENT¶
1 LED
2 Resistance
3 Jumper wires
4 Breadboard
5 Arduino nano board
6 cotton fabric
Initial Experiment¶
In my initial experiment, my primary focus was on learning and gaining hands-on experience with basic electronics. I set out to construct a simple circuit involving LEDs, a power source, and a resistor to better understand how these components interact. I did set out to create a straightforward circuit using LEDs, a power supply, and a resistor. The goal was to understand the basic principles of circuit design and how these components interact with one another. I began by gathering all the necessary materials, ensuring I had a variety of LEDs to experiment with different colors and brightness levels. I connected the power supply, carefully choosing the voltage to match the requirements of the LEDs to avoid any potential damage.
CODE USED¶
#define TRIG_PIN 9
#define ECHO_PIN 10
#define LED1 4
#define LED2 5
#define LED3 7
#define LED4 6
#define LED5 8
const int ledPins[] = {LED1, LED2, LED3, LED4};
const int ledCount = sizeof(ledPins) / sizeof(ledPins[0]);
unsigned long lastStepTime = 0;
const unsigned long interval = 300; // 300ms
int ledIndex = 0;
float distance = 0;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED5,OUTPUT);
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
measureDistance();
if (distance < 10) {
unsigned long currentMillis = millis();
if (currentMillis - lastStepTime >= interval) {
lastStepTime = currentMillis;
//Turn on motor
digitalWrite(LED5,0);
// Turn off all LEDs first
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], LOW);
}
// Turn on only the current LED
digitalWrite(ledPins[ledIndex], HIGH);
// Move to next LED in sequence
ledIndex = (ledIndex + 1) % ledCount;
}
} else {
//Resets all LEDs
digitalWrite(LED5,1);
// Reset LEDs if distance >= 9
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], LOW);
}
ledIndex = 0; // Reset animation index
}
delay(100);
}
// Function to measure distance
void measureDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
SECOND EXPERIMENT¶
Hardware:¶
- Buzzer
- Xiao ESP32-C3 microcontroller
- SMD LEDs
- Resistors
- Push button
- Light Dependent Resistor (LDR)
- Jumper wires
- Paper
Textiles and Accessories:¶
- Embroidered machine
- Embroidery fabric
- Embroidery thread
- Glue
Other Equipment:¶
- Soldering machine
- Power supply (USB cable)
Process and workflow¶
Embroidery Phase¶
I produced a woman's face embroidery design using computerized embroidery machinery. This embroidered artwork functioned as the foundational substrate for subsequent LED integration.
Circuit Preparation¶
During the embroidery process, I simultaneously prepared the electronic components by soldering jumper wire connections to SMD LEDs, ensuring proper readiness for circuit implementation.
Digital Sensor Implementation¶
Description: A tactile push button was used to control the LED lighting patterns, with different illumination sequences triggered by pressing duration on the sensor.
Circuit Implementation¶
System Overview¶
The project implements a digital push-button sensor interfaced with a Xiao ESP32-C3 microcontroller to control: Visual feedback: LED lighting patterns (on/off, blink, fade) Auditory feedback: Sound output via a piezo buzzer (driven by the microcontroller)
Key signal flow:¶
Button → ESP32-C3 (GPIO processing) →Buzzer (D0) for audio output
Hardware Configuration¶
Microcontroller: Xiao ESP32-C3
Digital Input:¶
Push-button switch connected to GPIO D10 (with pull-up/pull-down resistor)
Outputs:¶
LEDs: Three SMD LEDs on D1, D2, D3 (with current-limiting resistors)
Buzzer: Piezo buzzer connected to a dedicated GPIO pin (e.g., D0)
Power: USB 5V supply
Functional Behavior The system responds to button press duration with distinct actions:
Short Press (Instant Release):
LEDs: Turn on/off or blink once
Buzzer: Short "beep" (e.g., 1kHz tone for 100ms)
Long Press (Hold for 1+ second):
LEDs: Activates fading or sequential pattern
Buzzer: Continuous tone until release
Software Implementation Button Detection:
Uses digitalRead() with debounce filtering (software delay or hardware capacitor)
Tracks press duration via millis() for short vs. long press logic
LED Control:
Basic on/off with digitalWrite()
Smooth fading via PWM (analogWrite())
Buzzer Feedback:
Triggered using tone(pin, frequency)
DIGITAL SENSOR VIDEO¶
Code example¶
// Pin definitions
#define LDR 2 // A0 on Seeed XIAO ESP32-C3
#define BLED 3 // Blue LED
#define GLED 4 // Green LED
#define RWHITE 5 // Red or White LED
#define BUTTON 6 // Digital input with pull-up
#define BUZZER 8 // Buzzer
// Timing
unsigned long lastUpdate = 0;
const unsigned long interval = 100; // 100ms for responsive updates
void setup() {
Serial.begin(115200);
pinMode(BUTTON, INPUT_PULLUP); // Button connected to GND
pinMode(BLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(RWHITE, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - lastUpdate >= interval) {
lastUpdate = currentMillis;
int ldrValue = analogRead(LDR); // Read light level (0–4095)
int buttonState = digitalRead(BUTTON); // LOW when pressed
Serial.print("LDR: ");
Serial.print(ldrValue);
Serial.print(" | Button: ");
Serial.println(buttonState);
// Threshold for night (adjust based on real readings)
bool isNight = ldrValue < 60;
// LED control based on light level
digitalWrite(BLED, isNight ? HIGH : LOW);
digitalWrite(GLED, isNight ? HIGH : LOW);
digitalWrite(RWHITE, isNight ? HIGH : LOW);
digitalWrite(RWHITE, isNight ? HIGH : LOW);
// Buzzer ON only while button is pressed
digitalWrite(BUZZER, buttonState == LOW ? HIGH : LOW);
}
// Place for other non-blocking tasks
}
Analog Sensor Implementation¶
System Overview¶
The system uses an LDR (Light-Dependent Resistor) as an analog input to dynamically control LED brightness and blink speed based on ambient light levels. The Xiao ESP32-C3 reads the LDR's analog values and adjusts the LED behavior accordingly.
Hardware Configuration¶
Microcontroller: Xiao ESP32-C3
Analog Input:
LDR in a voltage divider circuit (connected to an analog pin, e.g., A0)
Outputs:
LEDs: Three SMD LEDs on D1, D2, D3 (with current-limiting resistors)
Power: USB 5V supply
Functional Behavior Low Light (Dark):
LEDs at high brightness + slow blinking
Moderate Light:
LEDs at medium brightness + medium blink speed
Bright Light:
LEDs at low brightness (or off) + fast blinking (or no blinking)
Software Implementation¶
Analog Reading:
analogRead(A0) measures LDR voltage (0-1023 range)
Values mapped to PWM output (analogWrite()) for brightness control
LED Control:¶
Brightness: Adjusted via PWM (0-255)
Blink Speed: Controlled with delay() or non-blocking millis() logic
### ANALOG SENSOR VIDEO
Code example¶
// Pin definitions
#define LDR 2 // A0 on Seeed XIAO ESP32-C3
#define BLED 3 // Blue LED
#define GLED 4 // Green LED
#define RWHITE 5 // Red or White LED
#define BUTTON 6 // Digital input with pull-up
#define BUZZER 8 // Buzzer
// Timing
unsigned long lastUpdate = 0;
const unsigned long interval = 100; // 100ms for responsive updates
void setup() {
Serial.begin(115200);
pinMode(BUTTON, INPUT_PULLUP); // Button connected to GND
pinMode(BLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(RWHITE, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - lastUpdate >= interval) {
lastUpdate = currentMillis;
int ldrValue = analogRead(LDR); // Read light level (0–4095)
int buttonState = digitalRead(BUTTON); // LOW when pressed
Serial.print("LDR: ");
Serial.print(ldrValue);
Serial.print(" | Button: ");
Serial.println(buttonState);
// Threshold for night (adjust based on real readings)
bool isNight = ldrValue < 60;
// LED control based on light level
digitalWrite(BLED, isNight ? HIGH : LOW);
digitalWrite(GLED, isNight ? HIGH : LOW);
digitalWrite(RWHITE, isNight ? HIGH : LOW);
digitalWrite(RWHITE, isNight ? HIGH : LOW);
// Buzzer ON only while button is pressed
digitalWrite(BUZZER, buttonState == LOW ? HIGH : LOW);
}
// Place for other non-blocking tasks
}