====== GoPro Mount Design ====== Sometimes you want to mount something to another thing - this allows you to use the many many different variations of GoPro mount out there to attach your design. There's aftermarket mounts all over the internet with sticky pads, windscreen suckers, ball joints, handles, clamps, helmet mounts, dog harnesses... you name it! Bolt is an M5 bolt. A closed dome nut is a good touch for the captive nut. ====== Bracket to accept a GoPro ====== /* * Make a Go-Pro Mount - Bracket to accept a GoPro */ module gopro_mount() { gp_finger = 3; gp_gap = 3; gp_hg = gp_gap/2; gp_screw = 5.1; gp_nut_af = 8.1; gp_nut_depth = 3; gp_od = 15; translate([gp_gap*2.5,gp_od,0]) rotate([0,90,180]) { difference() { // Body union() { cylinder(r=(gp_od/2), h=gp_gap*5); // Boss for nut translate([0,0,gp_gap*5]) { cylinder(r1=(gp_od/2),r2=(gp_od/2)-2, h=gp_nut_depth); } // Base block translate([-(gp_od/2),0,0]) { cube([gp_od,gp_od,gp_gap*5]); // Flared base translate([0,-gp_gap,0]) { minkowski() { cube([gp_od,gp_gap,gp_gap*5]); translate([0,gp_od,0]) { rotate([90,0,0]) { cylinder(r1=2.50, r2=0, h=gp_gap); } } } } } } // Negative union() { // Centre bore translate([0,0,-0.5]) { cylinder(r=(gp_screw/2), h=gp_gap*6); } // Slice #1 translate([0,0,gp_gap+gp_hg]) { cube([gp_od+1, gp_od+1, gp_gap], true); } // Slice #2 translate([0,0,(gp_gap*3)+gp_hg]) { cube([gp_od+1, gp_od+1, gp_gap], true); } // Recess for nut translate([0,0,gp_gap*5]) { cylinder(r=(gp_nut_af/2), h=gp_nut_depth+1, $fn = 6); } } } } } ====== Bracket to mount in place of a GoPro ====== /* * Make a Go-Pro Mount - Bracket to mount AS a GoPro */ module gopro_bracket() { gp_finger = 3; gp_gap = 3; gp_hg = gp_gap/2; gp_screw = 5.1; gp_nut_af = 8.1; gp_nut_depth = 3; gp_od = 15; translate([gp_gap*2.5,gp_od,0]) rotate([0,90,180]) { difference() { // Body union() { translate([0,0,gp_gap]) { cylinder(r=(gp_od/2), h=gp_gap*3); } // Base block translate([-(gp_od/2),0,0]) { translate([0,0,gp_gap]) { cube([gp_od,gp_od,gp_gap*3]); } // Support sides translate([gp_od,6,3]) { rotate([0,180,0]) { prism(gp_od, 3, 3); } } translate([0,6,12]) { rotate([0,0,0]) { prism(gp_od, 3, 3); } } // Flared base translate([0,-gp_gap,0]) { minkowski() { cube([gp_od,gp_gap,gp_gap*5]); translate([0,gp_od,0]) { rotate([90,0,0]) { cylinder(r1=2.50, r2=0, h=gp_gap); } } } } } } // Negative union() { // Centre bore translate([0,0,-0.5]) { cylinder(r=(gp_screw/2), h=gp_gap*6); } // Slice #1 translate([0,0,gp_gap*2.5]) { cube([gp_od+1, gp_od+1, gp_gap], true); } } } } }