Web Enabled Microscope

Enhance a microscope with web control, enabling gigapixel panoramic or focus stacked shots, live streaming/control and more!

Similar projects worth following
Starting with a basic microscope, this project provides vastly improved capabilities by pairing it with an Android phone to enable live streaming, high quality video, and panoramic/focus stacked photos. By adding a pair of disk drive motors and a focus motor, enables automated panoramas/focus stacking, and web control.

Disclaimer: I am an RF engineer by trade and a hardware (mechanical + electrical) engineer by hobby, so software is not my strong point! I am hoping to make a simple and easily obtainable/buildable hardware platform that is open source and allows others to tinker with and add software features to.

This project started when I was tired of looking through a narrow eyepiece of my cheap microscope, and decided to add a cellphone mount to take high quality photos/videos. I then realized I could use it with the live streaming software that I use when I go on vacation or to check who's at the front door, and stream the microscope view to Youtube or other places and share the experience in real time. I want to take this a step further and allow web control of the slide's position and microscope focus, which will add the possibility of doing focus stacking, large panoramas (gigapixel images) and if the software was available, would allow a quick scan of the entire slide, then a minimap type view to zoom into a particular area of interest, or even tracking a moving creature with CV. My goal, as stated, is to provide simple and robust hardware to enable future software features like those I mentioned, and many more people may think of in the future. I believe this project is in the spirit of the Citizen Scientist contest by opening the door to having many automated microscope stations anywhere the world and enable scientists to view and move samples over the internet.

So far the project cost is projected to be under $200, making this relatively accessible for schools or small labs/citizen scientists.

X-Y Table Specifications:

X axis range: 52.3mm, X axis precision: X.XXmm

Y axis range: 29.1mm, Y axis precision: X.XXmm

License disclaimer, Programs I will be using are as follows:

Autodesk Fusion 360 (3D CAD) - Startup license, free for companies making less than $100k/year or non-profit

Eagle MAKE Personal (Electrical Schematic/Layout) - For individual, non-commercial use

Others - Open source where possible, e.g. Arduino


Adapter to go between focus stepper and Lego wheel

Standard Tesselated Geometry - 159.16 kB - 06/18/2016 at 03:01


Files from Thingiverse for printing the cellphone mount

x-zip-compressed - 2.77 MB - 06/02/2016 at 18:38


