I just installed a privacy screen protector on my phone.
Since I travel a LOT, I wanted people left and right of me to not be able to see the screen.


Aparently it only limits the viewing angle left and right.
So in landscape mode, it does nothin at all.


Colors still less saturated and highlights are clipping. Not very good.
It's like watching an overexposed photo of your screen.


Tough screen working...so far.


Building a "uStepper Robot Arm rev. 2" during EasterHegg


The Plan (tm)

During EasterHegg in Salzburg, I want to build a "uStepper Robot Arm rev. 2".
(Sorry, Thingiverse doesn't offer a nice iFrame-Embedding as YouMagine does.)

I want to build it, as it is.  Using their assembly instructions from GitHub. Then check it out and install improvements.
Planned improvements are:
  • mounting holes for optical homing switches on the gears
  • reduce the number of different bolt sizes and ball bearings
  • Replace the uStepper with NEMA17 steppers controlled by a chain of L6470 (e.G. SparkFun AutoDriver boards) due to simpler synchronisation of multiple axes
    • 3xAutoDriver - Stepper Motor Driver (Watterott: 2x 38eur , Sparkfun 34USD) 3A, 8-45V
      • 15x 2 pin screw-on terminals with 3.1mm pitch (3xpower, 3xGND, 6xstepper coild, 3xE-Stop) "Schraubklemmen 2.54mm Pitch (2 Pin)"
      • 5-6x 2x5 2.54mm headers  (Comms-In + Comms-Out) "Wannen-Stiftleiste gerade 10 polig RM2,54"
      • 5-6x 2x3 2.54mm headers  (Meta-In + Meta-out)
        "Wannen-Stiftleiste gerade 6 polig RM2,54"
      • 2x cable for  2x5 2.54mm headers on both sides (SPI between boards)
      • 1x cable for  2x5 2.54mm headers on one sides (SPI to Arduino)
      • 3x cable for  2x3 2.54mm headers on one sides (Meta to Arduino)
    • 3xNEMA17  (Watterott: 2x16eur) 0.33A, 12V
    • any power supply 1A, 12V for testing (final power supply will be 38-40V)
  • Change the joins with to not only be press-fit into the aluminium tubes but to have a bolt running across it (into the tube, through the join and out the tube on the other side) to allow for pulling small loads upwards.
  • Change the effector mount to use a standard ISO-9409-1-50-4-6 (=4xM6 on a 50mm circle)
  • Have a hole in the center of the mount to allow for cables


I know the uStepper Robot Arm is still a Work In Progress.
I hope to get the original CAD files just in time for Easterhegg, so I can design my improvements.
I did get most of the parts from their BoM:



5x 608Z
  • standard skateboard-bearings.
  • for 8mm shafts
  • Z=closed on one side.
  • ZZ=closed on both sides or 608 = open will work too.
5x 625Z
  • for 5mm shafts(I'm missing these)
10x 624Z
  • for 4mm shafts
(I did an order of all standard bearings 3mm-8mm a while back. So I *hope* my stock has these covered.)


20x M3
7x M4
1x M5
2x M8


The BoM didn't specify the type of head or material for any bolts.
So I tried to stay with hexagonal headed and PH2 ones and tried to stay away from sink-hole bolts.

1x M8x40
  •  used in Fig.10 - use hexagonal head, so you can have the bolt from below and nut on top. Other flat heads mean the nut has to be at the bottom and can fall out on disassembly.
1x M8x70
  • used as main axis for the large gears
1x M5x40
  • 1x used in Fig.48
4x M4x20
  • 2x used in Fig.55
  • 1x used in Fig.56
  • 1x used in Fig.57
1x M4x30
  •  1x used in Fig.55
1x M4x35
  • 1x used in Fig.63
1x M4x55  substituted  M4x60 as 55mm was not avaliable.
  • 1x used in Fig.65
15x M3x8 substituted M3x10 counter sunk head
  • use 4x (M3x10) in Fig.29 
  • use 4x (M3x10) in Fig.31
  • use 4x (M3x10) in Fig.33
  • TODO: where to the other 3 go?
2x M3x10 substituted M3x10 
  • 2x used in Fig.25 - longer is okay. Any flat head type.
4x M3x12 substituted M3x16
  • 4x used in Fig.9 - must be 11-13mm, head must have at most 5mm diameter
7x M3x20
  • 5x used in Fig.3 - any flat head. steel brass or aluminium but even plastic bolts are okay.
  • 2x used in Fig.21 - indended maximum head diameter 5mm but larger ones work if the head is at most 3mm in height 
4x M3x30
  • 4x used in Fig.44


5x M8 OD=15,8mm
4x M5 OD=9,8mm
2x M4 OD=8.8mm
I didn't find ANY of these sizes. So I hope grabbing large and small washers for M4,M5 and M8 from my stock will do.


1x 14m  (update: inner diameter just wider then M8 threads)
1x 7mm  (update: inner diameter just wider then M4 threads)
Didn't find any because the BoM doesn't specify what kind of spacers they talk about.
I can't find them on the image nor the instructions.

Update: found them. Fig.36 has a typo and speaks of "space" instead of "spacers". Aparently they must have an inner diameter to fit an M8 and M4 bolt loosely.


The instructions don't specify if they talk about the outher or inner diamter
and what wall thickness is expected. (Clearly as seen in figure 20 and 22, inner AND outher diameter are important.)

1x 15x300 I got 1m of 16x1mm, it seems to be a snug fit in Gears_main_arm_15mm.stl, large_joins.stl fits but is a bit loose
1x 15x220
2x 6x240  I got 1m of 6x1mm
1x 6x252

...as you can see. The pure number of DIFFERENT bolt sizes is staggering.


  • sourcing all nuts and bolts (some bolts replaced by longer versions)
  • cutting tubes to length
  • assembled the first parts. List of suggestions for improvements is growing... 
  • Written the source code that will rund this arm using G-Code to control L6470 chips.
  • Assembled the original design as far as I can without the 625Z bearings.
  • I forked the project on github to post an improved version of the parts and the manual
Doing :
  • Waiting for the electronics
  • manual is coming along nicely...
  • starting to design improved parts...
Notes about assembly instructions
  • name inner+outher diameter of tubes
  • name head-type of bolts
    • M8x40 is for Fig. 10, any flat head. Steel brass or aluminium
    • M3x20 is for Fig.3 and ??? any flat head. steel brass or aluminium but even plastic bolts are okay.
    • ...
  • name where longer versions of bolts are acceptable and up to what length
  • name and show all dimensions for spacers (one is for M8, the other for M5)
  • Fig.1: a 608 (no covers) would do just as well  as a 608z(cover on one side) or 608zz (covers on both sized)
  • Fig.2: prepare how? What am I supposed to do in this step? 
  • Fig.3: no comment
  • Fig.4 use M3x20. 
  • Fig.5: no comment
  • Fig.6: use a sturdy table to help press-fit the 608Z or 608ZZ skateboard bearing
  • Fig.7: "prepare" means "insert M3 nuts"
  • Fig.8:  this is "side2.stl", not "side1.stl"
  • Fig.9: use M3x12 (at most 13mm) to mount the sides to the base?
  • Fig.10: use M8x40mm
    • M8 x 40mm
  • Fig.11: add an M8 washer of 9-12mm (if not included as a feature of base.stl)
  • Fig.12: use M3x8mm(M3x10 works too) to mount the small gear to the motor-shaft
  • Fig.13: 
    • M3x10 is too short for the  NEMA17 motor but the M3x8 are the only ones we have >12pcs of ??? (same for Fig.29+31. Question asked here)
    • you may want to do this before Fig.12 because the mounted motor determines where on the shaft the gear has to be
  • Fig.14: no comment
  • Fig.15: no comment
  • Fig.16: no comment
  • Fig.17: use a sturdy table to help press-fit the 608Z or 608ZZ skateboard bearing
  • Fig.18: no comment
  • Fig.19 
    • Is this large_joint.stl ? 
    • The "main arm" the short 15mm pipe
  • Fig.20: use glue and/or a drill and an additional M3x20 with a self-locking M3 nut 
  • Fig.21: use M3x20mm
  • Fig.22: no comment
  • Fig.23: use a sturdy table to help press-fit the 608Z or 608ZZ skateboard bearing
  • Fig.24 TODO: I seem to be missing 624Z or 624ZZ bearings
  • Fig.25: use M3x10mm 
  • Fig.26: no comment
  • Fig.27: TODO: what size of washers?
  • Fig.28:
    • use M3x8mm(M3x10 works too)
    • don't forget about the M3 nut (hole is slightly larger then M3)
    • use the thinner one of the 2 small gears
  • Fig.29: use 4x M3x10mm, make use of the recess for the bolt-heads
  • Fig.30: 
    • use M3x8mm(M3x10 works too) to mount the small gear to the motor-shaft
    • use the wider one of the 2 small gears
  • Fig.31: use 4x M3x10mm, make use of the recess for the bolt-heads
  • Fig.32: this is needed because you can't reach all 4 motor-bolts with the main gear on
  • Fig.33: use 4x M3x10mm, make use of the recess for the bolt-heads
  • Fig.34: no comment 
  • Fig.35: no comment 
  • Fig.36 
    • "space" should be "spacer"
    • Spacer is 14mm long and fits around an M8 bolt
  • Fig.38 one washer between gear and side plate is plenty
  • ...
  • Fig.44: 
    • use 4x M3x30mm, bolt heat must be <4mm in diameter
    • bracket_part1.stl
    • bracket_part2.stl
  • Fig.45: nothing to do here
  • Fig.46: nothing to do here
  • Fig.47 see comment for Fig.48
  • Fig.48 why M5? It's the only 5mm bolt in the entire construction and introduces an entirely new type of ball bearing. M4 would have worked just the same. 
  • Fig.49 one washer on the bearing, the other where the bolt exits
  • Fig.50 one washer where the bolt exits
  • Fig.51 this should be a nylon locking nut or else it will shake loose. 
  • Fig.52: nothing to do here
  • Fig.53: nothing to do here
  • Fig.54: nothing to do here 
  • Fig.55 
    • use 1x M4x30 on the secondary arm joint 
    • use 2x M4x20 on the 2 rods that connect to the triangle
    • TODO: Where to put what rod-length and what side to mount to (inside/outside)
  • Fig.56
    • use 1x M4x20 on the rod that connect to the triangle
  • Fig.57: use  1x M4x20
  • Fig.58: nothing to do her
  • Fig.59: nothing to do here
  • Fig.60: no comment
  • Fig.61: nothing to do here 
  • Fig.63: use M4x35
  • Fig.64
  • Fig.65: use M4x55 (or longer) 
  • Fig.66: finished! (with the mechanical hardware)
Notes about improvements:
  • holes for bolts should have a camfer to make inserting bolts easier by having them self-align. 
    • the holes for the 608 bearings work surprisingly well without them but it would still be a good idea since not every printer produces dimensionally accurate results.
  • labeling the holes with the bolt-sizes costs nothing in 3d printing.
  • use less different bolt sizes
  • name bolt sizes in assembly steps
  • all parts are very low resolution. Lots of clearly visible polygon-edges.
  • Gears are a highly simplified design. They however do have only little backlash.
  • ...
  • base.stl
    • M3 bolt-holes too small. 3.1mm would be better. 
    • M3 nut-holes could use a camfer (any stray sterand of filament makes this harder).
    • my bolts have a 6mm wide head. The hole is 5mm. Wider heads should be supported.
    • Make M8 hole smaller to allow for M8 washer of 9-12mm to sit on bottom 608/608Z/608ZZ bearing OR include that washer as a feature of the base.stl design
  • Gears_bottom_edited_plus10.stl
    •  M3 bolt-holes too small. 3.2mm would be better (slightly larger then the hole in the side that holds the nut). 
    • nuts are inserted too deep. You can't align them after having them fall down the shaft to meet the bolt.
  • side_plate1.stl
    • is a very tight fit into base.stl
    • a tapper on the nuts that slide into base.stl coult also help.
    • holes for M3 nuts should be hexagonal and closed on one side to prevent the tiny bolt from slipping out. (This isn't laser-cutting.)
    • move the bolt that doesn't go through the bottom gear further outwards, so it can be removed without having to disassemble the bottom gear.
  • Gears_main_arm_15mm.stl
    • camfer for 3mm bolts needed. Any stray strand of filament makes this harder then it needs to be 
    • label the gear "main gear"
  • Gears_second_arm.stl
    • no tapper for M5 nuts
    • mirror the small gear to have the bolt on the inside of the machine (accessible from above). That way it won't interfere with a longer bolt in the side_plates and the side plate can be made stronger by not having the access tunnes for this bolt.
  • second_gear_arm.stl
    • no hexagonal holes for the M3 nuts. They may shake loose.
  • link.stl
    • M4 hole is too tight 
    • large hole needs camfer. Hard to inser.
    • A flat instead of round end should make push-fitting the rod with force easier
  • triangle.stl
    • M3 holes definately need a camfer
    • convert to use M4 and get rid of the 625Z bearing size in favor of only using 624Z
  • end_part3.stl
    • integrate the M4 spacer into this part
  • bracket_part1.stl
    • wider brace to allow for 16mm aluminium rods 
    • convert to use M4 and get rid of the 625Z bearing size in favor of only using 624Z
  • bracket_part2.stl
    • should have a slightly wider holt then bracket_part1.stl , so the bolt fastens properly in the plastic
    • should allow for wider bolt-heads
    • wider brace to allow for 16mm aluminium rods 
    • convert to use M4 and get rid of the 625Z bearing size in favor of only using 624Z


I'm planning to use this trivial Arduino G-Code parser, throw out the Bresenham line algorithm (since we need not generate step+dir pulses ourself) to instead feed tool-coordinates into the L6470 Autodriver boards.