Toolchain used in Fab Academy

Dear all,

Last half year, I’ve been living under a rock to complete the Fab Academy program that brings you into contact with all kinds of digital fabrication techniques such as 3D design, 3D printing, laser cutting, CNC milling, electronics, and microcontrollers. I followed the program at the Fab Lab Amsterdam at Waag Future Lab. I have extensive documentation on the whole process. Fab Academy was very, very time intensive, so, excuse me from my absence on this forum, but I think it would be nice to share some of my experiences on the software tools that I used.

For a bit of context, I and my colleague JC worked on automating documentation for Open Source Hardware that also contains a workbench for FreeCAD. I used part of the automated documentation software to create software for generating the Fab Academy documentation.

One of the reasons to do the Fab Academy program, was to understand about the state of open source software in digital fabrication. So, my goal was to use as much as possible open source software and I basically managed to complete all assignments without installing any proprietary software on my laptop. However, to control the machines, I sometimes had to use proprietary software on the computer terminals for the machines. For 3D design, I mainly used FreeCAD and I posted a discusson on my experiences with FreeCAD on their forum.

In Fab Academy, each week has a specific topic and you have to do an assignment to complete it. In the end, you present your final project using the techniques you learned about. Below, I will go over the weeks and discuss the tools I used.

Week 1 - Principles and Project Management is about project management for which I didn’t use software. As said before, I used my own hardware documentation software as a static site generator that I discuss in the documentation as well. Using Git is part of this week (I have my own Git primer) and this week involves creating a handdrawn sketch of the final project. Actually, now that I think of it, I had to scan the handdrawn sketch with our HP all-in-one printer/scanner combination that requires the proprietary firmware plugin for HPLIP, something I’m very unhappy about.

In Week 2 - Computer-Aided Design I reflect on Inkscape and FreeCAD’s Sketcher workbench for 2D design. For 3D, I discuss the benefits of coded CAD in the form of OpenSCAD (based on meshes CGAL), and CadQuery (based on boundary representation). I also discuss FreeCAD and Blender and decide that my main 3D design tool is going to be FreeCAD.

I use Three.js for showing 3D models in a webpage. Finally, for presenting images of the design on a website, I use a script that is based on Inkscape.

In Week 3 - Computer-Controlled Cutting we use the vinyl cutter and the laser cutter. Both machines have a dedicated computer terminals with the software installed to control the machine. We would design the work on our personal computer and then transfer the output files to the computer terminals. From there we would set up the machine and cut the design.

For the vinyl cutter, I used Inkscape for the design. We would use the Mods to control it. We would need a Chromium-based browser that has webserial capabilities. We control the machine then from the Mods website.

For the laser cutter, I used FreeCAD for the design and Inkscape for some post-processing. There is a LasercutterSVGExport FreeCAD macro that was incredibly cool to work with because it can take into account the kerf of the laser cutter (compensate for the thickness of the beam).

The laser cutter was controlled with proprietary software Lightburn. This is a useful program that allows you to control the machine and manipulate what to laser cut. For example, by assigning different colors to different parts of the drawing, you can control the speed, power, and number of passes. I haven’t done any research for an open source variant of this software yet.

Week 4 - Embedded Programming is about programming microcontrollers. In this week, I used Arduino and MicroPython. I’ve also investigated uLisp as well, but didn’t have time. It is essentially an Arduino program that gives you a Lisp REPL.

Week 5 - 3D Scanning and Printing we used the Prusa Slicer and Cura to set up the 3D printers. We also had a belt printer that has its own proprietary version of Cura, although I think it should be open source because of the license of Cura. For my own printer I switched from the Repetier firmware to Marlin. The package printrun is very useful to control the printer with the pronterface program.

We also 3D-scanned objects. We used the Sense 2 3D scanner in our lab that had its own proprietary software. The resulting mesh was shaped with Blender and I used Gimp to process images for showing it on an HTML page. There are many proprietary apps on smart phones for 3D scanning. I’m not aware of any open source 3D scanning software or 3D scanner hardware that doesn’t require closed firmware and I will try to look for it.

Week 6 - Electronics Design was the week we had our hackathon!! I tried to work on the assignment while being in Hamburg but couldn’t do much work. In terms of softare, I used KiCad and possibly some post-processing of the SVG output of KiCad in Inkscape.

In Week 7 - Computer-Controlled Machining I designed a slide for my son. I used FreeCAD for the design. For setting up the job for the CNC, we used proprietary software VCarve. We would then export this to a “shopbot” file which is essentially a file with GCode and that would get loaded into proprietary software to control the shopbot. I would be very curious to learn how I could mill with FreeCAD’s Path Workbench on the ShopBot.

In Week 8 - Electronics Production we controlled an old Roland Modela MDX-20 mill with Mods that we used for the vinyl cutter as well. With KiCad I would export the copper traces and the edge cuts as SVG file and load it into Mods directly. For programming the microcontroller, I wanted to move away from Arduino and I used the Raspberry PI Pico SDK instead to program the microcontroller directly in C.

In Week 9 - Output Devices my instructor used nice software to measure the output of a power supply. I now realize that I don’t know what this software is. I will ask him. I used no new software packages this week.

Week 10 - Mechanical / Machine Design was very interesting and very illustrative for why we need an open toolchain. We built an Easter Egg Dispense Machine as a group assignment. My colleagues used proprietary software Fusion 360 and I must admit that they were very fast in designing things. However, I wanted to collaborate and continue the design, but I got a STEP file with the design. To continue the design I had to essentially redo everything because there is no parameter information or Sketch information in the file. For designing gears, I used the FCGear Workbench which worked really well.

In Week 11 - Input Devices I did not use any software that hasn’t been discussed yet.

For Week 12 - Molding and Casting it is interesting to note that I worked on the 3D scan obtained in week 5 and since this is a mesh, I used a combination of Blender and FreeCAD, switching back and forth to create the design for the positive and negative molds. We also used the proprietary software VCarve again.

In Week 13 - Networking and Communications I used sigrok and PulseView for analyzing signals between microcontrollers. I used the Salaea Logic16 logic analyzer that requires proprietary firmware. To get the device working, I briefly installed Saleae’s proprietary software Saleae Logic to make sure that the logic analyzer was recognized. However, it turned out that this was not necessary, I should have simply installed the proprietary firmware that turned out to be available in the package manager that I used. I believe there are plenty logic analyzers available that do not need proprietary firmware. I will look into this at some point, because it is a very nice tool to make use of.

In this week I made a board with a camera using the ESP32-CAM board that I programmed with Arduino.

Week 14 - Interface and Application Programming was more about software. I improved on my ESP32-CAM boards and switched from Arduino to ESP’s SDK ESP-IDF to be able to program directly in C. The rest of the software was more for creating a webserver and encoding the video that was streamed from the camera boards. Also interesting, but I don’t really consider this software for engineering.

Week 15 - Wildcard I worked with composite materials and I essentially used the same software as in week 7 and 12.

The final couple of weeks were not really that technical and we moved our focus to the Final Project. I made a 1:64 model car race track for my son from laser cut and press fit plywood. For the final project, the idea was that we used all or many of the techniques we had learned about in the previous weeks, so in general I didn’t use any other software. Perhaps worthnoty is that I used the Assembly 4 workbench in FreeCAD for modeling the assembly.

So, there you have it, a report about the software tools that I used in Fab Academy. Please let me know if you have any ideas about alternatives for Lightburn or 3D scanners and software.