book collections email follower instructable user

Hi everyone. I had always wanted a device that would help me in leveling my 3D printer bed and some other device that would help me get an approximate length of a curved surface so that I could easily cut out the right length of sticker to apply on that surface and thus preventing wastage. So I thought why not combine both ideas and make a single gadget that can do both. At last, I ended up building a device that can not only measure curved lines and surface levelness but can also measure straight line distances and angle of a line. So basically this gadget works as an all in one digital level+ruler+protractor+roll-measure. The device is tiny enough to fit inside a pocket and its batteries can be easily recharged using a phone charger.

This device uses an accelerometer and gyroscope sensor to accurately measure surface levelness and angle, a sharp IR sensor to measure the linear length in a non-contact way and an encoder with a wheel which can be rolled over a curved surface or a curved line to get its length.

Navigation through the device modes and features is done using 3 touch buttons marked as M (mode), U (unit) and 0 (zero)

M - To choose between different types of measurements

U - To choose between the units mm, cm, inches, and meter

0 - To reset the measured values to 0 after measuring a distance or angle.

The reason for using touch buttons is to gently navigate through the modes and units without disturbing the position of the device while measuring.

The device has a neodymium magnet embedded into its base so that it won't slip or slide off the metal surface being measured.

The casing is designed to make the device as compact as possible and also to be 3D printed easily.



The components were chosen keeping in mind that this device is built to fit inside a pocket. So the smallest of the display, battery, and sensors which I could find were used.

1. 3d printed case

2. Sharp GP2Y0A41SK0F IR distance sensor X 1 (Aliexpress)

3. MPU6050 accelerometer/gyroscope module X 1 (Aliexpress)

4. Boost+charging module X 1 (Aliexpress)

5. Grove Mouse encoder X 1 (Aliexpress)

6. 128 X 32 OLED display X 1 (Aliexpress)

7. Arduino pro mini ATMEGA328 5V / 16MHz X 1 (Aliexpress)

8. 12 mm buzzer X 1 (Aliexpress)

9. 3.7v, 1000mah lipo battery X 1 (Aliexpress)

10. TTP223 touch button module X 3 (Aliexpress)

11. 20x10x2mm neodymium magnet X 1 (Aliexpress)

12. CP2102 USB to UART TTL module X 1 (Aliexpress)

13. Enamelled copper wire (Aliexpress)

14. 10K resistors X 2

15. 19(length)X2(dia) mm steel axle X 1

16. 3mm led X 1

17. Any vinyl sticker roll (Aliexpress)

18. Micro USB cable


MPU6050 is a mems device which consists of a 3 axis accelerometer and a 3 axis gyroscope in it. This helps us to measure acceleration, velocity, orientation, and displacement. This is an I2C based device that runs on 3.3 to 5v.In this project, MPU6050 is used to measure if a surface is level or not and also to measure the angle of a line.


This is a mechanical incremental rotary encoder with feedback data of rotary direction and rotary speed. I used this encoder because its the smallest encoder I could find and the programming part of it was also easy. This encoder has 24 steps per rotation. Using this we can calculate the distance moved by the wheel on the encoder if the wheel diameter is known. Calculations on how to do this are discussed in the later steps of this instructable. This project uses the encoder to measure curved lines distances.


This is an analog sensor which gives a variable voltage as output based on the distance of the object from the sensor. Unlike other IR modules, the color of the object being detected will not affect the output of the sensor. There are many versions of sharp sensors but the one we are using has a range of 4 - 30 cm. The sensor operates a voltage between 4.5 to 5.5 volts and draws just 12 mA of current. The red(+) and black(-) wires are the power wires and the 3rd wire (either white or yellow) is the analog output wire. The sensor is used in this project to measure linear distances without contact.

vivekjha26227 days ago
can i use this project for my Major project in my college
patrick panikulam (author)  vivekjha26219 days ago
You can depending on which department you're in
I am in electronics and communication engineering department can I make it ??
eburman2 months ago
There's a similar project posted on Electronoobs:
RenzoG14 months ago
The project is very fine, but the instruction ;int distancecm=SharpIR.distance(); gives this error;<'class SharpIR' has no member named 'distance'>

What to do?
Thanks Renzo
patrick panikulam (author)  RenzoG14 months ago
Thankyou for asking and sorry about the problem you are facing . It seems like the SharpIR Library isn't functioning properly in your IDE.Can you pleas reinstall this library and try again , do let me know the result so that I can try helping you further.
I put SharpIR-master Version : 1.0 : Guillaume Rico in a my directory <Multi_tester>, the same of your final-code.
But also the file example SharpSensorCm has the same error.
patrick panikulam (author)  RenzoG14 months ago
There is an alternative way to calculate the distance of the sharp it module without using libraries. If you saw my code carefully you must have noticed that I used both the formula as well as a library . I did this so that people seeing the code can understand what's going on inside the library .

