Week 14: Final Review

Here are a sampling of images from the Creative Architecture Machines final review held at the CCA in San Francisco on Dec 5, 2015. 

Photo Dec 05, 3 30 25 PM_JeffMaeshiro.jpg
BEST IMG_2426_JeffMaeshiro.JPG
Photo Dec 05, 4 12 11 PM_JeffMaeshiro.jpg

Week 07: Diving in and using the Serpentine 2.0

The Serpentine 2.0 3d Printer's first 3d concrete print on 10/9/2015 at CCA San Francisco.

The Serpentine 2.0 3d Printer's first 3d concrete print on 10/9/2015 at CCA San Francisco.


The Serpentine 2.0 is shared resource for the Creative Architecture Machines studio. You should treat it like a new puppy (He is cute, cuddly and fun, but also prone to accidents and running into the street!). If you see a small problem with the machine – for instance if something comes loose - please try to fix it. If something is very wrong – for instance if you see or smell smoke – please warn your colleagues by posting a sign and sending out a group email!

Posting images: Share the daily trials and tribulations of the studio to social media sites like Instagram, Facebook, Twitter etc. If you do so please use the hashtags:

#creativearchmachines #cca #digitalcraftlab 

You should always do your best to credit folks and ask permission if you are posting images of people’s faces. 

Step 01. Safety in numbers - A Team of Two

The machine must be operated by at least 2 people at all times (One person to monitor the computer and send G-Code; the other person is closely monitoring the machine’s operation). Both people should wear protective goggles and gloves if necessary. Both people should understand what the machine is about to do and understand when something is going wrong. Establish your team first, then move on to the next step. 

Step 02. Take Charge

Let everyone around you know that you are about to use the machine. When you are in charge of the machine you must keep your eye on the machine’s operation, but more importantly, you must ensure that nobody “crosses the yellow CAUTION line” with their hands, cameras, or by leaning in. The yellow line must not be crossed while the machine is operating. You should also use the cheap yellow caution tape to tie-off an area that might not be safe.  

Step 03. Physical Obstruction Check

Always walk around the machine before you use it. Look for anything that might be obstructing the machine. Are the tracks free and clear? Is anything crooked or seems strange? Are the Emergency Stops dis-engaged, visible and ready to use? After you have plugged in and turned it on you should double check that the micro-controller fan is on and that it’s the power light is on too.

Step 04. Manual Collision Check

Before homing the machine make sure that your machine’s custom “end-effector” (aka print head and material augur and/or container) does not collide with the limits of the machine. You can manually (by hand) move the gantry in the positive and negative X,Y,Z directions to ensure no collisions will take place. If you realize there may be a collision you should manually adjust the limit switches with an M5 screw driver. The limit switches will stop the machine from crashing into itself!

Important Note: If you change the location of the limit switches then it is critical that you update you digital model!

Step 05. Digital Model Obstruction Check and G-Code Validation

Does the digital model match the size and orientation of the physical machine and location of its limit switches? Are all X and Y G-Code values positive (greater than or equal to zero)? Are all Z G-Code values negative (less than or equal to zero)? When you scan down through the G-Code – does it seem logical? Where will your print start and end?

Hint: In Grasshopper – use the Bounding Box (BBox) command to generate a bounding box around your final intended toolpath / 3d piped extrusions. Does the size of this bounding box exceed the limits of the machine?

Step 06. Drivers and Software

Please see this short blog post that covers installing the FTDI Drivers to communicate with the TinyG microcontroller; installing and configuring CoolTerm to send G-Code to the TinyG over your serial post (USB). You need to do this before moving forward!!

Hint: Open CoolTerm first, then plug the TinyG’s USB cable into your laptop. CoolTerm will identify the COM Port assigned to the TinyG in the lower left of the window. You then manually press “Connect” to initiate communication and begin sending G-Code to the machine! 

Step 07. G-Code + Homing the Machine

A great TinyG G-code cheat sheet is here. Always start with the G28.2 command to send the machine’s “end-effector” (aka print head) to it home base. Homing sends the machine to it’s Z Min, X Min and Y Min locations (in that order) by triggering the limit switches. You should always be ready to hit the Emergency Stop button during this process. You should also manually double check that your custom end-effector will not collide with anything. To start the homing process you just cut and paste G28.2 code into the CoolTerm terminal. Your personal reminder notes (in brackets) do not get sent to the micro-controller.

