Skip to content

10. Open Source Hardware - From Fibers to Fabric

Project overview

Video by Ray Formilli

A CNC (Computer Numerical Control) milling machine is designed for precision machining of solid materials, typically metal, wood, or plastic. It utilizes computer-controlled movements and rotary cutting tools to shape and cut the material into precise shapes and patterns. The primary function of a CNC milling machine is to remove material from a workpiece to achieve a desired shape, size, or finish. The machine follows programmed instructions, in the form of a G-code, to control the movements of the cutting tool in three or more axes. CNC milling machines are widely used in manufacturing and prototyping for their accuracy, repeatability, and efficiency in producing complex parts.

During Open Source Hardweek, the Amsterdam node repurposed a CNC milling machine into an avant-garde plotter for painting - an idea by Michelle Vossen. Through a clever hack, we transformed the machine's functionality by replacing the milling bit with a custom brush holder powered by Arduino. We experimented with diverse Rhino designs encoded in G-code. This transformation allowed for the exploration of a variety of brushes, varying in size and type, alongside an array of inks. The result is quite a cool experiment in art and innovation.

References & Inspiration

check out for Jiawen's documentaiton

    **credits: Jiawen for the amazing editorial work**

<center>
![](../images/WEEK10/F03E1824-6AD1-4D19-9374-D048A75864A5.JPG){ width=500 align=center }
</center>


<center>
![](../images/WEEK10/6B7BB4FF-3D10-4B42-B3A5-5D810C2FE358.JPG){ width=500 align=center }
</center>


**1ST Itiration**

Brush + Squeezer Bottle + ecoline ink on Paper

<center>
![](../images/WEEK10/PEPPER1.jpg){ width=500 align=center }
</center>

**2ND Itiration**

Brushes + Pipette + ecoline ink on Paper

<center>
![](../images/WEEK10/BRUSH1.jpg){ width=500 align=center }
</center>

**3RD Itiration**

Brushes + ecoline ink on Paper

<center>
![](../images/WEEK10/BRUSH2.jpg){ width=500 align=center }
</center>

<center>
![](../images/WEEK10/BRUSH3.jpg){ width=500 align=center }
</center>


**4th Itiration**

Molotow's on Paper

<center>
![](../images/WEEK10/MOLOTOW1.jpg){ width=500 align=center }
</center>


<center>
![](../images/WEEK10/MOLOTOW2.jpg){ width=500 align=center }
</center>


**5th Itiration**

Roller Sponge on Paper

<center>
![](../images/WEEK10/ROLLER1.jpg){ width=500 align=center }
</center>


**6th Itiration**

Sponges on Paper

<center>
![](../images/WEEK10/SPONGE1.jpg){ width=500 align=center }
</center>

<center>
![](../images/WEEK10/SPONGE2.jpg){ width=500 align=center }
</center>


<center>
![](../images/WEEK10/SPONGEBRUSH1.jpg){ width=500 align=center }
</center>
Fabric Prep

Materials Needed:

  • Cotton canvas
  • H2O
  • Acrylic white paint
  • Gesso (or chalk or calcium carbonate)
  • Paintbrushes
  • Palette or mixing tray

Procedure:

1: Clean the Canvas

2: Dilute Acrylic White Paint

3: Apply White Paint

4: Apply Gesso/Chalk/Calcium Carbonate Mixture

5: Let it Dry

**canvases used with primer**

describe what you see in this image describe what you see in this image

Tools and Materials

Electronics:

  • Arduino Uno (1)
  • Attiny85 (1)
  • Attiny85 dip socket (1)
  • Battery pack (1)
  • Breadboard (1)
  • Jumper wires (plenty)
  • AA battery (3)
  • Solder

Ink/Pigment: - Ecoline ink (various colors, plenty) - Sicotex screenprinting ink (various colors, plenty) - Acrylic paint (various colors, plenty)

Brushes and Tools:

  • Various brushes
  • Various sponges
  • Various molotovs
  • Pipets
  • Marker pens
  • Scraper
  • Squeegee

Surface Materials: - Paper (A2 size) - Cotton fabric with acrylic gesso primer - 120 gr copy paper (A3 size)

Software: - Arduino IDE (for programming Attiny45 for servo motor) - Rhinoceros (to prepare design files) - Grasshopper (to create custom shopbot code) - VCarve Pro (to prepare toolpath for the shopbot) - Shopbot Console (to communicate with the CNC machine)

Project Outcome:

The project aimed to push the boundaries of the CNC ShopBot machine, turning it into a tool for artistic expression. By combining precise CNC technology with creative design, the team expected the machine to draw, paint, and surprise them with unique and unexpected results.

Credit: Stephanie Johnson

Bill of Materials

- Things to think about when designing the hardware:

- Size (of brush / shape / thickness)

- Secure (tightly held in place)

- Pressure (does it need a gentle brush or a heavy sweep)

- Angle (straight down or adjustable angle)

