The Bionic Eye Module was modeled in OpenSCAD.  Both the OpenSCAD source and STL files can be found below.  This model should easily fit in the work envelope of most 3D printers.  It will work well with either ABS or PLA.  And since high strength is not required, you can print with minimal infill.

The prototype was printed on an UP! Plus2 using white ABS with 0.15mm Z- resolution and ‘hollow honeycomb’ fill.  Total print time was about 3 hours.

When the print is complete, remove any support material and lightly sand any rough spots.  Use a dental pick or a bent paperclip to clean out any support material from the screw holes.

Locate the center of the eye.  (It is where the eyeball was attached to the printing platform.)  Using permanent markers or paint (preferred), create an iris and pupil in the center of the eye.  You can use the concentric rings from the print layers as a centering guide.

OpenSCAD Source:

// Bionic Eye Module
// by Bill Earl
// for Adafruit Industries
// 

// Model of LS-0003 sub-micro sized servo
module LS0003_motor(c = "LightSteelBlue"){
	difference(){			
		union(){
			color(c) cube([19.5,8.5,16], center=true);
			color(c) translate([0,0,4.5]) cube([27.5,8.5,1], center=true);
			color(c) translate([5.5,0,2]) cylinder(r=3.9, h=19, $fn=20, center=true);
			color(c) translate([-3,0,1]) cylinder(r=0.8, h=16, $fn=20, center=true);
			color(c) translate([2,0,1]) cylinder(r=2.2, h=17, $fn=20, center=true);		
			color("white") translate([5.5,0,3.5]) cylinder(r=1.85, h=22.5, $fn=20, center=true);				
		}
		translate([10,0,-11]) rotate([0,-30,0]) cube([8,13,4], center=true);
		for ( hole = [11.5,-11.5] ){
			translate([hole,0,5]) cylinder(r=1, h=4, $fn=20, center=true);
		}	
	}
}

// Motor Bracket
module motorBracket() difference()
{
	cube([10, 5, 19]);
	translate([0,0,-0.5]) scale([2.2,1,1]) cylinder(20, r=4,, $fn=20);
}

// Model of complete motor assembly w/bracket.
module motorAssembly ()
{
	translate([0,0,-1.5])LS0003_motor();
	translate([0,12.5,0])rotate([-90,0,0])LS0003_motor();

	translate([10,14.5,-9.5])
	rotate([90,0,-90]) color("white") motorBracket();
}


radius = 23;
diameter = radius * 2;

// The Eyeball
rotate([90, 45, 0]) color("white") difference()
{
  sphere(radius, $fn=120);
  difference()
	{
		sphere(radius-1, $fn=120);
		translate([0,0,11]) cylinder(h=radius, r=radius);
	}

  	#translate([-5.5,0,radius - 22.75]) motorAssembly();
	translate([0,0,10]) cylinder(h=radius, r=1, $fn=20);
	translate([0,0,15.5]) cylinder(h=radius, r=2, $fn=20);
	rotate([0,0,90])translate([5,5,-9]) union()
	{
		cube([diameter, diameter, 20]);
		translate([0,0,10]) rotate([-90,0,0]) cylinder(h=diameter, r=10);
		translate([0,0,10]) rotate([0,90,0]) cylinder(h=diameter, r=10);;
	}
}


// Motor Assembly Bracket
color("LightSteelBlue") translate([radius, -radius, -radius]) difference() motorBracket();

// Eye cup insert
color("gray")translate([(radius * 2.5), 0, -radius]) difference()
{
	union()
	{
		translate([0,0,6])cylinder(10, r= radius, $fn = 120);
		translate([0,0,12]) cylinder(4, r= radius+2, $fn = 120);
		cylinder(6, r2=radius*0.6, r1=5, $fn=120);
	}
	translate([0,0,28]) sphere(radius + 2);
	translate([0,0,9]) cylinder(12, r= radius-1, $fn = 120);
	translate([0,0,-1]) cylinder(h=10, r=1, $fn=20);
	translate([0,0,1.5]) cylinder(h=10, r=1.85, $fn=20);

	difference()
	{
		cylinder(10, r=radius * 0.75, $fn=120);
		cylinder(10, r=radius * 0.3, $fn=120);
		translate([0,-20,0]) cube([20, 40, 20]);
	}
}

This guide was first published on Oct 13, 2014. It was last updated on Oct 13, 2014.

This page (Printing the Parts) was last updated on Sep 21, 2021.

Text editor powered by tinymce.