Main Content

Hi everyone, today I’m going to show you how to make a digital level with optional integrated cross-line laser. About a year ago I created a digital multi-tool. While that tool does feature a lot of different modes, for me, the most common and useful are the level and angle measuring modes. So, I thought it would be productive to make a new, more compact tool focused only on angle sensing. The assembly is straight forward, so hopefully it will be a fun weekend project for people.

I’ve also designed a sled to hold the level while using the cross-line laser. It can be adjusted by +/-4 degrees in y/x to help level the laser line. The sled can also be mounted on a camera tripod.

You can find all of the files needed for the level at my Github: here.

The level has five modes:

(You can see these in the video above. Seeing them will probably make more sense than reading the descriptions)

X-Y Level: This is like a circular bubble level. With the level laying on it’s back, the mode reports the tilt angles about the tool’s upper/lower and left/right faces.
Roll Level: This is like a regular spirit level. With the level standing upright on its upper/lower/left/right, it reports the angle of tilt of the level’s top/bottom faces.
Protractor: Like the roll level, but the level is lying flat on it’s bottom face.
Laser Pointer: Just a straight forward dot laser, projected from the right face of the tool.
Cross-Line Laser: Projects a cross from right face of the level. This can also be activated when using the X-Y Level or Roll Level modes by double tapping the “Z” button. Should be oriented such that the bottom face is aligned with the laser line.
To make the level more compact, and assembly easier, I’ve incorporated all the parts onto a custom PCB. The smallest components are 0805 SMD size, which can be easily soldered by hand.

The level’s case is 3D printed, and measures 74x60x23.8mm with the cross-line laser, 74x44x23.8mm without, making the tool comfortably pocket sized in either case.

The level is powered by a rechargeable LiPo battery. I should note that LiPo’s can be dangerous if handled improperly. The main thing is not to short the LiPo, but you should do some safety research if you are completely unfamiliar with them.

Finally, the two lasers I use are very low powered, and while I do not recommend pointing them directly at your eyes, they should be safe otherwise.

If you have any questions at all, please leave a comment, and I’ll get back to you.


You can find Gerber file for the PCB here: here (hit download in the bottom right)

If you’d like to inspect the PCB’s schematic, you can find it here.

Unless you can make PCB’s locally, you’ll have to order some from a prototype PCB manufacturer. If you’ve never purchased a custom PCB before, it’s very straight forward; most companies have an automated quoting system that accepts zipped Gerber files. I can recommend JLC PCB, Seeedstudio, AllPCB, or OSH Park, although I’m sure most others will work as well. All the default board specs from these manufactures will work fine, but make sure to set the board thickness to 1.6mm (should be the default). Board color is your preference.

Electronic Parts:

(note that you can probably find these parts for cheaper on sites like Aliexpress, Ebay, Banggood, etc)

One Arduino Pro-mini, 5V ver. Please note that there a few different board designs out there. The only difference between them is the placement of analog pins A4-7. I have made the level’s PCB such that both boards should work. Found here.
One MPU6050 breakout board. Found here.
One 0.96” SSD1306 OLED. Display color doesn’t matter (although the blue/yellow version works best). Can be found in two different pin configurations, where the ground/vcc pins are reversed. Either will work for the level. Found here.
One TP4056 1s LiPo charger board. Found here.
One 1s LiPo battery. Any kind is fine as long as it fits in a 40x50x10mm volume. Capacity and current output are not hugely important as the level’s power consumption is fairly low. You can find the one I used here.
One 6.5x18mm 5mw laser diode. Found here.
One 12x40mm 5mw cross-line laser diode. Found here. (optional)
Two 2N2222 through-hole transistors. Found here.
One 19x6x13mm slide switch. Found here.
Four 1K 0805 resistors. Found here.
Two 100K 0805 resistors. Found here.
Two 1uf 0805 multi-layer ceramic capacitors. Found here.
Two 6x6x10mm through-hole tactile push-buttons. Found here.
2.54mm male headers.
A FTDI programming cable. Found here, although other types are available on Amazon for less. You can also use an Arduino Uno as the programmer (if it has a removable ATMEGA328P chip), see a guide for that here.
Other Parts:

Twenty 6x1mm round neodymium magnets. Found here.
One 25x1.5mm clear acrylic square. Found here.
A small length of adhesive backed Velcro.

3D printer
Soldering iron w/ fine tip
Plastic glue (for gluing acrylic square, superglue fogs it up)
Hot glue gun and hot glue
Paint+brush (for filling button labels)
Wire stripper/cutter
Tweezers (for handling SMD parts)
Hobby knife
Sled Parts (optional, if you’re adding the cross-line laser)

Three M3 nuts
Three M3x16mm screws (or longer, will give you a larger angle adjustment range)
One 1/4”-20 nut (for camera tripod mounting)
Two 6x1mm round magnets (see link above)”

Link to article