04/2026 updates

This commit is contained in:
julien committed 2026-05-11 07:59:21 +02:00
1 parent 2b662fb655
commit 5dced2efe0
62 files changed
+300061

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="140.00024mm"
height="100.0001mm"
viewBox="0 0 140.00024 100.0001"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
sodipodi:docname="zimablade_hdd_support_profile.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.4378367"
inkscape:cx="301.4946"
inkscape:cy="173.52457"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="0"
inkscape:window-y="36"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-42.597919,-94.507942)"><path
id="rect5"
style="fill:#ff00ff;stroke:none;stroke-width:0.614558;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:0"
d="m 45.345555,94.507942 c -1.522227,0 -2.747636,1.225409 -2.747636,2.747636 V 191.7604 c 0,1.52223 1.225409,2.74764 2.747636,2.74764 h 7.25227 v -8.3938 c 0,-3.53069 2.842566,-6.37274 6.373255,-6.37274 H 166.225 c 3.53069,0 6.37274,2.84205 6.37274,6.37274 v 8.3938 h 7.25227 c 1.52222,0 2.74815,-1.22541 2.74815,-2.74764 V 97.255578 c 0,-1.522227 -1.22593,-2.747636 -2.74815,-2.747636 h -7.25227 v 19.503198 c 0,0.87619 -0.70511,1.5813 -1.5813,1.5813 H 54.179641 c -0.876189,0 -1.581816,-0.70511 -1.581816,-1.5813 V 94.507942 Z m 7.502384,44.084648 H 168.34787 c 1.2465,0 2.24999,1.00349 2.24999,2.24999 0,1.2465 -1.00349,2.24999 -2.24999,2.24999 H 52.847939 c -1.2465,0 -2.249992,-1.00349 -2.249992,-2.24999 0,-1.2465 1.003492,-2.24999 2.249992,-2.24999 z m 0,30.00024 H 168.34787 c 1.2465,0 2.24999,1.00349 2.24999,2.24999 0,1.2465 -1.00349,2.24999 -2.24999,2.24999 H 52.847939 c -1.2465,0 -2.249992,-1.00349 -2.249992,-2.24999 0,-1.2465 1.003492,-2.24999 2.249992,-2.24999 z" /><image
width="100.21448"
height="60"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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&#10;AACsjLl4OuFtd26MCLine truncated
id="image1"
x="62.490803"
y="131.56284" /></g></svg>

After

Width:  |  Height:  |  Size: 12 KiB

+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();
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large. Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.