9. Wearables¶
Research¶
The concept of "wearable" in textile design refers to materials that can be effectively incorporated into weaving. Fibers, yarns, and threads are key examples, as their flexibility allows them to be woven together in a warp-and-weft pattern to produce fabric. Traditional options like cotton, wool, and silk remain popular due to their resilience and adaptability during the weaving process. However, contemporary textiles now also feature synthetic materials, such as polyester, as well as advanced conductive threads. These innovations enable fabrics to transmit electrical signals, paving the way for smart textiles with interactive and functional properties.
REFERENCES & INSPIRATION¶
In today’s competitive market, manufacturers prioritize fulfilling consumer demands, especially in the textile and fashion sectors. A key innovation driving this evolution is the integration of cutting-edge technology into fabrics, giving rise to "smart clothing." Unlike conventional wearable gadgets, these garments maintain a traditional appearance while embedding advanced functionalities directly into the fabric.
INSPIRATION¶
1. Studio XO (Tech-Infused Avant-Garde Fashion)¶
Inspired by Studio XO’s boundary-pushing fusion of fashion and technology, I aim to design a wearable textile that combines avant-garde silhouettes with interactive functionality. Their experimental use of sound-reactive fabrics and holographic elements motivates me to explore embedded sensors or dynamic lighting systems in textiles. This approach resonates with my goal of creating garments that are not just visually striking but also responsive to their environment.
2. Anrealage (Japanese Light-Responsive Design)¶
Drawing inspiration from Anrealage’s innovative light-reactive collections, I envision a textile that transforms under different lighting conditions. Their mastery of photochromic fabrics and geometric patterns encourages me to experiment with UV-sensitive dyes or fiber-optic weaving techniques. This aligns with my interest in designs that merge traditional craftsmanship with futuristic, adaptive aesthetics.
FIRST EXPERIMENT FAILED¶
In my initial experiment, my primary focus was on learning and gaining hands-on experience with basic electronics.
Pictures¶
Results¶
Smart Cap: Vibration Feedback System¶
Materials Needed¶
To build this interactive cap, you’ll need:
✅ A standard cap (base for the project)
✅ DC Mini vibration motor
✅ Conductive thread or thin flexible wires
✅ Battery holder
✅ ultra sonic
✅ Xiao microcontroller
✅ Needle & thread
Step-by-Step Assembly Guide¶
1️⃣ Prepare the Cap
Use a standard cap as the foundation.
The system will activate (vibrate) when worn and deactivate when removed.
2️⃣ Attach the Vibration Motor
Sew the motor inside the cap, ideally near the forehead area for noticeable feedback.
For stability, create a small fabric pocket or use stitches to secure it in place.
3️⃣ Build the Circuit
Using conductive thread(best option)
Connect the motor’s positive terminal to the battery’s positive side.
Link the motor’s negative terminal to the battery’s negative side.
If using a Xiao microcontroller, integrate it into the circuit for advanced control.
4️⃣ Secure & Insulate Wiring Prevent short circuits by insulating exposed conductive threads.
Use fabric glue, clear nail polish, or heat-shrink tubing to protect connections.
5️⃣ Final Testing Wear the cap to ensure the motor activates upon contact.
Adjust sensitivity or placement if needed for optimal performance.
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");
}
From Vimeo¶
Wearable Circuit Integration with Conductive Thread and Handmade Sensor¶
Again for improving the work done and adressing the comments i continued with working on the wearables.
This one time, I just replaced the normal wires and used conductive thread to connect the circuit directly into the fabric. The thread was a bit short because it came as an extra from a sensor one of my Collegues Maghali got from France and managed to make it work.
I couldn’t connect more LEDs, so I tested the circuit with only one LED and used the sensor I made in the textiles assignment.
I placed the sensor inside a shirt pocket and then sewed the pocket again to hide and protect the circuit. I also used a XIAO microcontroller to run the circuit. Even with the limited materials, the test worked well and I was happy with the result.
Code¶
#define LED1 4
#define LED2 5
#define BUTTON_PIN 6
bool toggleState = false;
bool buttonPressed = false;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
Serial.begin(115200);
Serial.println("Ready to toggle LEDs.");
}
void loop() {
static bool lastButtonReading = HIGH;
bool currentReading = digitalRead(BUTTON_PIN);
if (currentReading != lastButtonReading) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (currentReading == LOW && !buttonPressed) {
buttonPressed = true;
toggleState = !toggleState;
if (toggleState) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
Serial.println("LED1 ON, LED2 OFF");
} else {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
Serial.println("LED1 OFF, LED2 ON");
}
}
if (currentReading == HIGH) {
buttonPressed = false;
}
}
lastButtonReading = currentReading;
}