5. E- textiles¶
Objectives
-References and Concept development
-Understand how we can produce soft circuits, sensors and actuators
-Learn how to embed electronics on fabrics
-Study and learn soft-hard connections
-Discover necessary materials, components, tools
-Explore and replicate existing projects
Research and Ideation
I find e-textiles both intriguing and captivating, though initially, they felt quite distant from my experience. I began this assignment with no prior knowledge of electronics, as it was something completely new to me. I had never studied it, neither in high school nor at university, so I started by learning its components and the basics. I won't deny that even a small error can prevent a prototype from functioning properly, so patience and persistence are key to achieving successful results.
Reference Artists
Concepts
- Circuit: Is a path for electricity (moving electrons) to flow
- Electricity direction: Counterclockwise, to the positive LED power and return to the negative battery side.
-Traces: Path of conductive material that electricity moves along the circuit.
- Sensors: An INPUT which the information or data that enters a system, like a button press. Use resistence to get a broader range of values. Example: more or less light depending of the current flow. There are 2 types the Digital switches On/Off and the Analog sensors that gets a range of values.
- Switches: Is a break in a circuit.
- Arduino: An open-source electronics prototyping platform. Is a hardware and software.
- Input: Button
- Output: LED, speakers…
- Pin: How inputs or outputs communicate with Arduino. Breadboards: To prototype our first circuit.
- Resistors: Limits the amount of electricity that can flow through a certain point. You could put before or after a LED, will be the same. Example: We have 5V in the circuit, and two LEDs of 2,2V each one, so 2,2V + 2,2V = 4,4V 5V - 4,4V = 0,6V We need the resitor to equilivrate the difference.
- IDE: An integrated development environment is a software application that helps programmers develop software code efficiently. It increases developer productivity by combining capabilities such as software editing, building, testing, and packaging in an easy-to-use application.
- AC: Alternating current, a type of electrical current in which the current repeatedly changes direction. At home we have AC.
- DC: Direct current, electrical current that always flows in one direction. LILYPAD: Was the first Arduino for wearables (2006).
- GND: Grown, (-) we use the black color.
- VCC: (+), V+ or +V
Ohm's Law
- Volt: Mesure in Vols (V). Is the electrical pressure between two points. The power of the electricity we will have. One LED needs 2,2V.
- Resistance: Measured in Ohms R : the amount of material that resists the flow of current.
- Current: Mesure in Amps (I): Rate at which electrical charge flows. How much quantity.
Remember: Higher is the resistance, lower is the current. Lower the resistance, the higher the current.
Benefits of E-textiles
Electronic textiles or e-textiles are a newly emerging interdisciplinary field of research together specialists in information technology, microsystems, materials and textiles. e-textiles offers the following advantages:
-Flexible.
-No disturbing cables in the area.
-Large sensor area.
-Invisible to others.
-Cheap manufacturing.
Sensors
The Digital type works with with switches, these represent a break in a circuit and there are types of switches:
Momentary: best known as push buttons. They stay open as long as you hold the two pieces of conductive fabric sandwoched between a piece of foam, which will have small cutouts where the two pieces can touch. Toggle: Two pieces of conductive material that stay together. They are open in one position and closed in other. (snaps and zippers). Tilt: A conductive bead or pompon makes contact with conductive fabric patches based on its position. Stroke: Close the circuit by pressing conductive materials into contact.
The Analog type works with sensors (also variable resistors), they use resistance to get a broader. range of values. More currrent will allow to change the brightness of an LED, frequency of sound, or the speed or a motor. Resistance can be changed in 3 ways: Distance, resistance increases over distance, 4/5 ohms, limit is 2 ft Contact: some materials are pressure sensitive, will decrease in resistance when pressure is applied to them, so it means it will allow more electrical energy through. Surface area: increasing the size of the area for electricity to flow will decrease the resistance.
These are a few materials you can use if you want to design an analog sensor: 1. Velostat, which is non stretchy 1. EeonTex, resists between 10 OHMS to 10,000 ohms 1. Polysense, best for pressure sensors.
Pressure: Use this to track pressure or weight on an interface or object. Bend: Decreases when bent and more contact is made better for measuring joint movement. Is better if you use conductive thread and not conductive fabric. Potentiometer: Adjust resistance by connecting conductive and resistive material through a wiper (electrical contact which moves across a surface) at different pointsin the circuit. The further away, the more resistance. Stretch: The more a resistive material is stretched, the more its resistance will decrease because it has more surface area to cover. Accelerometic: The weight at the end pulls and stretches the crochet or knitted structure as it gets accelerated.
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.
Digital sensor
Any electronic sensor in which the output gives an OPEN or CLOSE state. A switch is a digital sensor that gives an Off(open) or On(close) output. The clasp of a necklace, a safety pin Open open or closed etc can be used as a switch.
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.
MICROCONTROLLER
Microcontrollers play a vital role in e-textiles by acting as the brain of the system, allowing smart fabrics to interact with their environment. They process inputs from sensors embedded in the fabric and control outputs such as LEDs, motors, or displays. With a microcontroller, e-textiles can perform various functions like monitoring body temperature, detecting motion, or lighting up in response to touch. This integration of microcontrollers enables more advanced, interactive, and customizable wearable technology.
Different types of circuit
There are several types of circuits, each designed for specific functions in electrical and electronic systems. Below are the primary types:
1. Series circuit
In a series circuit, components are connected one after another in a single path. The current flows through each component sequentially, and if one component fails, the entire circuit is interrupted.
Characteristics:¶
The same current flows through all components. The total resistance is the sum of the resistances of individual components. The total voltage is divided among the components.
2. Parallel circuit
In a parallel circuit, components are connected across common points or junctions, creating multiple paths for the current. If one component fails, the rest of the circuit continues to work.
Characteristics:¶
The voltage across each component is the same. The total current is the sum of the currents through individual components. The total resistance decreases as more branches are added.
Arduino
Step by step¶
Class says : How ?¶
-
control a led
-
read a sensor
-
control a led based on the interaction with the sensor
What do we need ?¶
-
make a circuit
-
write the code for a circuit
I say :¶
I didn't know Arduino at all, and my physics lessons and PHP notions are very far away, but step by step we'll make it. Simplify every action you have to do and follow the list.
-
Connect the Arduino board to the computer via USB
-
download usage app and install it
-
connect the plate via the app by choosing the "UNO" model
-
choose an example program like "blink"
-
click on upload to send it to the plate
-
the built-in led applies the program
-
Build a complex circuit with the arduino plate and the bread board.
recipe :¶
-
1 UNO plate
-
1 bread board
-
4 led
-
1 resistance 220V
-
1 resistor 10kV
-
8 conductive threads
-
1 digital button
-
1 analog button
-
extra: circuit-mounted leds
First connexion with a program :
Always close your loop : by using the vertical and horizontal lines on the breadbord, they are linked : you can see how it is lined on the picture below
Day 1 experiment
For my first experiment, I embarked on the exciting challenge of building a basic electronic circuit. I decided to keep it simple yet functional by using just three essential components: an LED, a resistor, and a power supply. My goal was to learn the fundamental principles of electronics, such as how current flows through a circuit and how a resistor helps protect the LED from receiving too much power. As I carefully connected the components, I felt a sense of anticipation, waiting to see the LED light up. When the circuit was complete, and the LED illuminated, it was a thrilling moment. This experiment not only boosted my confidence in working with electronics but also sparked a deeper curiosity to explore more complex projects in the future.
Tools¶
1.LED
2.Batteries
3.Resistance
4.Jumper wires
Category | Items |
---|---|
Hardware | - Xiao ESP32-C3 microcontroller - SMD LEDs - Resistors - Switch - Jumper wires |
Textiles & Accessories | - Woven fabric - Balloon glue dots |
Other Equipment | - Soldering machine - Power supply (USB cable) |
Digital experiment
The code displayed in the picture is designed to blink LEDs using an Arduino Nano. It utilizes the digitalWrite() function to turn the LEDs on and off, and the delay() function to control the timing between the on and off states, creating a blinking effect. The Arduino Nano's digital pins are used to control the LEDs, and the pinMode() function is called in the setup to define these pins as outputs. This simple program is a common starting point for beginners working with microcontrollers, allowing them to learn basic programming and hardware interfacing.
For my digital experiment, I used an Arduino Nano to create a simple LED blinking sequence. The goal was to control the timing and intervals of LED flashes using code. By connecting LEDs to specific pins on the Nano and writing a program to set each pin's state to "HIGH" or "LOW" at intervals, I successfully made the LEDs blink in a pattern. This experiment helped me understand the basics of microcontroller programming, including pin configuration, timing with delay() functions, and how to implement loops to repeat actions. It was a foundational project in learning to control physical devices through code.
This video demonstrates the outcome of my digital experiment with the Arduino Nano, showcasing the blinking LED sequence I programmed. After implementing the code, the LEDs flash on and off according to the set intervals, creating a rhythmic blinking pattern. This visual result highlights the successful execution of the code, where each LED responds accurately to the programmed timing. Watching the LEDs blink confirms that the Arduino Nano effectively controls the physical components, bridging coding concepts with tangible results in real-time.
Second experiment
Category | Items |
---|---|
Hardware | Buzzer, Xiao ESP32-C3 microcontroller, SMD LEDs, Resistors, Push button, Light Dependent Resistor (LDR), Jumper wires, Paper |
Textiles and Accessories | Photo frame board, Knitting needles, Yarns |
Other Equipment | Soldering machine, Power supply (USB cable) |
Yarn-Based Architectural Drawing
I created a unique artistic representation of the Kigali Convention Centre—one of Rwanda's most iconic buildings—by drawing it with yarn on a photo frame board. Using different colors and thicknesses of yarn, I carefully outlined the building’s distinctive dome shape and architectural lines, capturing its modern yet cultural essence. The photo frame board served as a sturdy base, allowing me to anchor the yarn securely and maintain the structure’s proportions. This textile-based drawing not only reflects the beauty of the Convention Centre but also demonstrates how traditional materials like yarn can be used in innovative ways to celebrate national landmarks. The result is a visually striking and textured artwork that blends craft and architecture in a meaningful and creative expression.
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¶
Category | Details |
---|---|
Microcontroller | Xiao ESP32-C3 |
Digital Input | Push-button switch connected to GPIO D10 with pull-up or pull-down resistor |
Outputs | - LEDs: Three SMD LEDs on D1, D2, D3 with current-limiting resistors - Buzzer: Piezo buzzer on GPIO D0 - Power: USB 5V supply |
Functional Behavior | - Short Press (Instant Release): • LEDs turn on/off or blink once • Buzzer emits a short beep (1kHz for 100ms) - Long Press (Hold 1+ sec): • LEDs fade or display a sequential pattern • Buzzer plays continuous tone until release |
Software Implementation | - Button Detection: • Uses digitalRead() with debounce logic (delay or capacitor) • Measures press time via millis() - LED Control: • digitalWrite() for basic on/off • analogWrite() for fading effects - Buzzer Feedback: • Activated using tone(pin, frequency) |
// Pin definitions
#define LDR 3 // A0 on Seeed XIAO ESP32-C3
#define BUTTON 4 // Digital input with pull-up
#define BLED 5 // Blue LED
#define GLED 6 // Green LED
#define RWHITE 7 // Red or White LED
#define BUZZER 8 // Buzzer
#define LWHITE 10 // Left White LED
// 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(LWHITE, 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(LWHITE, 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 incorporates a Light-Dependent Resistor (LDR) as an analog input device to sense changes in ambient light levels. This sensor allows the system to respond dynamically by adjusting both the brightness and the blinking speed of the LEDs. As light conditions change—becoming brighter or dimmer—the Xiao ESP32-C3 microcontroller continuously reads the analog values from the LDR. Based on these readings, it modifies the LED output in real time, making the lights dimmer or slower in bright environments and brighter or faster in low-light settings. This approach enhances energy efficiency and creates a more interactive and responsive lighting experience.
Hardware configuration¶
Component | Details |
---|---|
Microcontroller | Xiao ESP32-C3 |
Analog Input | LDR in a voltage divider circuit connected to an analog pin (e.g., A0) |
Outputs | - Three SMD LEDs on D1, D2, D3 with current-limiting resistors - Powered via USB 5V |
Functional Behavior | - Low Light (Dark): LEDs at high brightness with slow blinking - Moderate Light: LEDs at medium brightness with medium blink speed - Bright Light: LEDs at low brightness (or off) with 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
CODE¶
// Pin definitions
#define LDR 3 // A0 on Seeed XIAO ESP32-C3
#define BUTTON 4 // Digital input with pull-up
#define BLED 5 // Blue LED
#define GLED 6 // Green LED
#define RWHITE 7 // Red or White LED
#define BUZZER 8 // Buzzer
#define LWHITE 10 // Left White LED
// 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(LWHITE, 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(LWHITE, isNight ? HIGH : LOW);
// Buzzer ON only while button is pressed
digitalWrite(BUZZER, buttonState == LOW ? HIGH : LOW);
}
// Place for other non-blocking tasks
}
Analog sensor video¶
Conclusion
This week was very hard for me even though it should be soft, I didn't know how to approach the E-Textiles subject. The realizations are necessarily banal and the timing didn't allow me to explore more, to look for ideas and ways to propose a more personalized tour. I have more and more trouble with the weeks nested in each other. I feel like a computer that has too many programs running, my brain freezes and I find myself unable to get either one to go. Ending anything with the idea that we can come back to it is vicious: we never close the chapter, and we always think about it in the background. I don't know when I'll have time to reread the courses, go see other sites, other projects, digest everything.