While these parts are all optional, they'll greatly refine the look of your calculator and make it more pleasant to use.

Some of the models were developed with FreeCAD, others with OpenSCAD. Both packages are open source software packages that are free to download & use.

Base Enclosure

The base enclosure protects your desk or table from being scratched by the solder junctions on the PCB, and prevents you from delivering static shocks to the circuit when holding the calculator in hand. It also holds the keypad at an angle that makes it more comfortable to use. The main alternative to printing the base enclosure is to add adhesive rubber feet directly to the bottom side of the PCB.

You can choose either the "snap-fit" version or the "screw-in" version. In the first case, the PCB is retained by two vee-shaped protrusions from the sides. In the second case, the PCB is retained by M2.5×6 screws using heat-set threaded inserts. (the snap-fit version also includes the holes for the heat-set inserts, but you don't need to use them)

In your slicer, use the "lay flat" operation to place the bottom of the enclosure directly on the print bed. Default slicing settings should suffice. If desired, clean up the shallow-angled top face by lightly sanding after 3D printing. Attach bumper feet to the bottom for anti-skid goodness.

The enclosure was designed in FreeCAD; you can load the FCStd file into FreeCAD to make changes to the model. Use the stl file for 3D printing.

Keyswitch Plate

The keyswitch plate helps ensure that the keyswitches are soldered in without any rotation, and provides stability during use; you can get by without it, but it's easy to end up with some of your keys looking wonky. If you print it, remember that you must snap the keyswitches into it before soldering the keyswitches to the PCB.

The plate was designed in OpenSCAD; you can load the scad file into OpenSCAD to refine the model. Use the stl file for 3D printing.


You can print custom keycaps for your calculator. These are based on KeyV2 by @rsheldiii. The values are tuned for the author's Prusa I3 mk3s with an 0.4mm nozzle, PLA filament and 0.2mm "speed" printing profile. Each key takes about 20 minutes and uses about 2g of plastic, so it can be well worth the time to dial in the design for your printer.

The geometry of the stems must be very precise, so begin by printing a single "central row" switch to check it for fit and function in your keyswitches. If the keyswitch from the provided STL does not fit, use the OpenSCAD Customizer to increase $stem_slop and/or $stem_inner_slop until you get a good fit (Start by changing things in 0.5mm increments). If they fall out too readily, decrease $stem_slop and/or $stem_inner_slop similarly. $stem_slop controls the outside of the stem, so increasing it makes the fit against the outside of the "box" of the keycap plunger looser and increasing it makes it tighter. $stem_inner_slop controls the inside of the stem, so increasing it leaves a greater gap for the "+" of the keycap plunger and decreasing it leaves a smaller gap.

It can be visually difficult to tell whether the interference is at the inside or the outside; you can modify each number alternately until you get a fit or can tell which one is wrong.

Next, print a whole column of switches and confirm that they all fit; on the author's printer, one set of slop values was OK for all rows, but your experience may differ.

Expect to repeat this process a few times; here is the pile of switches the author discarded as unusable while perfecting the design & fine tuning the slop values.

The model should load with the tops of the keys on the build surface. For two-tone keys, configure your slicer to pause at 0.8mm Z-height for a color change. This really makes the legend stand out, and can be done on most 3D printers.

For fit testing, you can print the whole thing in one color, but be sure to choose the color that the stem will ultimately be printed in; the author found that two different spools of PLA required different fine-tuning numbers.

Screen Bezel

Use your slicer's "lay flat" function to place the top of the bezel directly on the printing surface. Default print settings suffice for this print.

The bezel was designed in FreeCAD; you can load the FCStd file into freecad to refine the model. Use the stl file for 3D printing.

The little cutout allows the reset switch to be pressed, in the event you need to restart the calculator or access the UF2 bootloader for updates.

This guide was first published on Jul 13, 2021. It was last updated on 2021-07-13 16:06:28 -0400.

This page (3D Printed Parts) was last updated on Sep 24, 2021.

Text editor powered by tinymce.