Lately, I’ve begun making my own hardware.

When I went browsing Amazon for project boxes to contain all the wires and circuitry, $5-10 for a plastic box that wouldn’t be an exact fit, plus tools to put cuts in the right places, all the time trying to get it right, … got me wondering if there was a better way.

Screen Shot 2018-10-08 at 10.27.09 AM.png

I remembered this funny documentary I saw on Netflix—”Print the Legend“, about 3D printing—and wondered: how much are 3D printers these days?

The Printer

The answer is: very affordable. I checked out r/3Dprinting and settled on the Creality Ender 3. I got mine for $220 including a spool of filament.

Screen Shot 2018-10-08 at 10.32.50 AM.png

There are tons of different sellers who offer the Ender 3, and, as far as I know, they’re all the same. I assume they’re all just buying from Alibaba, warehousing, and reselling to you for a higher price but faster shipping.

The Ender 3 comes disassembled and takes an hour or two to put together. The instructions are decent but I ended up referring to one of the many helpful YouTube videos on “ender 3 assembly” to fill in some gaps. For instance, the included build guide has an incorrect instruction about where to place the end-range switch for the z-axis. I’d probably just follow a YouTube vid from the start if I was doing it again.

Filament (printing material)

Filament is the stuff that 3D printers print with. It’s the equivalent of paper in a normal printer. The Ender 3 box includes a sample of plastic filament, but you’re going to want more. It’s not enough to print the “hello world” demo model (a dog—not actually the text “hello world”).


The quality is way better than I expected out of a $200 machine, when pro 3D printers can run in the thousands.

The Ender 3 takes 1.75mm PLA filament. It comes in 1kg spools. I picked up this spool of white filament from Dikale, because it was the cheapest I saw. They seem to all cost around $20 for single spools of PLA.Screen Shot 2018-10-08 at 10.44.16 AM.png

PLA is the standard filament material to use, but there are other kinds too, if you have different needs. Some are flexible, for instance.

1kg of filament goes a very long way. Here’s a component I made, which required 1g of filament to print (look in the bottom of the screenshot where it estimates “0.35m / ~1g”).

Screen Shot 2018-10-08 at 10.50.17 AM.png

The Printing Process

This is a screenshot from Ultimaker Cura, which is free software for “slicing”. Slicing is one step of the 3D printing process. Here’s the full process:

  1. First, you need a 3D model. This is a file in the .stl format that describes the geometry of the structure you want to print. This is the “what” part of the print job.
  2. Next, you run that model through a “slicer” to generate a .gcode file. G-code specifies the “how” of the print job—where the print head should move, when it should place a drop of PLA, etc… The slicer has some smarts to it. If your model contains an overhang, where the print head would be placing a drop of PLA in free space, the slicer will detect that and generate instructions to build a support column underneath the overhang, which you can break away at the end of the print job. That’s what the option “Generate Support” means in the screenshot above. The slicer also builds an internal support structure within the model, because the STL file just specifies the surface geometry of what you’re printing, and a hollow shell would be weak and break without internal support. That’s what the “Infill” option in the screenshot above means.
  3. After slicing your STL file into a G-code file, you put the G-code on a micro SD card (included with the Ender 3), stick it in the machine, and hit print.
  4. … time passes… (3D printing can take a long time)
  5. Your print job is complete. Now you pry the model off the build plate with the included paint scraper and try not to stab yourself in the process.

Making a 3D Model (.stl)

There’s a lot of 3D modeling software out there. I chose one called OpenSCAD, because it’s a programming language for generating 3D models. I like the idea that my models live in Git, and I can see text-based diffs to understand what changes I’m making.

Screen Shot 2018-10-08 at 11.10.20 AM.png

Here’s the code for that model I showed in the Cura screenshot.

I have a chip with some header pins that I wanted to cover, so I built a set of sleeves for the pins. First, I measured the pins. You’ll want a decent ruler with millimeter markings for this part.


Then, I sketched out a rough diagram of the model I wanted to code.


The idea was to make a set of “cups” for each pin. This is simple to describe as subtracting one extruded rectangle (the inside of the cup) from another extruded rectangle (the cup itself).

As you can see, it’s not a lot of code. It could probably be even cleaner and more minimal if I was better at the language. (Can you spot the bug? Luckily, not a fatal one.)

Screen Shot 2018-10-08 at 11.18.46 AM.png

You can use an external editor instead of the built-in editor in OpenSCAD, and it will automatically detect file changes and re-render the model. I use VS Code, which has a syntax highlighter plugin for .scad files.

Once you finish building the model, you hit F6 in OpenSCAD and it compiles the code. Then you can use the STL button to export a .stl file. There’s also a command line interface.


There’s a variety of slicer software. I use Cura, which is the only one I’ve tried. It’s free and works great with the Ender 3, once you set it up properly.

First you add a printer. There’s no preset for the Creality Ender 3, so choose “Creality CR-10”, which is pretty close.

Screen Shot 2018-10-08 at 11.35.54 AM.png

I renamed mine to “Ender 3 (Based on Creality CR-10)”.

Next, you need to tweak some settings. Use the drop-down in the top-right to “Manage Printers…”.

Screen Shot 2018-10-08 at 11.36.09 AM.png

Select your printer and click “Machine Settings”.

Screen Shot 2018-10-08 at 11.36.24 AM.png

In the Machine Settings dialog, adjust the Width, Depth, and Height to 220mm, 220mm, and 250mm, respectively.

Screen Shot 2018-10-08 at 11.36.30 AM.png

That’s it!

Next, you load your .stl file.

Screen Shot 2018-10-08 at 11.40.55 AM.png

You can adjust the layer height, which is essentially your print resolution. Smaller layers will take longer. Infill, the internal support I mentioned before. Generate support is a good idea, but not an issue for this particular model. And “Build Plate Adhesion”—this one makes a little puddle around your model on the build plate. I highly recommend this one. This keeps your model from peeling up during the build process, which will mess up the final print.

If you click on the model, you can drag it around and adjust settings. In the screenshot above, I’ve selected the Scale tool, to show you what physical size the model will print at. Cura interprets units in OpenSCAD as millimeters—exactly what I wanted.

When you’ve got everything configured, you click “Prepare” in the bottom right. Cura then computes the slices (G-code) and gives you an estimate for the material and time required.

Screen Shot 2018-10-08 at 11.48.57 AM.png

Here’s the printer in action.


And 20 mins later, the finished sleeve!