瀏覽代碼

case mod. now only a single bottom part. lcd and buttons are unprotected.

Thomas Buck 4 月之前
父節點
當前提交
0a079562d6
共有 1 個文件被更改,包括 100 次插入47 次删除
  1. 100
    47
      case/case.scad

+ 100
- 47
case/case.scad 查看文件

19
  * See <http://www.gnu.org/licenses/>.
19
  * See <http://www.gnu.org/licenses/>.
20
  */
20
  */
21
 
21
 
22
+// prev [bottom,top,button,print,OPT_assembly]
23
+part = "OPT_assembly"; //[bottom,OPT_assembly]
24
+wall = 1.5;
25
+
22
 // https://www.waveshare.com/wiki/Pico-LCD-1.3
26
 // https://www.waveshare.com/wiki/Pico-LCD-1.3
23
 lcd_w = 52.0;
27
 lcd_w = 52.0;
24
 lcd_h = 26.5;
28
 lcd_h = 26.5;
25
-
26
-lcd_d = 1.0; // todo
29
+lcd_d = 1.55;
27
 
30
 
28
 // https://www.printables.com/model/210898-raspberry-pi-pico-case
31
 // https://www.printables.com/model/210898-raspberry-pi-pico-case
29
 use <pico_case.scad>
32
 use <pico_case.scad>
32
 p_t = 1.0;
35
 p_t = 1.0;
33
 p_usb_h = 2.8;
36
 p_usb_h = 2.8;
34
 
37
 
35
-pico_header_h = 2.5; // todo
36
-lcd_header_h = 10.0; // todo
38
+usb_cut_w = 8.5;
39
+usb_cut_h = p_usb_h + 0.4;
37
 
40
 
38
-header_h = pico_header_h + lcd_header_h;
41
+pico_header_h = 2.6;
42
+lcd_header_h = 9.0;
43
+
44
+pico_slot_w = p_w + 1.2;
45
+pico_slot_h = p_h + 1.6;
39
 
46
 
40
-part="OPT_assembly"; //[bottom,top,button,print,OPT_assembly]
41
-wall=1.5;
42
 extra=4; //lip on the lid that presses top pcb down
47
 extra=4; //lip on the lid that presses top pcb down
43
 thread=3;
48
 thread=3;
44
 air=0.5;
49
 air=0.5;
45
 bissl=1/100;
50
 bissl=1/100;
51
+joystick=6;
52
+$fa=1/1;
53
+$fs=1/2;
54
+
55
+add_len = 0.7 + 1; // + 2 * wall + thread;
46
 button = 4;
56
 button = 4;
47
 button_hole = button + 1.0;
57
 button_hole = button + 1.0;
48
 button_stem = button - 0.4;
58
 button_stem = button - 0.4;
49
 button_cut_side = 0.6;
59
 button_cut_side = 0.6;
50
-joystick=6;
51
-height=16.8+air+extra;
52
-width=52.4+1.5+2*air;
53
-length=26.7+2*air;
54
-$fa=1/1;
55
-$fs=1/2;
56
 
60
 
57
-total_width = width+2*wall;
58
-total_len = length+4*wall+2*thread;
61
+header_h = pico_header_h + lcd_header_h;
62
+
63
+length = pico_slot_w; //26.7+2*air;
64
+width = pico_slot_h; //52.4+1.5+2*air;
65
+height = p_t + p_usb_h + header_h; //16.8+air+extra;
66
+
67
+total_width = width + 2 * wall;
68
+total_len = length + 2 * wall;
69
+
70
+pwr_w = 5.0;
71
+pwr_h = 10.0;
72
+pwr_gap = 0.3;
73
+pwr_wg = pwr_w + 2 * pwr_gap;
74
+pwr_hg = pwr_h + 3 * pwr_gap;
59
 
75
 
60
 module lcd() {
76
 module lcd() {
61
     color("blue")
77
     color("blue")
73
 }
89
 }
74
 
90
 
75
 module bottom() {
91
 module bottom() {
76
-  difference() {
77
-    cube([total_width, total_len, height + wall]);
78
-    translate([wall,2*wall+thread,wall])cube([width,length,height+bissl]);
79
-    for (tr=[[wall+thread/2,wall+thread/2,height/2+wall],
92
+    difference() {
93
+        translate([0, -add_len, 0])
94
+        cube([total_width, total_len + 2 * add_len, height + wall]);
95
+
96
+        translate([wall, wall, wall])
97
+        cube([width, length, height + 0.1]);
98
+
99
+        // screws
100
+        if (0)
101
+        #for (tr=[[wall+thread/2,wall+thread/2,height/2+wall],
80
              [wall+thread/2,length+3*wall+1.5*thread,height/2+wall],
102
              [wall+thread/2,length+3*wall+1.5*thread,height/2+wall],
81
              [width+wall-thread/2,wall+thread/2,height/2+wall],
103
              [width+wall-thread/2,wall+thread/2,height/2+wall],
82
              [width+wall-thread/2,length+3*wall+1.5*thread,height/2+wall]])
104
              [width+wall-thread/2,length+3*wall+1.5*thread,height/2+wall]])
83
-      translate(tr) cylinder(h=height/2+bissl,d=thread);
84
-    translate([wall/2,2*wall+thread+length/2,3-bissl])cube([wall+bissl,8,6],center=true);
85
-    translate([0,2*wall+thread+length/2,wall+7])rotate([0,90,0])cylinder(d=button,h=2*wall+bissl,center=true);
86
-  }
105
+        translate(tr) cylinder(h=height/2+bissl,d=thread);
106
+
107
+        // usb cutout
108
+        translate([wall / 2, wall + length / 2, usb_cut_h / 2 + wall])
109
+        cube([wall + bissl, usb_cut_w, usb_cut_h], center = true);
110
+
111
+        // power button cutout
112
+        translate([-0.1, wall + length / 2 - pwr_wg / 2, wall + usb_cut_h - 0.1])
113
+        cube([wall + 0.2, pwr_wg, pwr_h + 0.1]);
114
+
115
+        // bootsel button
116
+        translate([14.475, 16.05, -0.1])
117
+        cylinder(d = 4.5, h = wall + 0.2);
118
+    }
119
+
120
+    // power button
121
+    translate([0, wall + length / 2 - pwr_w / 2, wall + usb_cut_h + (pwr_hg - pwr_h)])
122
+    cube([wall, pwr_w, pwr_h + 0.1]);
123
+
124
+    // pico screw posts
125
+    translate([total_width / 2, total_len / 2, wall])
126
+    for (x = [-p_h / 2 + 2, p_h / 2 - 2])
127
+    for (y = [-p_w / 2 + 4.8, p_w / 2 - 4.8])
128
+    translate([x, y, 0])
129
+    difference() {
130
+        cylinder(d = 4, h = p_usb_h);
131
+
132
+        translate([0, 0, -0.1])
133
+        cylinder(d = 2.2, h = p_usb_h + 0.2);
134
+    }
87
 }