G28.2 X0 Y0 Z0 (Home XYZ axis)

Note: The machine has been coded to offset the home 2cm from the X Min and Y Min limit switches, and 1cm above the Z Min Switch. This ensures that the gantry has backed-off the limit switches so we can begin operation.

Homing just one axis: Sometimes you may want to home just one or two at a time.

For Example:
G28.2 X0 (Home just the X axis)
G28.2 X0 Y0 (Home both the X and Y axis)
G28.2 Z0 (Home just the Z axis)

Step 08. Setting Absolute Origin at current “homed” location:

Next we need to tell the micro-controller that its current position is 0,0,0. Type this into the terminal and hit “Enter”. 

G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

Now – if everything was done correctly - the current position of the end-effector is 0,0,0 and this should now match up with 0,0,0 in your Rhino / Grasshopper model space.

Step 09. Rhino / Grasshopper Units

For now the X and Y axis G-Code should be in CM (centimeters), while the Z axis is using MM (millimeters). The X and Y units should always be positive, while the Z units will be negative numbers. (We may change this in the future.)

Step 10. Preparing the Printbed

Do not print directly onto the larger provided print bed! I recommend that each team use a ¼” or 1/2“ piece of plywood wrapped in plastic as your print bed. Please feel free to experiment with heating the area around the print to speed up drying times.

Step 11. G1 Traverse with Feedrate Commands

For now we’ll be sending our end-effector from point-to-point-to-point using XYZ coordinates. A G1 command is the most common command in G-Code.

Here is an example that will move the gantry orthogonally:
G28.2 X0 Y0 Z0 (Home XYZ axis)
G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

G1 X10 Y0 Z0 F100 (Go straight to X10 at a speed of 100)
G1 X0 Y10 Z0 F200 (Go straight across to Y10 at a speed of 200)
G1 X0 Y0 Z-100 F100 (Go up 1cm at a speed of 100)
G1 X0 Y0 Z0 F50 (Cut diagonally across back to 0,0,0 at a slow speed of 50)

Here is an example that will move the gantry diagonally / directly to the point:
G28.2 X0 Y0 Z0 (Home XYZ axis)
G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

G1 X10 Y10 Z-100 F100 (Go to X10, Y10 and Z-100 at a speed of 100)
G1 X0 Y0 Z0 F50 (Cut diagonally across back to 0,0,0 at a slow speed of 50)

Step 12. Calibrating the Feedrate (F)

It takes a lot of trial and error to set the correct Feedrate. Each unique material and extrusion (augur) speed will demand its own unique Feedrate. Starting with a Feedrate of 200 (F200) is a good start point. I recommend that you print a few 20cm lines – back and forth on top of itself at least 4 times – to figure this out. You can also vary the Feedrate from the start to the finish. A slow Feedrate will release more material, while a faster Feedrate will release less material. For example almost all structures found in plants, animals and most (good) buildings vary the size and thickness of their components depending on their compressive, tensile or bending performance needs.  

Step 13. Match the Z step height in Grasshopper with the extruded material height

Similar to calibrating the Feedrate, it takes a lot of trial and error to find the correct Z step height of your extrusions (this is essentially the height between layers). I suggest running the Feedrate test and Z Step height test at the same time. To establish the Z step layer height measure the height of the 4 layers you printed and divide that number by 4 to get your step size. There are fancier ways to do this but this should be good enough for our low resolution architectural scale 3d prints.

Hint: To complicate matters further, most materials will shrink by a small percentage (sometimes as much as 5-10%!) as they dry (lose water). This can be simulated to a certain degree by using the Scale component in Grasshopper. Each material will shrink at a unique rate and %. Keep this in mind when you are doing multi-material prints, or you need your 3d print to interface or connect with other materials, objects or fasteners.

Step 14. Pause all motion for a few seconds

You may want to pause (also called “Dwell”) the machine to turn on an end-effector (extruder) or make last minute adjustments. The G4 commands makes this possible.

Here is an example of a 20 second pause in the middle of a move:  
G28.2 X0 Y0 Z0 (Home XYZ axis)
G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

G1 X15 Y0 Z0 F150 (Go straight to X15 at a speed of 150)
G4 P20 (Pause / dwell the gantry for 20 seconds)
G1 X0 Y0 Z0 F50 (Return home to 0,0,0)

Step 15. Thinking ahead to the end of a print

When you are done your print you’ll want to move the extruder head away from your printed artifact in a rapid and controlled manner. Your last move might be a smooth rapid traverse line 4-5 inches away from your object. A lot of times you’ll drawing a tangent line up and away from your object – to open space - with 2X your current Feedrate. This final move will also make it easy to identify and turn off your attached extruder / augur.   

Hint: Your final move should NOT be to send the machines diagonally back to 0,0,0, or to Home the machine!

Step 16. Shared Clean-up

This is a group project. Everyone must help cleanup after a 3d print. Nothing should ever be unnecessarily left on the print bed, on the common tables, or in the circulation spaces. The space should always to clean and ready for the next team to print, for classes to meet, or for visitors to walk through.

What else did we miss? Send me an email to add/subtract/clarify or make suggestions! jason@future-cities-lab.net  and mshiloh@cca.edu

serpentine 3d printer creative architecure machines cca 10102015 -2.jpg


Week 06: Grasshopper Skill Building


0. Many good Grasshopper Tutorials are here. I recommend the GH Primer by Andy Payne and ModeLab (especially the section on Lists). 
1. Firefly:
2. Silkworm G-Code generator: http://www.food4rhino.com/project/silkworm?ufh
Article about Silkworm: http://beforeitsnews.com/science-and-technology/2014/09/project-silkworm-translates-rhino-and-grasshopper-geometry-into-g-code-for-3d-printing-2722432.html
3. Kangaroo Physics Simulation: http://www.food4rhino.com/project/kangaroo?ufh
4. Creating 3d Mesh Lattices: http://www.food4rhino.com/project/intralattice?ufh&etx

Silkworm generated G-code

Silkworm generated G-code

Week 05: TinyG Stepper Controller & Gantry Hardware Basics

This is a quick-start summary of the steps you must first take to begin using the Serpentine 2.0 machines. You need to follow each step:

1. TINYG: We'll be using the TinyG Stepper Motor Controller available from Synthetos which can drive 4 stepper motors, digital inputs and a fan. Check out the helpful TinyG "Getting Started" Wiki here

2. DRIVERS: Before your laptop will recognize the TinyG you may need to download and install the "FTDI Virtual COM Port Drivers": 

3. DIAGRAM: Use the diagram to the left to familiarize yourself with the layout of the board. The TinyG is a stand-alone industrial grade controller with an on-board CPU and handy screw terminal to connect motors, limit switches and a fan. Similar to an Arduino we'll be connecting the TinyG to our computers through a USB.  

4a. COOLTERM: To setup the TinyG correctly we'll need to use a program called CoolTerm to send and receive messages, and modify the board's settings. The TinyG Wiki covers how to use CoolTerm to communicate with the TinyG controller board. Using the CoolTerm terminal command line we can access and update the TinyG's core settings (feedrates, switch types, units, etc) and also send G-code directly to the board.

4b COOLTERM SETTINGS: Once CoolTerm is open, click OPTIONS and make sure you have it setup exactly like this. Save a copy of these setting to your Desktop to reuse later.  

5. G-CODE: We'll be sending the TinyG G-Code using either CoolTerm or directly using Grasshopper + Firefly Serial Write composnent . Here is a list of all the G-Code that we can send to the TinyG

Here is some sample G-code (This can be cut+paste into CoolTerm terminal or sent over serial using Firefly. Words in brackets are notes and will not be uploaded):

G28.2 X0 Y0 Z0 (Homing - go as far left as possible and stop)
G28.3 X
0 Y0 Z0 (Set current position to be absolute 0)
G1 X10 Y10 Z10 F16000 (Go to +100 mm at the max feedrate of 16000)

G1 X0 Y0 Z0 F2000 (Return to 0,0,0 at a feedrate of 2000)

To move the 4th motor "A" (for custom tools, extruders, grippers, etc) you type the following into CoolTerm's command line :
G0 X0 Y0 Z0 A100 F150
or on a separate line you can add a feed rate specific to your custom tool.
G0 A100 F150