So to fix your problem use:

int distancecm=13*pow(volts,-1);

I have a similar error with him.
no matching function for call to 'Adafruit_SSD1306::Adafruit_SSD1306(int, int, TwoWire*, int)
Then I view the library file,modify line 19 code to Adafruit_SSD1306 display( OLED_RESET)
I don't know this is right or wrong.
I also got this error:error: 'class SharpIR' has no member named 'distance'
But I want to use the library.
thank you

FadiJ4 months ago
Really one of the best and practical projects done on instructables. Great and detailed job.
patrick panikulam (author)  FadiJ4 months ago
Thankyou :)

!!!!!!! WOW !!!!!!!

This is AMAZING - Well Done !!!!!!!

totally blown away man !

Secondly, a tip that you could use Liquid-Electrical Tape for the roller for providing you the grip or 'PlastiDip' if youre able to acquire it, but i think liquid-electrical-tape is easier to obtain depending on which country youre in, PlastiDip i think is a UK product but has worldwide shipping and is a very VERY Good Product with a LONG Lasting shelf life, usually comes in metal tins.

Truly Amazing amalgamation of tech and i just LOVE those Proximity Buttons, a very clever use for them - You are AWESOME DUDE !!!!

Keep it up and thank you so very much for making your project open-source so that us mere mortals may also try to replicate your awesome work or day to day useful artwork-tool !!

- Brilliant !!!
kindest regards :)

Thankyou soo much :) .
GiancarloV84 months ago
Adding tachometer functions to this would only require software changes.
amazing project bro. but which 3d printer r u using here?
Thanks Bro , I am using a customised TEVO Tarantula 3D printer
Wow nice!
erana_reborn4 months ago
It's beautiful. The "wood case" look doesn't hurt, either. Bravo.
patrick panikulam (author)  erana_reborn4 months ago
Thanks for the tip, I was actually planning to coat the curved surface of the wheel with a thin layer of rubber-based adhesive so that when it dries it gives grip. This also makes sure that the diameter of the wheel doesn't change much.
patrick panikulam (author)  erana_reborn4 months ago
Thankyou :)
frarugi874 months ago
Great work... I like it
Just a tip; the wheel seems made of plastic. This sometimes slip. You can use a small rubber band around it to increase the grip (if the case has enough clearance)
indoorgeek4 months ago
Great idea, perfectly executed!
patrick panikulam (author)  indoorgeek4 months ago
Thankyou :)
AlphaOmega14 months ago
Interesting project, Well done.
Did you think to keep your calibration values in flash? Simply read them in during boot. Your calibration option can auto save them without needing to reprogram.
This function could be extended to have a secondary offset used for repeating angles, showing zero when correct or else the difference from the required angle.
JeremySCook4 months ago
Nice device. I hope the letters you cut out on the laser weren't made with vinyl. Supposedly that can release poisonous gas.
patrick panikulam (author)  JeremySCook4 months ago
Ohh, I didn't know that. Thankyou for this important information .I guess I'll use scissors next time :)
NP. You could use a CNC knife setup too.
AnandM544 months ago
Wow..... Lots of informations ... Great instructable..
patrick panikulam (author)  AnandM544 months ago
Thankyou :)
TraceyP314 months ago
very nice project. good work.
patrick panikulam (author)  TraceyP314 months ago
Thankyou :) :) glad you liked it
Sean07954 months ago
What a great little device! Got my Vote!!!
patrick panikulam (author)  Sean07954 months ago
Thankyou so much:)
doncore4 months ago
Now add a temperature (BME) and a LED-Light to it :)

Thank you very much. I'll build this (sooner or later...) Got my vote.
patrick panikulam (author)  doncore4 months ago
I am working on version 2 with more features like what you suggested .

Really looking forward to see the one you are going to build :)
raddevus4 months ago
This is a really great project. Very interesting and details the creation of a very handy tool. Well written and nicely supported with your additional comments. Thanks for writing this great instructable.
patrick panikulam (author)  raddevus4 months ago
Thankyou so much for your words
SpikeSmall4 months ago
This is the best project I've ever seen on instructables
patrick panikulam (author)  SpikeSmall4 months ago
Thankyou soo much :)
Build_it_Bob4 months ago
Hi Patrick, you did an amazing job with this unique device. You truly engineered, coded, debugged, tested, documented and presented a marketable product. I will be following your feed to see all your creations come to life. I also voted for you...good luck; I think you have a winner! I would like to see the laser engraver details if possible.
1-40 of 45Next »