View all 9 components

  • Status 7/8/16

    Justin Kenny07/08/2016 at 21:01 0 comments

    The WEM is all mechanically functional (at least well enough for V1). The X/Y positioner is mounted with the bracket printed last night and I modified the Y slide (via hot air gun) to de-warp it and lay the slide flat on the table. I also was able to calibrate both axes to "good enough" accuracy (<0.1mm per 20mm movement), with both axes having the following settings:

    X-axis: 53.202 steps/mm, 8x microstepping

    Y-axis: 50.333 steps/mm, full step

    The Z-axis I'm leaving as is, since absolute distance doesn't have much bearing on it. Here's a photo of the final setup:

    After calibrating both axes, I decided to give an "automated" panorama a shot using the phone's built in panorama feature. It didn't turn out so great, with some banding effects, and overall inaccuracy. I think I'll stick to moving the slide a fixed amount, stopping, taking a full size photo, then moving to the next position, and doing stitching as post-processing.

    Here is a video compilation of the final state of the mechanical portion of the project:

  • Status 7/7/16

    Justin Kenny07/08/2016 at 04:49 0 comments

    Still not having much time to work on the WEM this week but I've modified the X-Y stage a bit since it was running into the 100x objective. I've moved it down in the same plane as the sample platform instead of on top of it, which involved modifying 2 parts and making a third to hold the assembly.

    The first 2 parts are already printed and assembled, just waiting on the holder which will be available tomorrow morning. I'll need to modify the long piece connecting the Y slide to the sample holder to compensate for the tilt of the Y slide.

  • Status 7/5/16

    Justin Kenny07/05/2016 at 15:12 0 comments

    I finished modeling the new Y-axis parts to add a 3mm linear rail for stability.

    I modified the Y-axis slide slightly from the picture above so it could be printed without supports, and also to solve a potential interference.

    I printed the new parts and assembled it, two minor issues found, first inserting the LM3UU bearing caused the slide to bend slightly, and second the Y-axis motor was slightly too far away, so it can't be screwed down completely without binding. Here's a photo of the new parts assembled, unfortunately I didn't have time to test it out, but it seems the backlash is slightly improved, but still present due to the tolerances of the LM3UU and the X-axis slide (which might be slightly improved by adding an LM3UU to as well, but it is probably not worth the effort):

    Another thing to note, the entire X-Y assembly is a bit too tall and interferes with the 100x objective, so I'll probably 3D print an adapter to mount it next to the focus plate instead of on top of it.

  • Status 6/29/16

    Justin Kenny06/30/2016 at 06:35 0 comments

    I added the extra screws to clamp on the Y axis screw but there's still too much play, so I've ordered a pair of LM3UU linear bearings (same family as the LM8UUs commonly used in 3D printers) so I can add a rail for stability on the Y axis. I may modify the X axis slide to use a linear bearing also since I believe the rail is 3mm diameter.

  • Status 6/27/16

    Justin Kenny06/27/2016 at 22:43 0 comments

    You'd think I would have learned my lesson from the first major microscope model mess-up. Turns out I messed up the model again by not accounting for a protrusion from the top of the rectangular bit which prevents the motor mount as-is from working, and it's also 2.6mm thinner than I accounted for. Anyways I updated the model and modified the motor mount to accomodate, which was pretty simple, just needed to mirror the mount and add a cutout for the protrusion. Here's the model as it stands now:

    I printed the new focus motor mount along with the X/Y parts, which needed a little modification to print nicely. I also ended up dremeling out some more clearance for the focus motor mount. Here's a short video of the three axes with 3D printed parts functioning:

    There's still a lot of slop in the X/Y positioner but it's also missing 3 screws which should help with that. If it is still not resolved I may need to add another linear rail to help with stability.

  • Status 6/26/16

    Justin Kenny06/27/2016 at 04:43 0 comments

    Finished modeling the two axis motors today and came up with a first pass at the motor to slide holder interface. It's not pretty but it should get the job done, assuming it isn't too much friction for the tiny Y-axis motor to handle. I'll print these 3 new parts along with the new focus motor mount Monday.

    As far as electronics goes, currently I'm still using an Arduino running Grbl controlled directly by a PC (using serial terminal). Next step once I get everything working mechanically is to figure out the X/Y/Z steps/mm and speed/acceleration parameters to lock down in Grbl, then interface the Arduino with an ESP8266 running a basic web server for control.

  • Status 6/24/16

    Justin Kenny06/25/2016 at 05:59 0 comments

    Had a lot of work this week so not much time to work on the WEM, but I had a little time today to re-model the Z-stepper holder after my model blunder last weekend. Here's the new design, which will be printed Monday:

    Same basic mechanics as the old version, just moved up above the focus knob instead of below. I'll be able to eliminate the clamp (which probably wouldn't have worked too well anyways) and just use 5 screws (2 on the motor side, 3 on the opposite side) to fix the holder against the microscope.

  • Status 6/20/16

    Justin Kenny06/21/2016 at 03:33 0 comments

    Well that is embarrassing, I made a huge error on the positioning of the focus knobs of the microscope so the models I made yesterday are invalid. PSA: Measure twice! Or at least take a look at the model and see if it makes sense!

    I did print the bracket anyhow to see whether the concept works, which it does:

    Will measure the force needed to engage the wheel in order to select the right size extension spring, and of course heavily modify the stepper motor mount in order to work with the microscope.

  • Status 6/19/16

    Justin Kenny06/20/2016 at 01:50 0 comments

    No real update for today. Got the tires for the Lego wheels and updated the model slightly to reflect real measurements. Also added all hardware to the model to better show how the mechanism will operate:

    Started modeling the holder for the slide, I think just a corner with a sliding clamp (will have a small rubber foot on the clamp to put pressure on the slide) will do. Hopefully the tiny Y-axis motor can overcome the friction of the assembly on the microscope's table.

  • Status 6/18/16

    Justin Kenny06/19/2016 at 00:04 0 comments

    Started modeling the 3D printed focus motor holder in Fusion 360. The plan is to have one side of the motor on a pivot, and the other side with a tension spring pulling up on it and keeping it in contact with the focus wheel. Ideally the force would be enough to give good traction between the motor and wheel, but allow for manual movement, or simply allow for a latch to keep the motor out of contact with the focus wheel. I've designed this holder with a clamp to hold it in place on the microscope, but if that doesn't work I may need to drill/tap into the microscope to hard-mount it.

    I plan to use M3 hardware (2x M3x30mm socket cap bolts, 2x M3x15mm screws, 3x M3x20 screws, M3 washers, 2x M3x40 threaded hex spacer) to assemble the motor and holder/clamp. I'll purchase the missing components like the threaded spacer from McMaster or eBay, though I have plenty of M3 screws to hold me over for now.

