7. Open Source hardware: from fibers to fabric

This week was targeted to explore the open source machines in textiles industry and how can digital fabrication be used to update machines producing textiles.

Assignment of the Week

To research and document existing fabrication methods, machines and industries. Then to design or hack a machine using the different digital fabrication techniques.


There are different techniques for fabric production including: - Knitting - Weaving - Non Woven - Braiding - etc

I reviewed a very interesting chapter of Textiles and Clothing book called Fabric Construction. Very interesting fact about fabric production using weaving or knitting is very interesting especially that different patterns can be generated by simply changing the direction or the angle of weaving or knitting.

All of old techniques are dealing with 2D fabrics. However, now with the advancement of 3D modeling, printing and fabrication, some other new technologies are emerging. 3D Fabrics for Technical Textile Applications is a very interesting research paper explaining the details of 2D and 3D fabric production. 3D weaving is a very interesting topic now and it is used in different applications (refer to the Link).

The Used Equipment, Tools and Software

  • Laser cutting machine
  • Clear acrylic (6mm)
  • Cardboard (4mm)
  • Long wooden dowels(diameter 8mm)
  • Small screws and nuts
  • Colored yarn threads
  • Laser Cut (5.3) software
  • Rhinoceros software

Project #1: Making a Mini Loom Tool

Looming or weaving is one of the very first techniques developed by humans to make fabrics. During the 1800s a mechanized loom machine named "Power Loom" was invented, this was one of the elements representing the industrial revolution in textile industry. In the 20th Century, looming machines have been developed to be more automated, faster and computer controlled as well.

Even though looming machines have been developed completely through history, the concept of looming or weaving stays the same which is mainly to pass fibers vertically and to weave other fibers horizontally accross them as the following gif demonistrates.

The vertical fixed fibers are called "Weft" and the horizontal woven fibers are called "Warp".

Working on this project was very interesting and a bit challenging although it was quite simple! I worked with Rabab and Rooda :) First, I started by implemnting simple open source design made by FABfiber for a Mini Loom Machine to understand the concept. The design was very simple and all steps were well explained. I downloded the design and opened it on Rhinoceros to obtain the DXF format and then followed the steps in the manual.

  • First Prototype:

Since I am experimenting the fabrication process, I have started by cutting the machine parts using cardboard as it is cheap material. Using the Laser Cut software, I have prepared the laser file after setting the laser power at 100% and speed at 40% for cutting cardboard.

Laser cutting the parts using cardboard of 4mm.

The machines parts after cutting.

Assembly of the parts according to the manual

After that, it was quite challenging to figure out how to connect the yarns in the vertical direction with the best tension to guarantee the best result at the end.

Then we started weaving the other yarn in the horizontal direction using a wooden peice with the yarn attach to it.

The final result was very satisfying :)

  • Final Prototype:

After testing the concept of the mini loom using the cardboard prototype, we decided to make a proper strong and nice looking machine using 6mm clear acrylic. We have modified the design of the parts and we have added a comb to ease weaving. Using the Laser Cut software, we have set the laser speed to be 5% and the laser power to be 100% as shown below. Secondly, we gave higher priority to the inner cuts (holes) to be cut by the machine first and then the outer curves of the parts. This was done by simply changing the color of all inner cuts to red and leaving the outer curves in balck and then to make the red curves "Up" at the menu of cutting traces.

Using the laser machine to cut the machine parts.

Finally, the parts are ready for assembly.

The assembly the machine parts.

Finally the machine is ready to use.

We started weaving with baby pink yarn and then two colored yarn.

The last step was to cut the woven peice from the machine and to tie all the yarn from the two sides.

  • Modified Design: Bracelet

I have modified the design by adding a soft circuit (Refer to the LINK for more details about soft circuits) consisting of three LEDs, battery and a snap switch to tie the bracelet.

To establish the connections, I have used conductive thread and to make the connection traces I have used conductive nylon tape as shown below.

Testing the bracelet by closing the snap button.

As a final step before wearing the bracelet, the traces and battery should be covered with a soft layer of felt to secure the connections and to have a safe wearable.

  • Weaving the Conductive Thread/ Material

I was trying to weave using the conductive thread in order to create the connections for the soft circuit. However, this was quite challenging to guarantee zero short circuit for any generic circuit. Based on my imagination and analysis, I believe 3D weaving can be a better option for that! This reminded my of the structure of MOSFETs in electronics when represented as a stick diagram with multi-layers isolated form one another.