- Movement (incorporated into hardware)

- Reservoir (included for ink etc built in)

- Weight (will weight be an issue?)

<div class="sketchfab-embed-wrapper"> <iframe title="Plotter_Attachment_Servo _i3" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" allow="autoplay; fullscreen; xr-spatial-tracking" xr-spatial-tracking execution-while-out-of-viewport execution-while-not-rendered web-share src="https://sketchfab.com/models/cae6f3ea8e8e4b49a05c0958ab128219/embed"> </iframe> <p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"> <a href="https://sketchfab.com/3d-models/plotter-attachment-servo--i3-cae6f3ea8e8e4b49a05c0958ab128219?utm_medium=embed&utm_campaign=share-popup&utm_content=cae6f3ea8e8e4b49a05c0958ab128219" target="_blank" rel="nofollow" style="font-weight: bold; color: #1CAAD9;"> Plotter_Attachment_Servo _i3 </a> by <a href="https://sketchfab.com/szjohnson?utm_medium=embed&utm_campaign=share-popup&utm_content=cae6f3ea8e8e4b49a05c0958ab128219" target="_blank" rel="nofollow" style="font-weight: bold; color: #1CAAD9;"> szjohnson </a> on <a href="https://sketchfab.com?utm_medium=embed&utm_campaign=share-popup&utm_content=cae6f3ea8e8e4b49a05c0958ab128219" target="_blank" rel="nofollow" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>

<div class="sketchfab-embed-wrapper"> <iframe title="Servo Brush Module V6" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" allow="autoplay; fullscreen; xr-spatial-tracking" xr-spatial-tracking execution-while-out-of-viewport execution-while-not-rendered web-share src="https://sketchfab.com/models/73ae238f19904dacbcf74f852686a3cd/embed"> </iframe> <p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;"> <a href="https://sketchfab.com/3d-models/servo-brush-module-v6-73ae238f19904dacbcf74f852686a3cd?utm_medium=embed&utm_campaign=share-popup&utm_content=73ae238f19904dacbcf74f852686a3cd" target="_blank" rel="nofollow" style="font-weight: bold; color: #1CAAD9;"> Servo Brush Module V6 </a> by <a href="https://sketchfab.com/szjohnson?utm_medium=embed&utm_campaign=share-popup&utm_content=73ae238f19904dacbcf74f852686a3cd" target="_blank" rel="nofollow" style="font-weight: bold; color: #1CAAD9;"> szjohnson </a> on <a href="https://sketchfab.com?utm_medium=embed&utm_campaign=share-popup&utm_content=73ae238f19904dacbcf74f852686a3cd" target="_blank" rel="nofollow" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p></div>

Process

A CNC (Computer Numerical Control) milling machine is crafted for accurate milling of solid materials, commonly metal, wood, or plastic. Rather than employing a drill bit, our concept involved affixing a painting device to the CNC.

The plan was to generate Rhino and G-code designs that the CNC would use to create drawings, paintings, or delightful surprises.

About the CNC

In Henk's tutorial on CNC milling machines, he emphasizes the importance of understanding and mitigating potential risks associated with their operation. These risks include the possibility of fire, such as when the milling bit encounters metal on the sacrificial layer, leading to sparks that can be directed into the ventilation system. Additionally, caution is advised to prevent accidents like hair getting caught in the milling bit or ensuring that hands and fingers are kept at a safe distance.

Before starting work, Henk recommends wearing safety glasses and ensuring the cleanliness of the machine's bed (sacrificial layer), with the removal of any nails or screws. Given that the CNC milling machine operates based on precise instructions, users are reminded to think through each step carefully and never leave the machine unattended during operation. Monitoring the machine's sounds is crucial as unusual noises may signal potential issues.

Henk provides practical safety measures, including the use of a space bar to pause milling, and a 'panic button' to shut down the machine in emergencies. Considering the high-speed rotation of the milling bit at 18,000 times per minute, users are urged to exercise caution and choose the appropriate milling bit for specific effects and limitations.

The tutorial covers the homing process for the machine in the x, y, and z axes, distinguishing between machine home and job home. Adjusting the milling bit's height (Z-axis) is highlighted, either using page up or page down commands or by entering values directly into the properties. Henk advises conducting a test run in the air before actual milling, saving the instructions as G-code, and subsequently loading the relevant part file for precise and controlled machining.

We divided the work into into various tasks and teamed up as such:

HACKING THE SHOPBOT presentation by Michelle

**Safety**

Brave hacker, whatever you do..

1. Don't start without Henk, Michelle or Asli
2. Always first z-level the machine
3. Don't turn on the spindle
4. Never leave the machine running
5. Clean up ink spills immediately (pause the machine)
6. If unsure, do a test run in the air
7. No material near the rails/gears of the machine
8. Keep it simple stupid (kiss)

M

Code Example

Use the three backticks to separate code.

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Fabrication files


  1. File: xxx 

  2. File: xxx 

  3. File: xxx