Interlocking Laser-cut Pieces – An Experiment in Design

When I was working on my Sleep Sensei project, I designed the housing out of interlocking parts to form the case.


Initial Design

When designing the interlocking portions, I arbitrarily chose that the “notches” would be as wide as twice the material thickness and as tall as the material thickness to provide a good amount of interlocking without being excessive. For example, bamboo from Ponoko is available in 3mm thickness, so the notches are 3mm x 6mm (see diagram below).

Lasercut Notch Size Largetext

Click above image to enlarge.

This worked fairly well when the parts were glued together, but if not the whole thing would just fall apart. Since I was designing this product to be a kit to be assembled by my customers, I wanted to make it as easy as possible with no glue required.

Adding Nodes to the Design

When looking to improve the design, I came across this Ponoko article about adding “nodes” to interlocking laser-cut parts to provide a tighter interface. The concept I came up with was to add nodes to both the “male” and “female” notches to create an interference fit:

Node Diagram

The problem was, I didn’t know what dimensions to choose to make the fit tight enough without being too tight to assemble. I also had to make a design that is tolerant of inconsistencies in the laser cutting process. So I did a simple experiment to choose the best node size.

Node Sizing Experiment

I decided to make the width of the nodes 1/2 of the material’s thickness, or 1.5 mm in the case of the bamboo I was using. But I didn’t know how “tall” to make the nodes.

Node Dimensions Diagram

So I used AutoCAD to create a test piece that would test both the 90 degree connections of the corners as well as inserting into a series of holes (such as on the sides of the Sleep Sensei). The test pieces could be inserted into each other to test different combinations of node sizes. A sample test piece is shown below:

Indiviadual Test Piece

I created a series of test pieces with varying node heights, and I made 4 of each piece to account for variability in manufacturing. I etched each part with its node height so I could keep track:

All Node pieces

For example, the below test piece has a node that is 0.03 mm high:

Node Dimensions

When the parts came in, I tried all the combinations of node sizes, and I found that the fit was best with 0.05 mm nodes on both pieces. So I modified the Sleep Sensei design to include this node size:

New Sensei Design

Notches Up Close

And the design works quite well! If you check out the assembly video, you’ll see that the parts snap together quite nicely.

I used the same node size for my valentine’s day count-up box, and that also worked out quite well. The parts work like lego pieces: firmly snapped together but easy to take apart if needed.

Count up Box – A Valentine’s Day Gift

The Count up Box


For Valentine’s day 2016, I decided to make a device to count up how much time has passed since my girlfriend and I first met.

What I came up with is a fairly simple design utilizing an Arduino nano, a real time clock, an LCD screen, and a rotary encoder.

As I have some decent experience with laser cutting from my Sleep Sensei project, I decided to have the project laser cut.

Demo Video


Side Back IMG_2620

Technical Details

The knob on the top of the box is attached to a rotary encoder with a built-in momentary switch. I use this to change the unit display on screen and allow the user to adjust the date and time.

Getting the screen working was the largest challenge of this project. It is a 1602 16×2 HD44780 screen from aliexpress, and it uses an I2C converter to allow me to send it commands via an I2C interface, simplifying the wiring significantly. However, it was hard to find the correct arduino library to interface with it. After much searching and testing, the LiquidCrystal_I2C library was the one that worked for me. The documentation for this library isn’t the greatest, but the commands can be found in the LiquidCrystal_I2C.h file.

The whole project is powered directly from the Arduino nano. This allows for easy code swapping and prototyping since the power cable is also the communications cable, and it simplifies the design of the circuit board since I can use the nano’s on-board power supply.

The code, lasercutting files, board schematics, parts list, and more details can be found on my GitHub:

Circuit Board Design

Count Up Box Schematic Production_pcb  IMG_2618

The circuit board was designed in Fritzing, and the design files can be found on the GitHub page.