Weaving with conductive thread can be used as a soft capacitive touch sensor!! Will experement this in the second wearable class :)

  • Future Improvements

For improvemnt of the design, the machine can be made automated by imbedding motors into the design and to add mechanical parts such as bearings, belts and rails. The following video shows very interesting automated weaving machine using LEGO NXT peices with a very nice mechanism.

Project #2: Hacking the Knitting Machine

In the lab we have Addi Express knitting machine. I find it very interesting machine to explore and to play with.

First, I started learning how to use it referring to the tutorials here and the following video.

I made a first test but it did not turn out sucessfuly as I did not maintain the speed while turning the handle for rotation.

Thus, I thought of hacking the machine and to develop an automated arm that will allow the user to control the speed and direction of rotation. I referred to the documentation from Saverio Silli as a reference to hack a knitting machine.

  • Building the circuit

I have used a stepper motor Nema 34 with L298N Motor Driver. I have reffered to this tutorial explains how to interface the stepper motor and the motor driver with Arduino. It was important to understand how the motor coils are connected to the terminal wires to understand how it should be wired with the motor driver. Avoid wiring the same coil to itself (i.e. Two terminal of one coil connected together) as it will cause short circuit!!

I have connected the Arduino to the stepper motor and the driver as follows. The following figure represents the connections using fritzing.

The two push buttons are controlling the direction of rotation of the stepper motor. While the potentiometer controls the speed of the motor by changing the resistance. I am using two buttons as this knitting machine needs to change the direction of rotation whenever the black needles are crossing the counter. This allows the machine to count the number of turns and to do circular knitting. However, if the machine is set to regular plain knitting option, only one button will be enough to rotate the machine.

  • Preparing the code
const int maxspeed = 400; //maximum speed of the motor
const int CW = 4; // initializing the push button that controls clockwise rotation
const int CCW = 7; // initializing the push button that controls counter clockwise rotation

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;  // number of steps the motor has taken

void setup() {
  // defining the two push buttons as input devices
  pinMode (CW, INPUT);
  pinMode (CCW, INPUT);


void loop() {

   int sensorReading = analogRead(A0); // reading the value of resistance from the potentiometer dial   // set the motor speed

  // map it to a range from 0 to maxspeed (you can increase the maximum speed):
  int motorSpeed = map(sensorReading, 0, 1023, 0, maxspeed);

 if (digitalRead(CW) == LOW && digitalRead(CCW)== LOW){ // if the two push buttons are not pressed nothing will happen

    if (digitalRead(CW) == HIGH && digitalRead(CCW)== LOW){ // if the clockwise push button is pressed and the counter clockwise push button is not pressed the motor will turn in the clockwise direction
    if (motorSpeed > 0) {
    delayMicroseconds(100); // pause time after per steps 100u seconds = 0.1 mili seconds 
   else if(digitalRead(CW) == LOW && digitalRead(CCW)== HIGH){ // if the clockwise push button is not pressed and the counter clockwise push button is pressed the motor will turn in the counter clockwise direction

    if (motorSpeed > 0) {
    delayMicroseconds(100); // pause time after per steps 100u seconds = 0.1 mili seconds
  • Testing the circuit

  • Hacking the machine

I have used Rhinoceros to design the interface piece connecting the gear to the stepper motor.

I have printed the part and it came out nicely fitting the gear and the motor shaft.

  • PCB Design

I designed a small PCB using Eagle to have reliable connections.

I have designed everything to be powered from the +12V DC supply through power jack.

One thing that I did not pay attention to when designing the Eagle board was the connection of the power jack. The following figure illustrates how to check the polarity of the leads of the power jack.

This step is very important to be done before milling during the design stage!! Remember if the power is flipped there will be short circuit!!

As I realized the polarity after milling my PCB, I did not want to redesign and re-mill my board again so I decided to connect wires to the right and left sides leads then I connected them to the PCB with a flipped orientation.

Final PCB after assembly =]

I have powered the PCB using a 12V cable with jack at the end and it was working perfectly. Now it's time to embed the system into the machine >__<

  • Embedding the circuit into the machine

To embed the circuit into the machine, the motor needs to be fixed properly with the body of the machine. To do so, I designed a simple 2D design for a stand using Rhinoceros and I cut it with laser machine. The stand will hold the stepper and fix it along with the machine body.

Then I cut the parts using the laser cutter and finally assembled all parts together.

  • Testing the Machine

Design Files

Please check the Drive folder for the 2D, 3D design files and PCB design files.