|
@@ -64,7 +64,7 @@ opi_lan_off_x = -4.2;
|
64
|
64
|
|
65
|
65
|
opi_dual_usb_width = 13.2;
|
66
|
66
|
opi_dual_usb_depth = 17.5;
|
67
|
|
-opi_dual_usb_height = 15.0;
|
|
67
|
+opi_dual_usb_height = 15.8;
|
68
|
68
|
opi_dual_usb_off_y = opi_lan_off_y + opi_lan_width + 4.3;
|
69
|
69
|
opi_dual_usb_off_x = -4.1;
|
70
|
70
|
|
|
@@ -108,6 +108,8 @@ text2_off_y = 40.5;
|
108
|
108
|
corner_helper_size = 20;
|
109
|
109
|
corner_helper_height = 0.2;
|
110
|
110
|
|
|
111
|
+cutout_gap = 0.2;
|
|
112
|
+
|
111
|
113
|
$fn = 20;
|
112
|
114
|
|
113
|
115
|
module orangepi_pc_plus() {
|
|
@@ -205,8 +207,8 @@ module case_bottom() {
|
205
|
207
|
cube([outer_wall_size, opi_width + (2 * outer_wall_size), standoff_height + opi_pcb_height]);
|
206
|
208
|
|
207
|
209
|
// sd card cutout
|
208
|
|
- translate([-1, outer_wall_size + opi_sd_off_y, standoff_height - opi_sd_height])
|
209
|
|
- cube([outer_wall_size + 2, opi_sd_width, opi_sd_height + standoff_height]);
|
|
210
|
+ translate([-1, outer_wall_size + opi_sd_off_y - cutout_gap, standoff_height - opi_sd_height])
|
|
211
|
+ cube([outer_wall_size + 2, opi_sd_width + (2 * cutout_gap), opi_sd_height + standoff_height]);
|
210
|
212
|
}
|
211
|
213
|
|
212
|
214
|
// front wall
|
|
@@ -288,16 +290,16 @@ module case_top() {
|
288
|
290
|
cube([opi_length, outer_wall_size, top_standoff_height]);
|
289
|
291
|
|
290
|
292
|
// power connector
|
291
|
|
- translate([opi_power_off_x, -1, -1])
|
292
|
|
- cube([opi_power_width, outer_wall_size + 2, opi_power_height + 1]);
|
|
293
|
+ translate([opi_power_off_x - cutout_gap, -1, -1])
|
|
294
|
+ cube([opi_power_width + (2 * cutout_gap), outer_wall_size + 2, opi_power_height + 1]);
|
293
|
295
|
|
294
|
296
|
// hdmi connector
|
295
|
|
- translate([opi_hdmi_off_x, -1, -1])
|
296
|
|
- cube([opi_hdmi_width, outer_wall_size + 2, opi_hdmi_height + 1]);
|
|
297
|
+ translate([opi_hdmi_off_x - cutout_gap, -1, -1])
|
|
298
|
+ cube([opi_hdmi_width + (2 * cutout_gap), outer_wall_size + 2, opi_hdmi_height + 1]);
|
297
|
299
|
|
298
|
300
|
// audio connector
|
299
|
|
- translate([opi_audio_off_x, -1, -1])
|
300
|
|
- cube([opi_audio_diameter, outer_wall_size + 2, opi_audio_diameter + 1]);
|
|
301
|
+ translate([opi_audio_off_x - cutout_gap, -1, -1])
|
|
302
|
+ cube([opi_audio_diameter + (2 * cutout_gap), outer_wall_size + 2, opi_audio_diameter + 1]);
|
301
|
303
|
}
|
302
|
304
|
|
303
|
305
|
// back wall
|
|
@@ -305,8 +307,8 @@ module case_top() {
|
305
|
307
|
difference() {
|
306
|
308
|
cube([opi_length, outer_wall_size, top_standoff_height]);
|
307
|
309
|
|
308
|
|
- translate([opi_length - opi_ir_off_x - opi_ir_width, -1, -1])
|
309
|
|
- cube([opi_ir_width, outer_wall_size + 2, opi_ir_height + 1]);
|
|
310
|
+ translate([opi_length - opi_ir_off_x - opi_ir_width - cutout_gap, -1, -1])
|
|
311
|
+ cube([opi_ir_width + (2 * cutout_gap), outer_wall_size + 2, opi_ir_height + 1]);
|
310
|
312
|
}
|
311
|
313
|
|
312
|
314
|
// left wall
|
|
@@ -315,16 +317,16 @@ module case_top() {
|
315
|
317
|
cube([outer_wall_size, opi_width + (2 * outer_wall_size), top_standoff_height]);
|
316
|
318
|
|
317
|
319
|
// reset button
|
318
|
|
- translate([-1, outer_wall_size + opi_reset_off_y, -1])
|
319
|
|
- cube([outer_wall_size + 2, opi_reset_diameter, opi_reset_diameter + opi_reset_off_z + 1]);
|
|
320
|
+ translate([-1, outer_wall_size + opi_reset_off_y - cutout_gap, -1])
|
|
321
|
+ cube([outer_wall_size + 2, opi_reset_diameter + (2 * cutout_gap), opi_reset_diameter + opi_reset_off_z + 1]);
|
320
|
322
|
|
321
|
323
|
// camera connector
|
322
|
|
- translate([-1, outer_wall_size + opi_cam_off_y, -1])
|
323
|
|
- cube([outer_wall_size + 2, opi_cam_width, opi_cam_height + 1]);
|
|
324
|
+ translate([-1, outer_wall_size + opi_cam_off_y - cutout_gap, -1])
|
|
325
|
+ cube([outer_wall_size + 2, opi_cam_width + (2 * cutout_gap), opi_cam_height + 1]);
|
324
|
326
|
|
325
|
327
|
// micro usb connector
|
326
|
|
- translate([-1, outer_wall_size + opi_micro_usb_off_y, -1])
|
327
|
|
- cube([outer_wall_size + 2, opi_micro_usb_width, opi_micro_usb_height + 1]);
|
|
328
|
+ translate([-1, outer_wall_size + opi_micro_usb_off_y - cutout_gap, -1])
|
|
329
|
+ cube([outer_wall_size + 2, opi_micro_usb_width + (2 * cutout_gap), opi_micro_usb_height + 1]);
|
328
|
330
|
}
|
329
|
331
|
|
330
|
332
|
// right wall
|
|
@@ -333,16 +335,16 @@ module case_top() {
|
333
|
335
|
cube([outer_wall_size, opi_width + (2 * outer_wall_size), top_standoff_height]);
|
334
|
336
|
|
335
|
337
|
// single usb port
|
336
|
|
- translate([-1, outer_wall_size + opi_width - opi_single_usb_off_y - opi_single_usb_width, -1])
|
337
|
|
- cube([outer_wall_size + 2, opi_single_usb_width, opi_single_usb_height + 1]);
|
|
338
|
+ translate([-1, outer_wall_size + opi_width - opi_single_usb_off_y - opi_single_usb_width - cutout_gap, -1])
|
|
339
|
+ cube([outer_wall_size + 2, opi_single_usb_width + (2 * cutout_gap), opi_single_usb_height + 1]);
|
338
|
340
|
|
339
|
341
|
// ethernet port
|
340
|
|
- translate([-1, outer_wall_size + opi_width - opi_lan_off_y - opi_lan_width, -1])
|
341
|
|
- cube([outer_wall_size + 2, opi_lan_width, opi_lan_height + 1]);
|
|
342
|
+ translate([-1, outer_wall_size + opi_width - opi_lan_off_y - opi_lan_width - cutout_gap, -1])
|
|
343
|
+ cube([outer_wall_size + 2, opi_lan_width + (2 * cutout_gap), opi_lan_height + 1]);
|
342
|
344
|
|
343
|
345
|
// dual usb ports
|
344
|
|
- translate([-1, outer_wall_size + opi_width - opi_dual_usb_off_y - opi_dual_usb_width, -1])
|
345
|
|
- cube([outer_wall_size + 2, opi_dual_usb_width, opi_dual_usb_height + 1]);
|
|
346
|
+ translate([-1, outer_wall_size + opi_width - opi_dual_usb_off_y - opi_dual_usb_width - cutout_gap, -1])
|
|
347
|
+ cube([outer_wall_size + 2, opi_dual_usb_width + (2 * cutout_gap), opi_dual_usb_height + 1]);
|
346
|
348
|
}
|
347
|
349
|
}
|
348
|
350
|
|
|
@@ -355,19 +357,19 @@ module case_whole() {
|
355
|
357
|
|
356
|
358
|
// ---------------------
|
357
|
359
|
// For looking at it in the OpenSCAD editor:
|
358
|
|
-/*
|
|
360
|
+
|
359
|
361
|
case_whole();
|
360
|
362
|
// place orangepi inside case, for visualization
|
361
|
363
|
%translate([outer_wall_size, outer_wall_size, bottom_top_size + standoff_height])
|
362
|
364
|
orangepi_pc_plus();
|
363
|
|
-*/
|
|
365
|
+
|
364
|
366
|
// ---------------------
|
365
|
367
|
// For printing:
|
366
|
368
|
/*
|
367
|
369
|
case_bottom();
|
368
|
|
-*/
|
|
370
|
+*//*
|
369
|
371
|
translate([0, 2 * (opi_width + (2 * outer_wall_size)) + 25, bottom_top_size])
|
370
|
372
|
rotate([180, 0, 0])
|
371
|
373
|
case_top();
|
372
|
|
-
|
|
374
|
+*/
|
373
|
375
|
// ---------------------
|