7. MACHINE HARDWARE: Our gantry is made out of a combination of aluminum extrusions and components found here. We are using both 20mm X 40mm extrusions and our slides run along these Makerslides. Our current Z axis setup use Type 316 Stainless Steel Threaded Rod (M8 Thread, 1.25mm Pitch) from McMaster Carr.

8. CALIBRATING THE MACHINE: Since we will be constantly evolving and modifying our machine it is important that we know how to calibrate things. The machines should run smoothly and the micro-controllers and motors shouldn't generarate too much heat. Here are some good links: Calibrating and squaring the machine; Tuning the machine; Tuning the Tiny-G motor settings through software; Fine tuning homing and limit switches.

9. EMERGENCY STOPS: There are two reset / emergency stops (E-stops) on either side of the machine. Use these to stop the machine in its tracks.  

Week 04: Phase 2 - Diving Deep

During Phase 2 (Fri 9/25 - Fri 10/9) we'll work in the following small groups to dive deep into the topics outlined below: 

Hardware Team
- R&D 1: two people R&D Extruder Type A (Motor Driven?)
- R&D 2: two people R&D Extruder Type B (Pneumatic extrusion?) 

Gantry Team
- R&D 3: one or two people R&D on modeling, assembling and running next 3d printing machines at larger Phase 3 machine.

Material Team
- R&D 4: two people R&D Material 1 (Concrete + something) and two people R&D Material 2 (Biomaterial + something)

Software Team
- R&D 5: four people R&D on 3d printing Cellular Structures with Grassshopper including visualizing wall studies and small dwellings. 

MID-REVIEW: On Friday 10/9 we'll have a mid-review with outside reviewers. The goal is to present the following:

  1. Live Demonstration of 3d printer
  2. Multiple final (dried) 6' x 1' tall 3d printed prototypes
  3. Digital drawings of wall prototypes and multiple possible versions
  4. Digital drawings of potential dwelling units for final phase including budget and schedule estimations. 
  5. Digital drawings of large scale gantry including budget and schedule estimations. 

For Wednesday 9/30 - To be presented in Studio using 11x17 PDF Digital Format:

R&D 1: Hardware (Joseph and Sam)
R&D 2: Hardware (Gloria and Arash)
R&D 3: Gantry (Eva) 