View all 17 project logs

  • 1
    Step 1

    Purchase components listed above.

  • 2
    Step 2

    3D print cellphone adapter, mount cellphone and microscope, and start viewing/streaming.

  • 3
    Step 3

    Add X/Y/focus motors and ESP8266 control board.

View all 3 instructions

Enjoy this project?



Ahron Wayne wrote 11/12/2020 at 04:09 point

Tip: It's the jankiest fix ever, but if you connect a speaker to your duino you can play a short PCM file that says "Cheese" and trigger your pictures automatically! You can also mod one of those mini bluetooth selfie buttons, or use one from a selfie stick through the headphone jack. 

I like this and hope you're still doing stuff. 

  Are you sure? yes | no

Ergün AKGÜN wrote 09/20/2016 at 07:37 point


We tried to make the product should be similar to that of

Specs :

  Are you sure? yes | no

Ergün AKGÜN wrote 09/19/2016 at 16:19 point


I can take care of business with this project as
What is the sensitivity of this project?
I returned to the same area each time with the employees and 1 micron step and + - 1 micron tolerance I need a product that
can you help me get it?

  Are you sure? yes | no

Justin Kenny wrote 09/19/2016 at 17:33 point

You can check this video for the latest status: 

There is video of moving a slide with a microscope ruler attached (0.1mm per division).

Here's the accuracy/precision from the last update:

I also was able to calibrate both axes to "good enough" accuracy (<0.1mm per 20mm movement), with both axes having the following settings:

X-axis: 53.202 steps/mm, 8x microstepping
Y-axis: 50.333 steps/mm, full step

Y axis is more precise, with ~20um per step, and could go lower with microstepping. The challenge is the mechanical stage for holding/actuating whatever you are planning on moving with it.

  Are you sure? yes | no

ksk wrote 08/24/2016 at 16:37 point

I should have looked at all the build logs before commenting :-)  I'll have to measure my steps per mm, but for XY and focus I am using the same geared stepper you use for focus. Cool project!

  Are you sure? yes | no

ksk wrote 08/24/2016 at 16:30 point

Nice approach using what look to be floppy disk and CD drive steppers + mechanical. How well can you control the step resolution, acceleration, etc.? If you check out my project, just posted, you will see I opted for geared steppers and using the existing XY stage linear gears. Just different approach is all. I have not looked at a slide using the stepper control, so can't say if it's good or not. I do have some back-lash with the 3D printed gears, so your approach may be better in that regard. Looking forward to seeing more progress!

  Are you sure? yes | no

Rodrigo Loza wrote 06/14/2016 at 01:37 point

haha you are right! What i meant was that i made something very similar to your project two years ago. I used my smart phone and made an android app to send images through the Internet.

  Are you sure? yes | no

Rodrigo Loza wrote 06/13/2016 at 21:20 point

Hello, nice project. I made one of yours two years ago. It is very useful as you do not get tired. The light of the microscope fatigues the eyes incredibly fast. 

  Are you sure? yes | no

Justin Kenny wrote 06/13/2016 at 23:07 point

Thanks, I doubt you made my adapter 2 years ago though because I only designed/uploaded it a couple months ago :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates