Merge master changes #3
@ -18,7 +18,7 @@ base_ext = [40, 20.2, 16.5];
|
|||||||
// The dimensions of the NSCCP sim holder
|
// The dimensions of the NSCCP sim holder
|
||||||
sim = [13.5, 13, 1.37];
|
sim = [13.5, 13, 1.37];
|
||||||
|
|
||||||
bay = [12, 8.95, 0.8];
|
bay = [12, 8.95, 0.92];
|
||||||
|
|
||||||
// The default wall thickness
|
// The default wall thickness
|
||||||
side_wall = 1.5;
|
side_wall = 1.5;
|
||||||
@ -36,17 +36,19 @@ usb_c_h = 2.2;
|
|||||||
rail_h = 4.25; // to top of rail
|
rail_h = 4.25; // to top of rail
|
||||||
|
|
||||||
// Boss locations matching the other Framework Expansion Cards
|
// Boss locations matching the other Framework Expansion Cards
|
||||||
boss_inc_y = 10.5;
|
|
||||||
boss_inc_x = 4.2;
|
boss_inc_x = 4.2;
|
||||||
boss_r = 3;
|
boss_r = 1.5;
|
||||||
|
boss_inc_y = 18.5+boss_r;
|
||||||
|
|
||||||
boss_ext_y = 8.75;
|
boss_ext_y = 8.57;
|
||||||
boss_ext_x = 4;
|
boss_ext_x = 4;
|
||||||
|
boss_ext_r = 2.5;
|
||||||
|
boss_ext_inner = 2.1;
|
||||||
|
|
||||||
boss_ext_top_y = 6;
|
boss_ext_top_y = 6;
|
||||||
|
|
||||||
lid_boss_depth = 3;
|
lid_boss_r = 1.05;
|
||||||
lid_wall_thickness = lid_boss_depth+side_wall;
|
lid_wall_thickness = 3+side_wall;
|
||||||
|
|
||||||
gap = 0.25;
|
gap = 0.25;
|
||||||
|
|
||||||
@ -61,6 +63,9 @@ ext_screw_hole = 2.5+side_wall;
|
|||||||
ledge_cut = 0.6;
|
ledge_cut = 0.6;
|
||||||
ledge_cut_d = 3.2;
|
ledge_cut_d = 3.2;
|
||||||
|
|
||||||
|
led_guide = [1.2, 10.65];
|
||||||
|
led_guide_stopper = [1.5, 1,];
|
||||||
|
|
||||||
// The rail cutout in the sides of the card
|
// The rail cutout in the sides of the card
|
||||||
module rail(make_printable) {
|
module rail(make_printable) {
|
||||||
rail_depth = 0.81;
|
rail_depth = 0.81;
|
||||||
@ -165,7 +170,11 @@ module expansion_card_lid() {
|
|||||||
// makes lower lid
|
// makes lower lid
|
||||||
translate([side_wall+gap, 0, base[2]-lower_lid_z]) cube([base[0]-side_wall*2-gap*2, base[1]-side_wall-gap, lower_lid_z]);
|
translate([side_wall+gap, 0, base[2]-lower_lid_z]) cube([base[0]-side_wall*2-gap*2, base[1]-side_wall-gap, lower_lid_z]);
|
||||||
// makes upper lid
|
// makes upper lid
|
||||||
translate([-side_wall*2-gap, -base_ext[1]+side_wall+gap, base_ext[2]-side_wall]) cube([base_ext[0]-side_wall*2-gap*2, base_ext[1]-side_wall*2-gap*2, side_wall]);
|
difference() {
|
||||||
|
translate([-side_wall*2-gap, -base_ext[1]+side_wall+gap, base_ext[2]-side_wall]) cube([base_ext[0]-side_wall*2-gap*2, base_ext[1]-side_wall*2-gap*2, side_wall]);
|
||||||
|
translate([-0.5,-16.4,8]) led_cylinder(); // hollow for D2 LED cylinder
|
||||||
|
translate([30.55,-16.4,8]) led_cylinder(); // hollow for D3 LED cylinder
|
||||||
|
}
|
||||||
// joins them together
|
// joins them together
|
||||||
translate([side_wall+gap, -side_wall, base[2]-lower_lid_z]) cube([base[0]-side_wall*2-gap*2, side_wall, base_ext[2]-base[2]+gap*2+0.1]);
|
translate([side_wall+gap, -side_wall, base[2]-lower_lid_z]) cube([base[0]-side_wall*2-gap*2, side_wall, base_ext[2]-base[2]+gap*2+0.1]);
|
||||||
translate([side_wall+gap,-gap-side_wall,base_ext[2]-side_wall]) cube([base[0]-side_wall*2-gap*2, side_wall, side_wall]);
|
translate([side_wall+gap,-gap-side_wall,base_ext[2]-side_wall]) cube([base[0]-side_wall*2-gap*2, side_wall, side_wall]);
|
||||||
@ -182,12 +191,14 @@ module expansion_card_lid() {
|
|||||||
// add screw holder to lid
|
// add screw holder to lid
|
||||||
difference() {
|
difference() {
|
||||||
translate([-3.25,-base_ext[2]-side_wall-gap*3,sma_height]) cube([lid_wall_thickness, base_ext[2]+gap*2, base_ext[2]-sma_height-side_wall]);
|
translate([-3.25,-base_ext[2]-side_wall-gap*3,sma_height]) cube([lid_wall_thickness, base_ext[2]+gap*2, base_ext[2]-sma_height-side_wall]);
|
||||||
rotate([0,90,0]) translate([-base_ext[2]+3,-6,-3.25]) cylinder(r = lid_boss_depth/2, h = pcb_h, $fn = 64);
|
rotate([0,90,0]) translate([-base_ext[2]+3,-6,-3.25]) cylinder(r = lid_boss_r, h = 3, $fn = 64);
|
||||||
|
translate([-0.5,-16.4,8]) led_cylinder(); // hollow for D2 LED cylinder
|
||||||
}
|
}
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
translate([base_ext[0]-3.25*2-side_wall*3-gap,-base_ext[2]-side_wall-gap*3,sma_height]) cube([lid_wall_thickness, base_ext[2]+gap*2, base_ext[2]-sma_height-side_wall]);
|
translate([base_ext[0]-3.25*2-side_wall*3-gap,-base_ext[2]-side_wall-gap*3,sma_height]) cube([lid_wall_thickness, base_ext[2]+gap*2, base_ext[2]-sma_height-side_wall]);
|
||||||
rotate([0,90,0]) translate([-base_ext[2]+3,-6,base_ext[0]-2.52*2-side_wall*3-gap]) cylinder(r = lid_boss_depth/2, h = pcb_h, $fn = 64);
|
rotate([0,90,0]) translate([-base_ext[2]+3,-6,base_ext[0]-2.5*2-side_wall*3-gap]) cylinder(r = lid_boss_r, h = 3, $fn = 64);
|
||||||
|
translate([30.55,-16.4,8]) led_cylinder(); // hollow for D3 LED cylinder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// make sma holes
|
// make sma holes
|
||||||
@ -225,7 +236,10 @@ module expansion_card_base(open_end, make_printable, pcb_mount="boss") {
|
|||||||
translate([side_wall, inner[1]+side_wall-notch_l, side_wall]) cube([notch, notch_l, notch_h]);
|
translate([side_wall, inner[1]+side_wall-notch_l, side_wall]) cube([notch, notch_l, notch_h]);
|
||||||
translate([inner[0]+side_wall, inner[1]+side_wall-notch_l, side_wall+notch_h/2]) rotate([0, 0, 180]) rotate([0, 90, 0]);
|
translate([inner[0]+side_wall, inner[1]+side_wall-notch_l, side_wall+notch_h/2]) rotate([0, 0, 180]) rotate([0, 90, 0]);
|
||||||
translate([inner[0]+side_wall-notch, inner[1]+side_wall-notch_l, side_wall]) cube([notch, notch_l, notch_h]);
|
translate([inner[0]+side_wall-notch, inner[1]+side_wall-notch_l, side_wall]) cube([notch, notch_l, notch_h]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// cutout for sim card access
|
||||||
|
translate([0,bay[1]-sim[1]/2+2.53,1.67]) cube(bay);
|
||||||
|
|
||||||
// The rounded front edge to match the laptop
|
// The rounded front edge to match the laptop
|
||||||
edge_r = 0.8;
|
edge_r = 0.8;
|
||||||
@ -248,10 +262,8 @@ module expansion_card_base(open_end, make_printable, pcb_mount="boss") {
|
|||||||
// add extra bottom thickness to provide room for back of board
|
// add extra bottom thickness to provide room for back of board
|
||||||
translate([0,0,-hollow_bottom_z]) cube([base[0], base[1]-ledge_cut_d, bottom_thickness]);
|
translate([0,0,-hollow_bottom_z]) cube([base[0], base[1]-ledge_cut_d, bottom_thickness]);
|
||||||
// engrave LES logo into bottom
|
// engrave LES logo into bottom
|
||||||
translate([base[0]-3, 20, -0.8]) rotate([0,180,0]) linear_extrude(height=bottom_thickness, center=true) {
|
translate([base[0]-3, 17, -0.8]) rotate([0,180,0]) linear_extrude(height=bottom_thickness, center=true) {
|
||||||
offset(0.01) import("LES.svg"); // the offset fixes a weird error about the svg's mesh being incomplete
|
offset(0.01) import("LES.svg"); // the offset fixes a weird error about the svg's mesh being incomplete
|
||||||
translate([3,-16,0]) text("OPENCOM LTE", font = "Liberated Sans", size = 2, direction = "ltr", spacing = 1 );
|
|
||||||
translate([9.6,-18.5,0]) text("#001", font = "Liberated Sans", size = 1.5, direction = "ltr", spacing = 1 );
|
|
||||||
}
|
}
|
||||||
// The fillets on the aluminum cover
|
// The fillets on the aluminum cover
|
||||||
translate([base[0], base[1]-ledge_cut_d, -ledge_cut/2-hollow_bottom_z+0.3]) rotate([0, 0, 180]) fillet(ledge_cut/2, base[0]);
|
translate([base[0], base[1]-ledge_cut_d, -ledge_cut/2-hollow_bottom_z+0.3]) rotate([0, 0, 180]) fillet(ledge_cut/2, base[0]);
|
||||||
@ -287,8 +299,8 @@ module expansion_card_ext(make_printable, pcb_mount="boss_insert") {
|
|||||||
cutout = [base[0]-side_wall*2, base_ext[1]-side_wall*2, base_ext[2]-side_wall+extra];
|
cutout = [base[0]-side_wall*2, base_ext[1]-side_wall*2, base_ext[2]-side_wall+extra];
|
||||||
sma_cutout = [base_ext[0]-side_wall*2, base_ext[1]-side_wall*2, base_ext[2]];
|
sma_cutout = [base_ext[0]-side_wall*2, base_ext[1]-side_wall*2, base_ext[2]];
|
||||||
|
|
||||||
translate([boss_ext_x, boss_ext_y, 0]) boss(boss_r, pcb_h, 3, make_printable); // left ext screwhole
|
translate([boss_ext_x, boss_ext_y, 0]) boss(boss_ext_r, pcb_h, boss_ext_inner, make_printable); // left ext screwhole
|
||||||
translate([base_ext[0]-boss_ext_x, boss_ext_y, 0]) boss(boss_r, pcb_h, 3, make_printable); // right ext screwhole
|
translate([base_ext[0]-boss_ext_x, boss_ext_y, 0]) boss(boss_ext_r, pcb_h, boss_ext_inner, make_printable); // right ext screwhole
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
cube(base_ext);
|
cube(base_ext);
|
||||||
@ -304,10 +316,9 @@ module expansion_card_ext(make_printable, pcb_mount="boss_insert") {
|
|||||||
translate([sma+side_wall+gap*2, side_wall, sma_height]) sma_hole();
|
translate([sma+side_wall+gap*2, side_wall, sma_height]) sma_hole();
|
||||||
translate([base_ext[0]-sma-side_wall-gap*2, side_wall, sma_height]) sma_hole();
|
translate([base_ext[0]-sma-side_wall-gap*2, side_wall, sma_height]) sma_hole();
|
||||||
|
|
||||||
|
|
||||||
// screw holes
|
// screw holes
|
||||||
translate([0,base_ext[1]-boss_ext_top_y,base_ext[2]-boss_r]) rotate([0,90,0]) cylinder(r = 1.5, h = side_wall, $fn = 64);
|
translate([0,base_ext[1]-boss_ext_top_y,base_ext[2]-boss_r-1.5]) rotate([0,90,0]) cylinder(r = 1, h = side_wall, $fn = 64);
|
||||||
translate([base_ext[0]-side_wall,base_ext[1]-boss_ext_top_y,base_ext[2]-boss_r]) rotate([0,90,0]) cylinder(r = 1.5, h = side_wall, $fn = 64);
|
translate([base_ext[0]-side_wall,base_ext[1]-boss_ext_top_y,base_ext[2]-boss_r-1.5]) rotate([0,90,0]) cylinder(r = 1, h = side_wall, $fn = 64);
|
||||||
difference() {
|
difference() {
|
||||||
// The main hollow
|
// The main hollow
|
||||||
translate([side_wall, side_wall, side_wall]) cube([inner[0], inner[1], inner[2]]);
|
translate([side_wall, side_wall, side_wall]) cube([inner[0], inner[1], inner[2]]);
|
||||||
@ -319,9 +330,8 @@ module expansion_card_ext(make_printable, pcb_mount="boss_insert") {
|
|||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
// add extra bottom thickness to provide room for back of board
|
// add extra bottom thickness to provide room for back of board
|
||||||
translate([(base_ext[0]-base[0])/2,base_ext[1]-base_ext[1]/2+side_wall,-hollow_bottom_z]) cube([base[0], (base_ext[1]/2)-side_wall, hollow_bottom_z]);
|
translate([(base_ext[0]-base[0])/2,base_ext[1]-base_ext[1]/2+side_wall-1,-hollow_bottom_z]) cube([base[0], (base_ext[1]/2)-side_wall+1, hollow_bottom_z]);
|
||||||
translate([5, base_ext[1]-base_ext[1]/2+side_wall-0.001, -ledge_cut/2-hollow_bottom_z+0.3]) fillet(ledge_cut/2, base[0]);
|
translate([5, base_ext[1]-base_ext[1]/2+side_wall-0.001-1, -ledge_cut/2-hollow_bottom_z+0.3]) fillet(ledge_cut/2, base[0]);
|
||||||
rotate([0,180,0]) translate([-base_ext[0]/2-13.5,18.5,0]) linear_extrude(height=1.5, center=true) text("LIBERATED EMBEDDED SYSTEMS", font = "Liberated Sans", size = 1.3, direction = "ltr", spacing = 1 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,12 +342,27 @@ module sim_holder() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module led_cylinder(stopper) {
|
||||||
|
if (stopper) { // if a stopper should be inserted
|
||||||
|
cylinder(h = led_guide[1], r = led_guide[0], $fn = 64);
|
||||||
|
translate([0,0,led_guide[1]-led_guide_stopper[1]-(base_ext[2]-sma_height)+0.03]) cylinder(h = led_guide_stopper[1], r = led_guide_stopper[0], $fn = 64);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cylinder(h = led_guide[1], r = led_guide[0], $fn = 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([base_ext[0]-6.45-side_wall*2, -base[1]-base_ext[1]+side_wall*2+0.8, pcb_h+2.75]) led_cylinder(true); // D2 LED column
|
||||||
|
|
||||||
|
translate([-0.5, -base[1]-base_ext[1]+side_wall*2+0.8, pcb_h+2.75]) led_cylinder(true); // D3 LED column
|
||||||
|
|
||||||
|
|
||||||
translate([0, -base[1], 0]) expansion_card_base(open_end = false, make_printable = true, pcb_mount="boss");
|
translate([0, -base[1], 0]) expansion_card_base(open_end = false, make_printable = true, pcb_mount="boss");
|
||||||
|
|
||||||
translate([-base_ext[0]+base[0]+5, -base_ext[1]-base[1], 0]) expansion_card_ext(make_printable = true, pcb_mount="boss");
|
translate([-base_ext[0]+base[0]+5, -base_ext[1]-base[1], 0]) expansion_card_ext(make_printable = true, pcb_mount="boss");
|
||||||
|
|
||||||
//translate([45, -19, 17]) rotate([180,0,0]) expansion_card_lid();
|
//translate([0, -32, 0]) expansion_card_lid();
|
||||||
|
|
||||||
translate([-128.75, 95.8, pcb_h]) import("PCB.stl");
|
//translate([-128.75, 95.6, pcb_h]) import("PCB.stl");
|
||||||
|
|
||||||
//translate([2, -31.16, 1.68]) sim_holder();
|
translate([2, -30.48, 1.68]) sim_holder();
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user