04/2026 updates
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
// Dimesions of the CM4-IO board and enclosure
|
||||
CM4_WIDTH = 152; // mm
|
||||
CM4_HEIGHT = 70; // mm
|
||||
CM4_DEPTH = 36; // mm
|
||||
ENclosure_WIDTH = CM4_WIDTH + 8; // mm
|
||||
ENclosure_HEIGHT = CM4_HEIGHT + 10; // mm
|
||||
ENclosure_DEPTH = CM4_DEPTH + 20; // mm
|
||||
// CM4-IO placement and hole
|
||||
cm4_io_offset = CM4_HEIGHT/2 + 5; // offset from bottom of enclosure
|
||||
|
||||
// Enclosure dimensions and hole positions
|
||||
enclosure = rect_tube(size=[ENclosure_WIDTH,ENclosure_DEPTH], h=ENclosure_HEIGHT, wall=5);
|
||||
|
||||
holes = [
|
||||
[[10, 10], [CM4_WIDTH-36, 10]], // Front holes for CM4-IO pins
|
||||
[[2, ENclosure_HEIGHT - CM4_HEIGHT - 20], [ENclosure_WIDTH - 2, ENclosure_HEIGHT - CM4_HEIGHT - 20]] // Bottom hole for mounting
|
||||
];
|
||||
|
||||
for (i = holes) {
|
||||
translate(i[0][0], i[0][1], ENclosure_DEPTH - 5)
|
||||
hole(r=3, d=5);
|
||||
}
|
||||
|
||||
* cm4_io_placement = translate([cm4_io_offset,cm4_io_offset,0]) scale(1, -1, 1) rotate([0, 0, 90]) cm4_io;
|
||||
|
||||
// Add CM4-IO and enclosure to the final model
|
||||
difference() {
|
||||
enclosure;
|
||||
for (i = cm4_io_placement.convex_hull.vertices) {
|
||||
sphere(r=1, center=i);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
module jetson() {
|
||||
color("green", alpha=.5) cuboid([104,91,10], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
}
|
||||
|
||||
*jetson();
|
||||
@@ -0,0 +1,36 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
include <jetson_nano_board.scad>
|
||||
|
||||
mini_l=180;
|
||||
nano_l=105;
|
||||
nano_w=92;
|
||||
frame_e=3;
|
||||
p_height=15;
|
||||
|
||||
// holes_positions
|
||||
color("orange") {
|
||||
translate([-51.5,-45,-frame_e]) zcyl(l=7, d=20, anchor=BOTTOM);
|
||||
translate([-51.5,45,-frame_e]) zcyl(l=7, d=20, anchor=BOTTOM);
|
||||
translate([51.5,45,-frame_e]) zcyl(l=7, d=20, anchor=BOTTOM);
|
||||
translate([51.5,-45,-frame_e]) zcyl(l=7, d=20, anchor=BOTTOM);
|
||||
}
|
||||
|
||||
// base_plate
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([mini_l,mini_l,frame_e], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=[0,0,1]);
|
||||
cuboid([nano_l+8,nano_w+8,frame_e+5], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=[0,0,-1]);
|
||||
}
|
||||
cuboid([nano_l,nano_w,p_height*2], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);;
|
||||
*cuboid([nano_l+2,nano_w+2,frame_e+1], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=[0,0,-1]);
|
||||
*cuboid([nano_l-8,nano_w-8,frame_e*3], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
*cuboid([nano_l+12,nano_w-20,p_height], anchor=[0,0,-1]);
|
||||
*cuboid([nano_l-20,nano_w+12,p_height], anchor=[0,0,-1]);
|
||||
}
|
||||
|
||||
|
||||
translate([0,0,10]) jetson();
|
||||
@@ -0,0 +1,59 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <nutsnbolts/cyl_head_bolt.scad>;
|
||||
|
||||
base_length=100;
|
||||
base_width=20;
|
||||
base_height=15;
|
||||
|
||||
module screw() {
|
||||
nutcatch_parallel("M3", clh=0.1);
|
||||
translate([0,0,23]) hole_through(name="M3", l=16, cld=0.1, h=10, hcld=0.4);
|
||||
*nutcatch_sidecut("M3", l=20, clk=0.1, clh=0.1, clsl=0.1);
|
||||
}
|
||||
|
||||
module pcie_mount() {
|
||||
difference() {
|
||||
union() {
|
||||
// Base
|
||||
cuboid([base_length,base_width,base_height], rounding=2, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=TOP);
|
||||
translate([0,-10,-5]) cuboid([80,4,50], rounding=40, edges=[TOP+RIGHT,TOP+LEFT,], anchor=BOT+FRONT);
|
||||
// Front support
|
||||
*translate([-65,0,0]) cuboid([10,20,80.5], rounding=2, edges=[FWD+LEFT,BACK+LEFT, TOP+RIGHT], anchor=BOT+RIGHT);
|
||||
}
|
||||
// riser_screwholes
|
||||
translate([29,-8,-7.25]) rotate([0,-90,-90]) screw();
|
||||
translate([-29,-8,-7.25]) rotate([0,-90,-90]) screw();
|
||||
// cage_screwholes
|
||||
translate([0,-20,35]) rotate([0,-90,-90]) screw();
|
||||
translate([0,-20,5]) rotate([0,-90,-90]) screw();
|
||||
// riser_nest
|
||||
cuboid([68,2,base_height], rounding=-1, edges=[TOP+RIGHT,TOP+LEFT,TOP+BACK,TOP+FRONT], anchor=TOP+FRONT);
|
||||
translate([0,-3,0]) cuboid([44,14,base_height], rounding=-1, edges=[TOP+RIGHT,TOP+LEFT,TOP+FRONT], anchor=TOP+FRONT);
|
||||
}
|
||||
}
|
||||
|
||||
module riser() {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([67.45,1.65,14.25], rounding=1, edges=[TOP+RIGHT,TOP+LEFT,BOT+RIGHT,BOT+LEFT], anchor=TOP);
|
||||
cuboid([39,7.125,10.55], rounding=.5, anchor=BOT);
|
||||
translate([0,0,-7.5]) cuboid([42,7,7.5], rounding=1, edges=[TOP+RIGHT,TOP+LEFT,BOT+RIGHT,BOT+LEFT], anchor=TOP);
|
||||
}
|
||||
translate([29,0,-7.25]) ycyl(l=5, d=3.25);
|
||||
translate([-29,0,-7.25]) ycyl(l=5, d=3.25);
|
||||
}
|
||||
}
|
||||
|
||||
color("grey") translate([-63.2,0.825,2]) difference() {
|
||||
cuboid([12.75,18.25,80], rounding=2, anchor=BOT+BACK+RIGHT);
|
||||
translate([-1,2,-1]) cuboid([15,25,80], rounding=2, anchor=BOT+BACK+RIGHT);
|
||||
}
|
||||
|
||||
!color("cyan") translate([0,-8,0]) {
|
||||
pcie_mount();
|
||||
|
||||
}
|
||||
|
||||
color("grey") translate([0,-7,0]) riser();
|
||||
Reference in New Issue
Block a user