-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathesp32c3-case.scad
109 lines (97 loc) · 3.07 KB
/
esp32c3-case.scad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Pascal Girard 2022
$fn = 40;
/* [Case Dimensions] */
case_iw = 26; // inner height
case_il = 34.5; // inner length
case_ih = 9; // inner height
case_wall = 1.5;
sensor_base = 13; // pad for temp/humidity sensor
/* [Foot Dimensions] */
foot_base = 6;
foot_height = 1.3;
foot_width = 20;
radius = 1;
/* [Opening Dimensions] */
usb_d = 4;
usb_width = 6;
usb_height = case_wall + foot_height + 1.5;
i2_height = 5.5;
reset_d = 2;
reset_width = 2;
reset_height = case_wall + foot_height + 1;
post_h = 6.4;
module mirror2(v) {
children();
mirror(v) children();
}
module feet() {
module foot() {
translate([(case_il-foot_base)/2,0, foot_height]) {
cube([foot_base,foot_width,foot_height], center = true); // foot base
}
}
mirror2([1,0,0]) translate([(-(case_il-foot_base)), 0, 0])foot();
}
module case () {
module reset_hole() {
rotate([0,90,90]) {
hull() {
cylinder(h = case_wall * 2, d = reset_d, center=true);
translate([0,reset_width,0]) cylinder(h = case_wall * 2, d = reset_d, center=true);
}
}
}
difference() {
difference () {
hull() {
for ( i = [-1,1] ) {
for (j=[-1,1]) {
translate([i*(case_il + case_wall)/2,j*(case_iw + case_wall)/2,0]) {
cylinder(case_ih, d = case_wall, true);
}
}
}
}
translate([0,0,case_ih/2+case_wall]) { // create a floor
cube([case_il, case_iw, case_ih], center = true);
}
}
translate ([case_il/2, -3.25, usb_height]) { // usb hole
rotate([0,90,0]) {
hull() {
cylinder(h = case_wall * 2, d = usb_d, center=true);
translate([0,usb_width,0])
cylinder(h = case_wall * 2, d = usb_d, center=true);
}
}
}
// reset & pin 0 holes
mirror2 ([0,1,0]) translate ([(case_il-6)/2, -case_iw/2, reset_height]) { reset_hole(); }
}
}
module cover() {
difference() {
hull() {
for ( i = [-1,1] ) {
for (j=[-1,1]) {
translate([i*(case_il + case_wall)/2,j*(case_iw + case_wall)/2,0]) {
cylinder(case_wall, d = case_wall, true);
}
}
}
}
translate([-case_il/2 - case_wall,-(case_iw-sensor_base)/2,0])cube([case_wall,sensor_base,case_wall]);
}
union() {
for ( i = [-1,1] ) {
for (j=[-1,1]) {
// posts
translate([i*(case_il - 2*case_wall)/2,j*(case_iw - 2*case_wall)/2,5-case_wall]) {
cube([2*case_wall, 2*case_wall, 5],true);
}
}
}
}
}
translate([0,20,0]) cover();
translate([0,-20,0]) {case();feet();}