135
 }
88
 
136
 
89
 module top() {
137
 module top() {
90
-  difference() {
91
-    cube([total_width, total_len, wall]);
92
-    for (tr=[[wall+thread/2,wall+thread/2,-bissl],
138
+    difference() {
139
+        cube([total_width, total_len, wall]);
140
+        for (tr=[[wall+thread/2,wall+thread/2,-bissl],
93
              [wall+thread/2,length+3*wall+1.5*thread,-bissl],
141
              [wall+thread/2,length+3*wall+1.5*thread,-bissl],
94
              [width+wall-thread/2,wall+thread/2,-bissl],
142
              [width+wall-thread/2,wall+thread/2,-bissl],
95
              [width+wall-thread/2,length+3*wall+1.5*thread,-bissl]])
143
              [width+wall-thread/2,length+3*wall+1.5*thread,-bissl]])
96
-      translate(tr) cylinder(h=wall+2*bissl,d=thread);
97
-    translate([wall+1.5,2*wall+thread,-bissl])
98
-      for (tr=[[47.7+air,5.5+0],
99
-               [47.7+air,5.5+5.7],
100
-               [47.7+air,5.5+2*5.7],
101
-               [47.7+air,5.5+3*5.7],
102
-               [6.7+0.5,13.8+air]])
103
-        translate(tr) cylinder(h=wall+2*bissl,d=button);
104
-    translate([wall+1.5+6.7+air,2*wall+thread+13.8+air,-bissl]) cylinder(h=wall+2*bissl,d=joystick);
105
-    translate([wall+13.5+1.5,2*wall+thread,-bissl])cube([31,27,wall+2*bissl]);
106
-  }
107
-  translate([wall+13.5+1.5-1.5,2*wall+thread,-extra])cube([1.5,27,extra]);
108
-  translate([wall+13.5+1.5+31,2*wall+thread,-extra])cube([1.5,27,extra]);
144
+        translate(tr)
145
+        cylinder(h=wall+2*bissl,d=thread);
146
+
147
+        translate([wall+1.5,2*wall+thread,-bissl])
148
+        for (i = [0 : 3])
149
+        translate([47.7 + air, 5.5 + i * 5.7])
150
+        cylinder(h=wall+2*bissl,d=button);
151
+
152
+        translate([wall+1.5+6.7+air,2*wall+thread+13.8+air,-bissl])
153
+        cylinder(h=wall+2*bissl,d=joystick);
154
+
155
+        translate([wall+13.5+1.5,2*wall+thread,-bissl])
156
+        cube([31,27,wall+2*bissl]);
157
+    }
158
+
159
+    translate([wall+13.5+1.5-1.5,2*wall+thread,-extra])
160
+    cube([1.5,27,extra]);
161
+
162
+    translate([wall+13.5+1.5+31,2*wall+thread,-extra])
163
+    cube([1.5,27,extra]);
109
 }
164
 }
110
 
165
 
111
 module button() {
166
 module button() {
151
         union() {
206
         union() {
152
             bottom_assm();
207
             bottom_assm();
153
 
208
 
209
+            if (0)
154
             translate([-total_width / 2, -total_len / 2, height + wall])
210
             translate([-total_width / 2, -total_len / 2, height + wall])
155
             top();
211
             top();
156
 
212
 
157
-            for (tr = [
158
-                [47.7+air,5.5+0],
159
-                [47.7+air,5.5+5.7],
160
-                [47.7+air,5.5+2*5.7],
161
-                [47.7+air,5.5+3*5.7]
162
-            ])
163
-            translate(tr)
213
+            if (0)
214
+            for (i = [0 : 3])
215
+            translate([47.7 + air, 5.5 + i * 5.7])
164
             translate([wall + 1.5, 2 * wall + thread, -1])
216
             translate([wall + 1.5, 2 * wall + thread, -1])
165
             translate([-total_width / 2, -total_len / 2, height + wall])
217
             translate([-total_width / 2, -total_len / 2, height + wall])
166
             button();
218
             button();
167
         }
219
         }
168
 
220
 
221
+        if (1)
169
         translate([-total_width / 2 - 1, 0, -2])
222
         translate([-total_width / 2 - 1, 0, -2])
170
-        cube([total_width + 2, total_len / 2 + 2, height + wall + 10]);
223
+        cube([total_width + 2, (total_len + 2 * add_len) / 2 + 2, height + wall + 10]);
171
     }
224
     }
172
 }
225
 }

Loading…
取消
儲存