- share results of weekend research with 5 others (everything should be formatted onto 11x17's)
- ensure that V2 research trajectories are unique but with some productive crossovers

- R&D 1+2: Precedent Research - research four precedent examples (one per person) of end-effectors that are related to what you are interested in doing. How were they made and controlled? What could they do or not do?
- R&D 1+2: Proposal - prepare 3d drawings of proposed V2 end effector. Indicated extruder, passage and hopper.  
- R&D 3: Precedent Research - research other large scale gantry 3d printers world wide. Please prepare an analysis. What is the largest 3d printer in California? How big would ours need to be? Can you make a diagram that helps us understand scale and possibilities? Are there other examples that might inform our process?


R&D 4: Materials 1 & 2 (Skye, Kyle, Armughan, with Mrnalini)

- share results of weekend research with 4 others (everything should be formatted onto 11x17's)
- ensure that research trajectories are unique but with some productive crossovers

- R&D 4: Precedent Research - research four precedent examples (one per person) that interest you and will inform your process. How were they printed and created? What was their purpose? What are their possibilities? Map out their cost and availability to SF?
- R&D 4: Proposal - prepare recipe and begin systematic material extrusion research.


R&D 5: Software (Franca, Terry, Wut, with Sitou)

- share results of weekend research with 4 others (everything should be formatted onto 11x17's)
- ensure that research trajectories are unique but with some productive crossovers

- R&D 5: Precedent Research - research four precedent examples (one per person) that interest you and will inform your process. These should be examples from fashion, industrial design, architecture an allied field. How did these precedent explore the idea of stranded or cellular architectures? 
- R&D 5: Dwelling Precedent Research - research four precedent examples (one per person) that look at small dwellings or habitats at the scale of a human body.
- R&D 5: Proposal - Work in pairs to develop 2-3 proposals for 3d printed small dwellings. These should be created in Grasshopper with a focus on developing tool paths for our extruders to follow. 


As a departure point we will create small 3d additive drawing machines:

PART 1: You will be assigned 2 of these materials to explore thoroughly: Salt, Sugar, Sand, Plaster, Concrete, Plastic, Hot Glue, Clay, Wood, Bio-product, Silicone, Bread / dough. Explore your materials texture, weight, strength, capacity to be extruded or stacked, taste, smell, capacity to transmit light or other energies, other aspects of interest. Document all aspects of your  experiments. What are the potential ways we might use this material? What are its creative potentials?

Due Friday 9/11 > Format four 11x17 sheets documenting your explorations. Pin these up in studio for discussion, have materials on hand. *Store artifacts in cheap clear 16-oz Mason's jars.  

PART 2: Work with a partner to invent two simple 3d Additive Drawing Machines and techniques for depositing your two chosen materials. The two machines must be capable of a controlled deposition and must consider things like material viscosity, thickness, temperature, pattern, among other considerations. Your machine may be fed by gravity, manual low-tech and/or active creative techniques. Integrate gears, pulleys, motors, nozzles, as needed. Isolate your experiments to a modest 11x17 footprint.  

Version 01 due Monday 9/14 > Format four 11x17 sheets documenting your explorations. Pin these up in studio for discussion, have materials on hand for a demo.   

Coming up --- PART 3: We will be setting up a simple 1D linear actuator gantry in studio. You will work with a partner to create a singe amazing machine (also known as an "extruder" or a "robot end effector") to attach to this gantry.  You should expect that the gantry will only move repetitively back and forth in for up to 5 minutes per project. We will explore the speed, acceleration and duration of this motion using Firefly.   


You will work in a team of two to complete the following research on one of the topics below. The following should be collected into a single InDesign Document using a common 11x17 landscape template (will be provided).

Due Wednesday 9/16 > Format four 11x17 sheets documenting your explorations.

  • Hardware 1: Chart existing 3d Printer types from micro to macro scale (analyze and rank - size, material, other factors, everyday to exotic, etc)
  • Hardware 2: Explore how machines are being used in innovative ways to create big objects
  • Software 1: Chart existing 3d Printer software types (analyze and rank - everyday to exotic, etc)
  • Software 2: Explore how software is being used in innovative ways to engineer materials, guide tools, embed generative or biological models, etc.   
  • Material 3: Chart existing materials being 3d printed (analyze and rank - sustainability, accessibility, cost, strength to weight, everyday to exotic, etc) 
  • Material 3: Explore local or waste stream potentials that could be utilized in an innovative way or re-engineered to our benefit. 

Week 01: Introductions and Tutorials

Intro to Arduino + Electronics

  1. Arduino software and Arduino Uno micro-controller anatomy lesson. Here is a link to the Arduino tutorial that Michael referenced during his Arduino workshop.
  2. Day 1: Uploading a program > blink an LED!
  3. Day 1: Creating basic circuits and controlling / reading them
  4. Day 2: Motor basics (Servo motors, Potentiometers (for control), and Stepper motors)

Intro to Grasshopper + Firefly

  1. Grasshopper 101
  2. Firefly 101 and the Firefly User's Guide
  3. Connecting Firefly to basic circuits and controlling / reading them
  4. Motor basics (Servos, DC Motors, Stepper Motors)
  5. Sensor basics (buttons, sliders + dimmers, light sensors) 

Fall 2015 Syllabus

CAM /// Creative Architecture Machines


Fall 2015 – CCA Advanced Architecture Studio: BArch 507-02 / MArch 607-02
Instructors: Jason Kelly Johnson (jjohnson2@cca.edu) with Michael Shiloh (mshiloh@cca.edu)
Google+: #CreativeArchitectureMachines Twitter & Instagram: #creativearchmachines

Since the late 1990’s architects have typically used commercial CAD software to feed CAM programs to feed CNC machines. These “computer-aided” processes and “numerically-controlled” machines are most often used to increase efficiency and make the design, prototyping and fabrication processes more routine, faster and cheaper. In architecture and design schools around the world students are increasingly being taught to use standard suites of software and industrial hardware technologies such as laser cutters, robotic mills and 3d printers as ways to precisely model the formal and geometric aspects of their designs. Yet these fabrication technologies are rarely interrogated or explored in a critical or creative fashion. Why is it that architects are taught to be mere users of technology rather than innovators? Why are the core creative tools of our profession designed by systems engineers? What creative potential exists at the heart of these machines, where bits intermix with atoms, where digital code meets material logic? 

This studio will embrace a more radical approach to the design and fabrication of architecture. The main ambition of the studio is to explore the efficacy of digital processes and their potential to contribute to a wider conversation about architecture, technology and culture. Through the production of experimental and speculative fabrication machines we will endeavor to contribute to a wider debate within architecture about the role architects might play in a coming world where the lines between the digital and the physical are rapidly being blurred beyond recognition.

During the Fall 2015 semester the Creative Architecture Machines studio will investigate the intersections of dwelling architecture with experimental additive manufacturing technologies using earthen materials. In recent years 3d printing has grown exponentially from a fringe technology to an important tool at the heart of many emerging creative and technical practices. This is being accelerated by a dramatic decrease in software and hardware costs, in addition to a growing community of contributors sharing open-source knowledge about techniques, materials and best practices. While much of the 3d printing research and development is occurring at the product scale, there is growing interest exploring the possibilities at the scale of walls, buildings or landscapes. This semester studio participants will work collaboratively to explore this latent territory through research, design and ultimately building working architectural-scale 3d printing machines. 

Participants will explore these ideas through the iterative prototyping of actual living, breathing, working technologies. In Phase 01 of the semester students will create two-dimensional (X,Y) robotic “drawing machines” that respond to indeterminate inputs (sun, wind, sound, etc.) from their environment to create novel drawings, paintings, drippings, etchings, compositions in light and pixels. In Phase 02 students will create four-dimensional (X, Y, Z plus time) machines for the production of a radical new class of domestic dwelling unit. During this phase students will create fabrication machines “end effectors” that will work in tandem with a larger gantry system that will be installed in studio and eventually in the CCA backlot. Students will work back and forth between processes of design, prototyping, playing, hacking, coding, learning and feedback.      

The work of the studio will be situated at the intersection of architecture, robotics engineering and DIY hacker culture. We will also explore how allied design fields, such as those inventing new robotic devices, military systems, prosthetic engineering, high-tech clothing, furniture, lighting, automobiles, and more, are latent with new material, spatial and ecological possibilities. The studio will be extremely “hands-on” and will ask students to work iteratively and inventively through modes of digital and analog modeling, simulation, fabrication and performance testing. Structured technical workshops will cover the use of micro-controllers and a variety of sensors, actuators and other integrated electronic media, as well as modes of parametric modeling and digital fabrication.


The studio will meet MWF from 3-7 throughout the semester. In general, Jason and Michael will overlap on most Wednesdays for collective teaching, field trips and reviews. Jason will meet with students on Mondays, while Michael will meet with students on Fridays. 


You should consider all of the work you do this semester to be “Open Source” and that you share ideas, code, recipes etc. throughout the semester. There is also an expectation that all final projects be thoroughly documented on Instructables.com.  


This semester you will work with Rhino + Grasshopper + Firefly and other plug-ins. You should also have Arduino and Processing loaded on your laptops. Each of you should also expect to contribute to the projects through the collective purchase of things like microcontrollers (Arduino + Tiny G), motors, sensors, 3d printed parts, etc. You are also encouraged to bring in equipment you may have at home including tools, 3d printers, soldering equipment, etc. 


You will primarily be graded on the level and quality of your participation in studio activities including discussion and workshops. You will also be asked to complete weekly assignments throughout the semester. You will be asked to make multiple research presentations and to complete an installation and presentation at the end of the seminar. The assessment of letter grades will be calculated as follows:

(25%) Class Discussions, Participation, Attitude
(25%) Midterm Progress
(50%) Final Project and Presentation; final documentation submission

Definition of Grades: A = outstanding achievement—significantly exceed standards; B = commendable achievement—exceeds standards; C = acceptable achievement—meets standards; D = marginal achievement—below standards; F = failing

Strict Attendance Policy: All scheduled class meetings are mandatory. If you miss more than three studio sessions you will be given the letter grade F without exception. Nevertheless, if you are going to be late, or need to miss a session due to illness or misfortune, simply contact us!