diff --git a/case/cheapino-bottom.scad b/case/cheapino-bottom.scad new file mode 100644 index 0000000..a99fab1 --- /dev/null +++ b/case/cheapino-bottom.scad @@ -0,0 +1,108 @@ +use + +height = 95.1738; +width = 132.6134; +step = 0.05; +$fn=30; + +// hotswap socket is ~1.75 high at the highest. +// magsafe ring is 0.4 high +// 2.5 will leave 0.35 at the thinnest(between hotswap and magsafe). + +height = 2.5; +$fn=30; + + +// bottom plate +module bottom() +{ +color("pink") +translate([0,0,0]) + linear_extrude(height) + offset( delta=0) + base(); +} + +module base() +{ + import ("plate.svg", center=true); +} + +module board() +{ +linear_extrude(1) +rotate([0,180,0]) +import("cheapino-brd.svg", center=true); +} + +//import("plate_and_holes.svg", center=true); + + +//difference() +//{ +// bottom(); +//v translate([13,11,-0.4]) + // magsafe_ring(); + +// The exported board from KiCad, for debug +translate([0,0,0]) + board(); + +// Columns starting from MCU +translate([19.3,-2.84,0]) +column(); + +translate([0.3,-0.3,0]) +column(); + +translate([-18.7,6.05,0]) +column(); + +translate([-37.7,-0.3,0]) +column(); + +translate([-56.7,-10.308,0]) +column(); + +// Thumb cluster +translate([14.6264,-24.52]) +switch(); + +rotate([0,0,-10]) +translate([40.3,-19.3]) +switch(); + +rotate([0,0,-23]) +translate([65.65,-7.09]) +switch(); + +// The diodes +translate([-18, 10.21, 0]) diode(); +translate([-28.59, 10.21, 0]) diode(); +translate([-26.23, 29.18, 0]) diode(); +translate([-9.463,21.97,0]) diode(); +translate([0.8, 21.97, 0]) diode(); +translate([14.106, 19.872, 0]) diode(); +translate([16.138,1.066,0]) diode(); +translate([5.888,-19.128,0]) diode(); +translate([-5.018, 2.971, 0]) diode(); +translate([-18,10.21,0]) diode(); + +/* +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); +translate([-18,10.21,0]) diode(); + */ +//} +// circle(55.3); \ No newline at end of file diff --git a/case/cheapino-brd.svg b/case/cheapino-brd.svg new file mode 100644 index 0000000..9583ff1 --- /dev/null +++ b/case/cheapino-brd.svg @@ -0,0 +1,4812 @@ + + + +SVG Image created as cheapino-brd.svg date 2024/05/17 10:37:08 + Image generated by PCBNEW + + + +Cheapino 2 +Cheapino 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +by Tompi +by Tompi + + + + + + + + + + +Cheapino 2 +Cheapino 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/case/cheapino-top.scad b/case/cheapino-top.scad new file mode 100644 index 0000000..0158de1 --- /dev/null +++ b/case/cheapino-top.scad @@ -0,0 +1,81 @@ +height = 95.1738; +width = 132.6134; +step = 0.05; +$fn=30; + +height_translation = 0; + + + +// Height of case is 5mm from pcb to switch inset, +// plus 1.6mm pcb height, for a total of 6.6mm +color("red") +for (i = [0.2:step:2.5]) +{ + translate([0,0,i]) //height_translation]) + base_line_extruded(i, 1); +} + +color("green") +translate([0,0,2.5]) //height_translation]) + base_line_extruded(2.5, 1.6); + + +color("blue") +for (i = [4.1:step:6.6]) +{ + translate([0,0,i-1]) //height_translation]) + base_line_extruded(6.6-i, 1); +} + +// Lip to stop pcb +color("yellow") +translate([0,0,1.6]) + difference() + { + offset( delta=1) + base(); + offset( delta=-1) + base(); + } + + +// Top plate +color("pink") +translate([0,0,5.1]) + linear_extrude(1.5) +offset( delta=0.5) + base(); + + + +module base_line_extruded (factor, extrusion) +{ + linear_extrude(extrusion) + base_line(factor); +} + +module base_extended (factor, extrusion) +{ + linear_extrude(extrusion) + offset( delta=factor) + base(); +} + +module base() +{ + import ("plate.svg", center=true); +} + + +module base_line(expanded) +{ + difference() + { + offset( delta=expanded+1) + base(); + offset( delta=expanded) + base(); + } +} + diff --git a/case/hotswap.scad b/case/hotswap.scad new file mode 100644 index 0000000..76dbeaf --- /dev/null +++ b/case/hotswap.scad @@ -0,0 +1,93 @@ +//$fn=50; + +module hotswap_mx() { +thickness=1.85; + +// Holes +translate([3.175,2.2,0]) +linear_extrude(height=3.05) + circle(d=3); + +translate([-3.175,-0.36,0]) +linear_extrude(height=3.05) + circle(d=3); + +// Body +linear_extrude(height=thickness) +square([11.1,4.2], center=true); + +translate([0,1.9,0]) +linear_extrude(height=thickness) +square([5.65, 2.09]); + +// Metal soldering parts +translate([5.45,1.04,0]) +linear_extrude(height=thickness) +square([2.5, 2.55]); + +translate([-7.95,-1.7,0]) +linear_extrude(height=thickness) +square([2.5, 2.55]); +} + +module column() { +switch(); + +translate([0, 19, 0]) switch(); + +translate([0, 38, 0]) switch(); +} + +module switch() { + // hotswap socket + color("yellow") + translate([0,0,1.85]) + rotate([180,0,0]) + hotswap_mx(); + + // main pin of switch + // 4mm d, 2.8mm high, 1.6mm pcb + // means 1.2 of it sticks below, 1.3 for margin + color("teal") + translate([-0.57, -4.7, 0]) + linear_extrude(height=1.3) + circle(d=4.2); + + // The two switch alignment pins + // Could not find specs for these, assuming max 3.3=1.7 below + color("brown") + translate([-5.74, -4.7, 0]) + linear_extrude(height=1.7) + circle(d=1.8); + + color("brown") + translate([4.45, -4.7, 0]) + linear_extrude(height=1.7) + circle(d=1.8); + +} + +module diode() { +color("blue") +linear_extrude(height=1.65) +square([9.5, 1.6]); +} + +module magsafe_ring() +{ +linear_extrude(height=0.5) +difference() { + circle(d=55.3); + circle(d=50.2); + } +} + + + +/* +hotswap_mx(); + +color("green") +translate([0,0,0]) + import("hotswap.stl"); + */ \ No newline at end of file