FuriousFPV Moskito 70 Undercarriage
This model is the undercarriage for the Furious FPV Moskito 70 drone.
I designed this because I got tired of taking ages to find the thing after a crash because the battery would get ejected, rendering the beeper useless. It uses the same mounting holes and screws as the stock covers.
The battery compartment is sized to fit 300mAh Turnigy Nano Tech batteries plus a little space for a Velcro pad between the battery and the frame.
Version 2
You obviously need two of these.
$fn=50; $armWidth=6.1; $armLength=49; $armHeight=13; $screwDiameter=1.8; $screwInnerDistance=11; $screwOuterDistance=47; $batteryHeight=18.5; $batteryWidth=12.5; $batteryHeightPadding=1.5; $batteryHeightTotal=$batteryHeight+$batteryHeightPadding; %translate([2.55,-25,0]) cube([0.5,0.5,0.5]); %translate([0,-35,0]) cube([$armWidth,0.5,0.5], center=true); module arm() { module armBody() { translate([0,-$armLength+1.5,0]){ hull() { cylinder(h=3, d=3); translate([0,10,0]) { cylinder(h=$armHeight, d=$armWidth); cylinder(h=1, d=$armWidth); } translate([0,$armLength-(1.5+($armWidth/2))-14,0]) { cylinder(h=$armHeight, d=$armWidth); cylinder(h=1, d=$armWidth); } } } } module armShell() { difference() { armBody(); translate([0,-$armLength+1.5,-1]){ hull() { translate([0,3,0]) { cylinder(h=3, d=2); } translate([0,10,0]) { cylinder(h=$armHeight, d=$armWidth-1.1); cylinder(h=1, d=$armWidth-1.5); } translate([0,$armLength-(1.5+($armWidth/2))-14,0]) { cylinder(h=$armHeight, d=$armWidth-1.1); cylinder(h=1, d=$armWidth-1.5); } } } } } module armScrewsBlocks() { translate([0,-$screwInnerDistance,0]) { cylinder(d1=$armWidth,h=4, d2=5); } } module batteryPlate() { // hull() { // #translate([0,-14,0]) cylinder(d=4,h=3); // #translate([14,0,0]) cube([1,1,3]); // translate([-14,0,0]) cube([1,1,3]); // } difference() { // intersection() { // translate([0,-19.8,0]) rotate([0,0,45]) cube([14,14,3]); // translate([-18/2,-20,0]) cube([18,20,3]); // } union() { translate([0,-13,0]) rotate([0,0,45]) cube([9.5,9.5,3]); translate([0,-11,3/2]) cube([$armWidth,15,3], center=true); hull() { translate([0,-15.5,2]) cylinder(d=$armWidth,h=1); translate([0,-18,4]) cylinder(d=$armWidth,h=1); } } hull() { translate([0,-17,-0.5]) cylinder(d=5,h=8); translate([0,-20,-0.5]) cylinder(d=5,h=8); } } } difference() { union() { armShell(); // #armScrewsBlocks(); batteryPlate(); } } } module armScrewsHoles() { module armScrewHole() { translate([0,-$screwOuterDistance,0]) { cylinder(h=3.5, d=$screwDiameter); } translate([0,-$screwInnerDistance,0]) { cylinder(h=4, d=$screwDiameter); } } armScrewHole(); rotate([0,0,90]) armScrewHole(); rotate([0,0,180]) armScrewHole(); rotate([0,0,270]) armScrewHole(); } module arms() { arm(); rotate([0,0,90]) arm(); // rotate([0,0,180]) arm(); // rotate([0,0,270]) arm(); } module batteryHolderCover() { rotate([0,0,45]) { translate([0,0,($batteryHeightTotal+1)/2]) { cube([$batteryWidth+2.5,25,$batteryHeightTotal+1], center=true); } } } module batteryHolderCoverSplit() { rotate([0,0,45]) { translate([0,6,($batteryHeightTotal+1)/2]) { cube([$batteryWidth+1.5,8,$batteryHeightTotal+1], center=true); } translate([0,-6,($batteryHeightTotal+1)/2]) { cube([$batteryWidth+1.5,8,$batteryHeightTotal+1], center=true); } } } module batteryHolderHollow() { rotate([0,0,45]) { translate([0,0,($batteryHeightTotal)/2]) { cube([$batteryWidth,25+1,$batteryHeightTotal], center=true); } } } module batteryHolderFillet() { rotate([0,0,45]) { translate([$batteryWidth/2,0,$batteryHeightTotal]) { rotate([0,45,0]) { cube([1,25,1], center=true); } } translate([-$batteryWidth/2,0,$batteryHeightTotal]) { rotate([0,45,0]) { cube([1,25,1], center=true); } } } } difference() { union() { arms(); // batteryHolderCover(); } // batteryHolderHollow(); armScrewsHoles(); rotate([0,0,45]) translate([0,0,1.5/2]) cube([40,10,1.5], center=true); rotate([0,0,-45]) translate([0,0,1.5/2]) cube([40,10,1.5], center=true); } //batteryHolderFillet(); //%rotate([0,0,45]) translate([0,0,-1]) cube([28,28,3], center=true);
Version 1

$fn=50; $armWidth=6.1; $armLength=49; $armHeight=13; $screwDiameter=1.8; $screwInnerDistance=11; $screwOuterDistance=47; $batteryHeight=18.5; $batteryWidth=12.5; $batteryHeightPadding=1.5; $batteryHeightTotal=$batteryHeight+$batteryHeightPadding; module arm() { module armBody() { translate([0,-$armLength+1.5,0]){ hull() { cylinder(h=3, d=3); translate([0,10,0]) { cylinder(h=$armHeight, d1=$armWidth, d2=5.5); cylinder(h=1, d=$armWidth); } translate([0,$armLength-(1.5+($armWidth/2))-3,0]) { cylinder(h=$armHeight, d1=$armWidth, d2=5.5); cylinder(h=1, d=$armWidth); } } } } module armShell() { difference() { armBody(); translate([0,-$armLength+1.5,-1]){ hull() { translate([0,3,0]) { cylinder(h=3, d=2); } translate([0,10,0]) { cylinder(h=$armHeight, d1=$armWidth-1.5, d2=4.25); cylinder(h=1, d=$armWidth-1.5); } translate([0,$armLength-(1.5+($armWidth/2))-3,0]) { cylinder(h=$armHeight, d1=$armWidth-1.5, d2=4.25); cylinder(h=1, d=$armWidth-1.5); } } } } } module armScrewsBlocks() { translate([0,-$screwInnerDistance,0]) { cylinder(d1=$armWidth,h=4, d2=5); } } difference() { union() { armShell(); armScrewsBlocks(); } } } module armScrewsHoles() { module armScrewHole() { translate([0,-$screwOuterDistance,0]) { cylinder(h=3.5, d=$screwDiameter); } translate([0,-$screwInnerDistance,0]) { cylinder(h=4, d=$screwDiameter); } } #armScrewHole(); rotate([0,0,90]) armScrewHole(); rotate([0,0,180]) armScrewHole(); rotate([0,0,270]) armScrewHole(); } module arms() { arm(); rotate([0,0,90]) arm(); rotate([0,0,180]) arm(); rotate([0,0,270]) arm(); } module batteryHolderCover() { rotate([0,0,45]) { translate([0,0,($batteryHeightTotal+1)/2]) { cube([$batteryWidth+2.5,25,$batteryHeightTotal+1], center=true); } } } module batteryHolderCoverSplit() { rotate([0,0,45]) { translate([0,6,($batteryHeightTotal+1)/2]) { cube([$batteryWidth+1.5,8,$batteryHeightTotal+1], center=true); } translate([0,-6,($batteryHeightTotal+1)/2]) { cube([$batteryWidth+1.5,8,$batteryHeightTotal+1], center=true); } } } module batteryHolderHollow() { rotate([0,0,45]) { translate([0,0,($batteryHeightTotal)/2]) { cube([$batteryWidth,25+1,$batteryHeightTotal], center=true); } } } module batteryHolderFillet() { rotate([0,0,45]) { translate([$batteryWidth/2,0,$batteryHeightTotal]) { rotate([0,45,0]) { cube([1,25,1], center=true); } } translate([-$batteryWidth/2,0,$batteryHeightTotal]) { rotate([0,45,0]) { cube([1,25,1], center=true); } } } } difference() { union() { arms(); batteryHolderCover(); } batteryHolderHollow(); armScrewsHoles(); } batteryHolderFillet();