E-textiles¶
Research¶
Electronic textiles, or soft electronics, combine electronic components with fabrics, integrating circuits into flexible and malleable materials like textiles. These fabrics allow garments or textile surfaces to perform functions such as:
- Measuring temperature
- Monitoring heart rate
- Lighting up
- Interactive sensing
They are used in areas like fashion, medicine, sports, and art, connecting technology with traditional textiles. This field includes devices like sensors and actuators, embedded in a way that maintains the flexibility of the fabric while adding smart functionalities.
References & Inspiration¶
Amor Muñoz¶
Amor Muñoz blends traditional crafts like embroidery and knitting with technology and activism, creating works that explore labor, economy, and the role of women. Her projects, such as "Laboratorio de Conciencia Electrónica," use textile art to engage with social issues, particularly how manual labor intersects with technology.
Muñoz's craftivism emphasizes collaboration, and she often involves communities in the production process, drawing attention to overlooked forms of labor and inequality. Her art pushes boundaries by merging ancient techniques with modern societal critiques.
Claudia González¶
Claudia González Godoy is a Chilean artist and researcher who works at the intersection of art, design, and technology. Her project "Concertina: Máquinas de Papel" is an experimental electronic musical instrument built from paper, using conductive materials like:
- Conductive tapes
- Conductive inks
- Conductive threads
- Smart fabrics
This project merges the format of an artist's book with DIY sound electronics and paper engineering mechanisms. Developed during a residency at the Festival de la Imagen in Manizales, it showcases her innovative approach to combining traditional materials with electronic elements.
Tools and Materials¶
Materials List¶
General Components¶
- 5mm LEDs (x5)
- Jumper wires (male-male)
- Breadboard
- Resistors (220 kΩ)
- 5V Piezo Buzzer
- Tactile push buttons
- Arduino Uno
- Seeed Studio XIAO RP2040
Textile Materials¶
- Conductive fabric (e.g., EeonTex, Shieldex)
- Non-conductive fabric (cotton, denim, felt)
- Copper conductive tape
- Fabric glue or double-sided adhesive
- Iron-on interfacing (optional for stability)
- Sewing thread and needle (for manual connections)
Tools¶
- Scissors
- Multimeter
- Soldering iron (for wire prep if needed)
- Ruler or measuring tape
- Computer with Arduino IDE installed
Hardware¶
Software¶
Resources¶
Process and Workflow¶
Testing the Seeed Studio XIAO RP2040¶
The Seeed Studio Seeeduino XIAO RP2040 is a compact, low-cost development board powered by the Raspberry Pi RP2040 chip. Key specifications:
- Dual-core ARM Cortex-M0+ processors
- 264KB SRAM
- 2MB onboard Flash memory
- Compact form factor (21mm x 17.5mm)
- USB-C for power and data
- Multiple I/O options (digital and analog pins)
This board is ideal for wearable tech, DIY electronics projects, and IoT applications due to its size, flexibility, and powerful performance.
NeoPixel Programming Test¶
I tested the Seeed Studio Seeeduino XIAO RP2040 to program the internal NeoPixel and control multiple pixels by color. The process included:
- Schematic design in Fritzing
- Programming in Arduino IDE
- Testing with yellow and purple colors using RGB color scale
The XIAO RP2040 allowed efficient manipulation of NeoPixels' colors, combining compact size with flexible and adaptable programming.
Code Example - NeoPixel Control¶
#include <Adafruit_NeoPixel.h>
int Power = 11;
int PIN = 12;
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
pinMode(Power,OUTPUT);
digitalWrite(Power, HIGH);
}
void loop() {
pixels.clear();
pixels.setPixelColor(0, pixels.Color(255, 255, 0)); // yellow
delay(1000);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(255, 0, 255)); // purple
delay(1000);
pixels.show();
pixels.clear();
delay(1000);
}
Fabric Button Testing¶
Parallel Circuit Design¶
The second part of the project involved testing different types of fabric buttons. I built a parallel circuit using:
- Five LEDs
- Various conductive materials
- Non-conductive textiles
Each button acted as a switch to light the LEDs when pressed, allowing exploration of how different fabrics perform in electronic applications.
Button Types Tested¶
1. Digital Push Buttons¶
2. Analog Electrical Buttons¶
3. Copper Conductive Tape Buttons¶
Testing Results¶
Textile Piano Interface¶
1. Initial Arduino Uno Version¶
I created an Arduino Uno piano using:
- Arduino Uno microcontroller
- Buzzer (5V)
- Tactile push buttons
- 220 kOhm resistors
This design lets me play seven different tunes. It's beginner-friendly, great for learning electronics and programming.
Component List¶
- Arduino Uno
- Buzzer 5V
- Tactile Switches
- Resistors 220 kΩ
- Jumper Wires
Circuit Connections¶
- Button → Pin 4
- Button → Pin 5
- Button → Pin 6
- Button → Pin 7
- Button → Pin 8
- Button → Pin 9
- Button → Pin 10
- Buzzer → Pin 3
2. Textile Version with Seeeduino XIAO RP2040¶
I upgraded to Seeed Studio XIAO RP2040 and created a fabric-based interface, maintaining piano functionality in a flexible, wearable format.
Enhanced Components¶
- Seeeduino XIAO RP2040
- Copper conductive tape
- Fabric base
- Buzzer 5V
- Analog buttons
- Resistors 220 kΩ
Construction Process¶
Step 1: Drew the schematic on the fabric and marked paths with copper tape.
Step 2: Indicated polarity and overlap zones.
Step 3: Routed sensitive lines underneath to avoid short circuits.
This careful layout ensured a safe and functional design while keeping the circuit flexible.
Code Example – Textile Piano¶
``` int but1 = D4; int but2 = D5; int but3 = D7; int but4 = D8; int but5 = D9; int buzzer = D6;
void setup() { pinMode(but1, INPUT); pinMode(but2, INPUT); pinMode(but3, INPUT); pinMode(but4, INPUT); pinMode(but5, INPUT); pinMode(buzzer, OUTPUT); }
void loop() { int b1 = digitalRead(but1); int b2 = digitalRead(but2); int b3 = digitalRead(but3); int b4 = digitalRead(but4); int b5 = digitalRead(but5);
if (b1 == 1) tone(buzzer, 200, 100); if (b2 == 1) tone(buzzer, 400, 100); if (b3 == 1) tone(buzzer, 500, 100); if (b4 == 1) tone(buzzer, 600, 100); if (b5 == 1) tone(buzzer, 700, 100);
delay(10); }