04/2026 updates

This commit is contained in:
2026-05-11 07:59:21 +02:00
parent 2b662fb655
commit 5dced2efe0
62 changed files with 300061 additions and 0 deletions
+36
View File
@@ -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);
}
}
+7
View File
@@ -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();
+36
View File
@@ -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();
+59
View File
@@ -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();