diff --git a/case/case_bottom_3d-print.scad b/case/case_bottom_3d-print.scad new file mode 100644 index 0000000..9961ff2 --- /dev/null +++ b/case/case_bottom_3d-print.scad @@ -0,0 +1,187 @@ +$fn=30; + +BOARD_WIDTH=96.5; +BOARD_HEIGHT=96.0; +BOARD_THICKNESS=1.6; +HOLE_NW_X=4.0; +HOLE_NW_Y=4.0; +HOLE_NE_X=92.5; +HOLE_NE_Y=4.0; +HOLE_SW_X=4.0; +HOLE_SW_Y=92.0; +HOLE_SE_X=92.5; +HOLE_SE_Y=92.0; + +WALL_SPACE=1.0; +WALL_THICKNESS=2.0; +HOLE_HEIGHT=15.0; // USB A is 14.5 + +module pillar() { + translate([0,0,HOLE_HEIGHT/2]) { + difference() { + cylinder(h=HOLE_HEIGHT, d=6, center=true); + cylinder(h=HOLE_HEIGHT, d=3.5, center=true); + } + } +} + +mirror([1,0,0]) { // we used bottom view + +// bottom plate +cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS]); + +// screw mounts +translate([WALL_THICKNESS+WALL_SPACE+HOLE_NW_X,WALL_THICKNESS+WALL_SPACE+HOLE_NW_Y,WALL_THICKNESS]) { + pillar(); +} +translate([WALL_THICKNESS+WALL_SPACE+HOLE_NE_X,WALL_THICKNESS+WALL_SPACE+HOLE_NE_Y,WALL_THICKNESS]) { + pillar(); +} +translate([WALL_THICKNESS+WALL_SPACE+HOLE_SW_X,WALL_THICKNESS+WALL_SPACE+HOLE_SW_Y,WALL_THICKNESS]) { + pillar(); +} +translate([WALL_THICKNESS+WALL_SPACE+HOLE_SE_X,WALL_THICKNESS+WALL_SPACE+HOLE_SE_Y,WALL_THICKNESS]) { + pillar(); +} + +// side +MARGIN=1.0; +USB_B_WIDTH=12.0+MARGIN; +USB_B_HEIGHT=11.0+MARGIN; +USB_A_WIDTH=7.0+MARGIN; +USB_A_HEIGHT=14.5+MARGIN; +BARREL_WIDTH=9.0+MARGIN; +BARREL_HEIGHT=11.3+MARGIN; +INDUCTOR_HEIGHT=7.5; + +// side north +difference() { + cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]); + // DFP 7 USB A + translate([WALL_THICKNESS+WALL_SPACE+12.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]); + } + // DFP 7 BARREL + translate([WALL_THICKNESS+WALL_SPACE+28-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]); + } + // DFP 6 USB A + translate([WALL_THICKNESS+WALL_SPACE+40.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]); + } + // DFP 6 BARREL + translate([WALL_THICKNESS+WALL_SPACE+56-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]); + } + // DFP 5 USB A + translate([WALL_THICKNESS+WALL_SPACE+68.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]); + } + // DFP 5 BARREL + translate([WALL_THICKNESS+WALL_SPACE+84-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]); + } +} + +// side west +difference() { + cube([WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]); + // USB B + translate([0,WALL_THICKNESS+WALL_SPACE+48-USB_B_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-USB_B_HEIGHT]) { + cube([WALL_THICKNESS,USB_B_WIDTH,USB_B_HEIGHT]); + } + // 5V BARREL + translate([0,WALL_THICKNESS+WALL_SPACE+33-BARREL_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([WALL_THICKNESS,BARREL_WIDTH,BARREL_HEIGHT]); + } + // 12V BARREL + translate([0,WALL_THICKNESS+WALL_SPACE+63-BARREL_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([WALL_THICKNESS,BARREL_WIDTH,BARREL_HEIGHT]); + } +} + +// side south +translate([0,BOARD_HEIGHT+WALL_THICKNESS+2*WALL_SPACE,0]) { + difference() { + cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]); + // DFP 1 USB A + translate([WALL_THICKNESS+WALL_SPACE+27.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]); + } + // DFP 1 BARREL + translate([WALL_THICKNESS+WALL_SPACE+12-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]); + } + // DFP 2 USB A + translate([WALL_THICKNESS+WALL_SPACE+55.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]); + } + // DFP 2 BARREL + translate([WALL_THICKNESS+WALL_SPACE+40-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]); + } + // DFP 3 USB A + translate([WALL_THICKNESS+WALL_SPACE+83.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]); + } + // DFP 3 BARREL + translate([WALL_THICKNESS+WALL_SPACE+68-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]); + } + } +} + +// side east +translate([BOARD_WIDTH+WALL_THICKNESS+2*WALL_SPACE,0,0]) { + difference() { + cube([WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]); + // DFP 4 USB A + translate([0,WALL_THICKNESS+WALL_SPACE+40.5-USB_A_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) { + cube([WALL_THICKNESS,USB_A_WIDTH,USB_A_HEIGHT]); + } + // DFP 4 BARREL + translate([0,WALL_THICKNESS+WALL_SPACE+56-BARREL_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) { + cube([WALL_THICKNESS,BARREL_WIDTH,BARREL_HEIGHT]); + } + } +} + +// top plate +SWITCH_WIDTH=3.0+0.5; +SWITCH_LENGTH=6.0+0.5; + +translate([0,0,WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]) { + difference() { + cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS]); + // DFP 7 + translate([WALL_THICKNESS+WALL_SPACE+20.0, WALL_THICKNESS+WALL_SPACE+6.7,WALL_THICKNESS/2]) { + cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true); + } + // DFP 6 + translate([WALL_THICKNESS+WALL_SPACE+48.0, WALL_THICKNESS+WALL_SPACE+6.7,WALL_THICKNESS/2]) { + cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true); + } + // DFP 5 + translate([WALL_THICKNESS+WALL_SPACE+76.0, WALL_THICKNESS+WALL_SPACE+6.7,WALL_THICKNESS/2]) { + cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true); + } + // DFP 4 + translate([WALL_THICKNESS+WALL_SPACE+89.7, WALL_THICKNESS+WALL_SPACE+48.0,WALL_THICKNESS/2]) { + cube([SWITCH_LENGTH, SWITCH_WIDTH, WALL_THICKNESS], center=true); + } + // DFP 3 + translate([WALL_THICKNESS+WALL_SPACE+76.0, WALL_THICKNESS+WALL_SPACE+89.3,WALL_THICKNESS/2]) { + cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true); + } + // DFP 2 + translate([WALL_THICKNESS+WALL_SPACE+48.0, WALL_THICKNESS+WALL_SPACE+89.3,WALL_THICKNESS/2]) { + cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true); + } + // DFP 1 + translate([WALL_THICKNESS+WALL_SPACE+20.0, WALL_THICKNESS+WALL_SPACE+89.3,WALL_THICKNESS/2]) { + cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true); + } + } +} + +} \ No newline at end of file diff --git a/case/case_bottom_3d-print.stl b/case/case_bottom_3d-print.stl new file mode 100644 index 0000000..573724d Binary files /dev/null and b/case/case_bottom_3d-print.stl differ diff --git a/case/case_top_laser-cut.svg b/case/case_top_laser-cut.svg new file mode 100644 index 0000000..efaf947 --- /dev/null +++ b/case/case_top_laser-cut.svg @@ -0,0 +1,45 @@ + + + + + OpenSCAD Model + +