Improvements to ROCK64 OSD

master
Vitaliy Filippov 2019-03-25 12:31:40 +03:00
parent ae9c469e53
commit f64784923e
2 changed files with 65 additions and 16 deletions

View File

@ -59,6 +59,7 @@ if (show_assembly)
total_h = rock64_zpos+rock64_board_thick+rock64_h+2;
color([0, 0.8, 0.5]) {
// Screw posts for ROCK64
translate([rock64_screw_offset+2.4, -rock64_screw_offset-3, rock64_zpos+rock64_board_thick]) difference() {
cylinder(r=rock64_screw_post_dia/2, h=rock64_h, $fn=32);
translate([0, 0, -1]) cylinder(r=1.45, h=10, $fn=32);
@ -77,6 +78,7 @@ color([0, 0.8, 0.5]) {
}
difference()
{
// Walls and lid
union() {
translate([-wall_thickness, -rock64_w-extra_length, -2]) cube(size=[wall_thickness, rock64_w+extra_length+hdd35_l+wall_thickness, rock64_zpos+rock64_board_thick+rock64_h+2]);
translate([-wall_thickness, -rock64_w-extra_length, rock64_zpos+rock64_board_thick+rock64_h]) cube(size=[wall_thickness*2+hdd35_w, rock64_w+extra_length+hdd35_l+wall_thickness, 2]);
@ -85,18 +87,31 @@ color([0, 0.8, 0.5]) {
translate([0, -rock64_w-extra_length, -2]) cube(size=[hdd35_w, wall_thickness, rock64_zpos+rock64_board_thick+rock64_h+2]);
}
// Holes for cooler and cooler screws
translate([cooler_pos+30/2, -rock64_w-extra_length+wall_thickness/2, total_h/2-1-30/2+30/2]) rotate([90, 0, 0]) difference() {
cylinder(r=30/2, $fn=64, h=wall_thickness+2, center=true);
union() {
cylinder(r=30/2, $fn=64, h=wall_thickness+2, center=true);
translate([-12, -12, 0]) cylinder(r=1, $fn=16, h=wall_thickness+2, center=true);
translate([12, -12, 0]) cylinder(r=1, $fn=16, h=wall_thickness+2, center=true);
translate([-12, 12, 0]) cylinder(r=1, $fn=16, h=wall_thickness+2, center=true);
translate([12, 12, 0]) cylinder(r=1, $fn=16, h=wall_thickness+2, center=true);
}
difference() {
cube(size=[30, 30, wall_thickness+2], center=true);
cube(size=[30-2, 30-2, wall_thickness+2], center=true);
}
}
translate([ hdd35_w-1, -3-rock64_w, rock64_zpos ]) cube(size=[wall_thickness+2, 21, rock64_h]);
// Hole for Ethernet and USB slots
translate([ hdd35_w-1, -3-rock64_w, rock64_zpos ]) cube(size=[wall_thickness+2, rock64_w, rock64_h]);
// Hole for MicroSD
translate([ -wall_thickness-1, -3-rock64_microsd_offset-rock64_microsd_length, rock64_zpos-3 ]) cube(size=[wall_thickness+2, rock64_microsd_length, 5]);
// Hole for the power cord
translate([ 9, -rock64_w-extra_length+wall_thickness-6/2, 7 ]) rotate([90, 0, 0]) cylinder(h=wall_thickness+2, r=6, $fn=32, center=true);
// Holes for HDD screws
translate([ 0, hdd35_screw1_offset, hdd35_screw_zpos ]) rotate([0, -90, 0]) cylinder(r=hdd35_screw_dia/2, h=10, $fn=32);
//translate([ 0, hdd35_screw2_offset, hdd35_screw_zpos ]) rotate([0, -90, 0]) cylinder(r=hdd35_screw_dia/2, h=10, $fn=32);
translate([ 0, hdd35_screw3_offset, hdd35_screw_zpos ]) rotate([0, -90, 0]) cylinder(r=hdd35_screw_dia/2, h=10, $fn=32);
@ -111,19 +126,21 @@ color([0, 0.8, 0.5]) {
//translate([ hdd35_w+1, hdd35_screw2_offset, hdd35_screw_zpos ]) rotate([0, 90, 0]) cylinder(r=hdd35_screw_dia/2+2, h=10, $fn=32);
translate([ hdd35_w+1, hdd35_screw3_offset, hdd35_screw_zpos ]) rotate([0, 90, 0]) cylinder(r=hdd35_screw_dia/2+2.5, h=10, $fn=32);
for (i = [-5:9]) {
if (i != -3 && i != -2) {
translate([ -wall_thickness-1, i*15, total_h-wall_thickness ]) rotate([30, 0, 0]) translate([ -1, -1, -1 ]) minkowski() {
translate([0, -3, -(total_h-wall_thickness*2 - (i == 1 || i == 2 || i == 8 || i == 9 ? 12 : 0))]) cube(size=[ wall_thickness+2, 3, total_h-wall_thickness*2 - (i == 1 || i == 2 || i == 8 || i == 9 ? 12 : 0) ]);
// Side slots
for (i = [-7:11]) {
if (i >= -1 || i <= -5) {
translate([ -wall_thickness-1, 8+i*12, total_h-wall_thickness ]) translate([ -1, -1, -1 ]) minkowski() {
translate([0, -3, -(total_h-wall_thickness*2 - (i == 2 || i == 10 || i == 11 ? 14 : 0))]) cube(size=[ wall_thickness+2, 2, total_h-wall_thickness*2 - (i == 2 || i == 10 || i == 11 ? 14 : 0) ]);
sphere(r=2);
}
}
}
translate([ hdd35_w+wall_thickness, 0, 0 ]) for (i = [-5:9]) {
if (i != -3 && i != -4) {
translate([ -wall_thickness-1, i*15, total_h-wall_thickness ]) rotate([30, 0, 0]) translate([ -1, -1, -1 ]) minkowski() {
translate([0, -3, -(total_h-wall_thickness*2 - (i == 1 || i == 2 || i == 8 || i == 9 ? 12 : 0))]) cube(size=[ wall_thickness+2, 3, total_h-wall_thickness*2 - (i == 1 || i == 2 || i == 8 || i == 9 ? 12 : 0) ]);
translate([ hdd35_w+wall_thickness, 0, 0 ]) for (i = [-7:11]) {
if (i >= 0 || i <= -6) {
//translate([ -wall_thickness-1, 7+i*14, total_h-wall_thickness ]) rotate([30, 0, 0]) translate([ -1, -1, -1 ]) minkowski() {
translate([ -wall_thickness-1, 8+i*12, total_h-wall_thickness ]) translate([ -1, -1, -1 ]) minkowski() {
translate([0, -3, -(total_h-wall_thickness*2 - (i == 2 || i == 10 || i == 11 ? 14 : 0))]) cube(size=[ wall_thickness+2, 2, total_h-wall_thickness*2 - (i == 2 || i == 10 || i == 11 ? 14 : 0) ]);
sphere(r=2);
}
}
@ -136,12 +153,10 @@ color([0, 0.8, 0.5]) {
}
}
translate([ hdd35_w+2, -rock64_w-extra_length+wall_thickness, 0 ]) rotate([ 0, 0, 90 ]) for (i = [1:6]) {
if (i != 4 && i != 5) {
translate([ -wall_thickness-1, i*16.5, total_h-wall_thickness ]) translate([ -1, -1, -1 ]) minkowski() {
translate([0, -3, -(total_h-wall_thickness*2)]) cube(size=[ wall_thickness+2, 3, total_h-wall_thickness*2 ]);
sphere(r=2);
}
translate([ hdd35_w+2, -rock64_w-extra_length+wall_thickness, 0 ]) rotate([ 0, 0, 90 ]) for (i = [1:4]) {
translate([ -wall_thickness-1, i*12, total_h-wall_thickness ]) translate([ -1, -1, -1 ]) minkowski() {
translate([0, -3, -(total_h-wall_thickness*2)]) cube(size=[ wall_thickness+2, 2, total_h-wall_thickness*2 ]);
sphere(r=2);
}
}
}

34
usb3_conv.scad Normal file
View File

@ -0,0 +1,34 @@
// half-case for USB3.0-SATA + 25x15 DC-DC converter
color([0, 0.8, 0]) {
cube(size=[42, 30, 1.5]);
translate([-2-15, 2.5, -(5-1.5)]) cube(size=[15, 25, 1]);
translate([0.5, 30-14+2, -(5-1.5)]) cube(size=[11, 14, 10]);
translate([42-13.5-12, 30, -(5-1.5)]) cube(size=[12, 2, 8]);
translate([42-13.5-12/2, 40, -(5-1.5)+8/2]) rotate([90, 0, 0]) cylinder(r=6.5/2, $fn=32, h=8);
translate([42-13.5-12/2, 30, -(5-1.5)+8/2]) rotate([90, 0, 0]) cylinder(r=5/2, $fn=32, h=3);
}
difference()
{
union()
{
translate([-2*2-15, 0, -(5-1.5+1.2)]) cube(size=[42+2*3+15, 30+2*2, 1.2]);
translate([-2*2-15, 0, -(5-1.5+1.2)]) cube(size=[2+0.5, 30+2*2, 1+2]);
translate([-2-0.5, 0, -(5-1.5+1.2)]) cube(size=[2+0.5, 30+2*2, 1+2]);
translate([-2, 5, -(5-1.5+1.2)]) cube(size=[2+1, 11, 5+1.2+2]);
translate([-2, 0, -(5-1.5+1.2)]) cube(size=[2, 30+2*2, 5+1.2]);
translate([42-1, 5, -(5-1.5+1.2)]) cube(size=[2+1, 30-5, 5+1.2+2]);
translate([42, 0, -(5-1.5+1.2)]) cube(size=[2, 30+2*2, 5+1.2]);
translate([42-13.5-12-2, 30-2, -(5-1.5+1.2)]) cube(size=[12+2*2, 6, 3]);
translate([42-13.5-12-2, 30+2, -(5-1.5+1.2)]) cube(size=[12+2*2, 2, 5]);
}
translate([0, -1, 0]) cube(size=[42, 30+2, 1.5]);
translate([-2-15, -1, -(5-1.5)]) cube(size=[15, 30+2*2+4, 1]);
translate([42-13.5-12, 30, -(5-1.5)]) cube(size=[12, 2, 8]);
translate([42-13.5-12/2, 40, -(5-1.5)+8/2]) rotate([90, 0, 0]) cylinder(r=6.5/2, $fn=32, h=8);
translate([42-13.5-12/2, 30, -(5-1.5)+8/2]) rotate([90, 0, 0]) cylinder(r=5/2, $fn=32, h=3);
}