From 7cec418b69169bd22c77ebf0a976548e0ff841ea Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Wed, 15 Nov 2023 21:09:42 -0500 Subject: [PATCH] added odroid-m1s, added hex vent cooling option and made other changes. --- README.md | 8 +- SBC_Model_Framework | 2 +- sbc_case_builder.json | 515 +++++++++++++++++++++++++++++++++- sbc_case_builder.scad | 50 +++- sbc_case_builder_library.scad | 5 + 5 files changed, 566 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0b983bf..9119dc3 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Introduction -This project is about autonomous SBC case creation. It utilizes the SBC Model Framework project to automatically generate cases based on the data for any of the 61 current SBC contained within the framework. This allows legacy, current and future SBC to have multiple cases available on day one of their inclusion in the framework. There are multiple base case designs(shell, panel, stacked, tray, tray-sides, round, hex, snap, fitted) available and each allows for different styles within the design. +This project is about autonomous SBC case creation. It utilizes the SBC Model Framework project to automatically generate cases based on the data for any of the 62 current SBC contained within the framework. This allows legacy, current and future SBC to have multiple cases available on day one of their inclusion in the framework. There are multiple base case designs(shell, panel, stacked, tray, tray-sides, round, hex, snap, fitted) available and each allows for different styles within the design. All case openings are created automatically based on SBC data and the dimensions of any case design can be expanded in any axis allowing for the creation of larger cases. If you reposition the SBC in a case, you will see i/o openings created or removed appropriately based on it’s proximity to the case geometry. These cases might be useful for prototypes or other in house uses to quickly and easily create standard, specialized and custom SBC cases thru different case designs, styles and accessories. @@ -103,9 +103,9 @@ Template creation and i/o panel layouts in a dxf format can be easily created an ### Case Designs and Styles The case naming convention for standard cases in the configuration file follow the basic form of “sbc”_”design”_”style” e.g. c4_shell or c4_tray_vu5. -#### Current Case Count 446 +#### Current Case Count 454 -##### Hardkernel - 182 +##### Hardkernel - 191 **Odorid-C1+ cases** - 16 : c1+_shell, c1+_panel, c1+_panel_lcd3.5, c1+_desktop_lcd3.5, c1+_stacked, c1+_tray, c1+_tray_sides, c1+_tray_vu5, c1+_tray_vu7, c1+_shell_boombox, c1+_panel_boombox, c1+_tray_boombox, c1+_round, c1+_hex, c1+_snap, c1+_fitted @@ -129,6 +129,8 @@ c4_tray_vu7, c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boo **Odorid-N2LQ cases** - 9 :n2lq_shell, n2lq_panel, n2lq_stacked, n2lq_tray, n2lq_tray_sides, n2lq_tray_vu5, n2lq_tray_vu7, n2lq_snap, n2lq_fitted +**Odorid-M1S cases** - 9 : m1s_shell, m1s_panel, m1s_stacked, m1s_tray, m1s_tray_vu5, m1s_tray_vu7, m1s_tray_sides, m1s_snap, m1s_fitted + **Odorid-M1 cases** - 12 : m1_panel, m1_tray, m1_tray_drive, m1_tray_sides, m1_tray_vu5, m1_tray_vu7, m1_snap, m1_fitted, m1_fitted_drivebox2.5, m1_fitted_drivebox3.5, m1_fitted_pizzabox, m1_fitted_drivebox3.5v **Odorid-XU4 cases** - 11 : xu4_shell, xu4_panel, xu4_stacked, xu4_tray, xu4_tray_sides, xu4_tray_vu5, xu4_tray_vu7, xu4_round, xu4_hex, xu4_snap, xu4_fitted diff --git a/SBC_Model_Framework b/SBC_Model_Framework index d81d920..cca4d08 160000 --- a/SBC_Model_Framework +++ b/SBC_Model_Framework @@ -1 +1 @@ -Subproject commit d81d9202194d949cc6f60f72b9b162f3af87fbad +Subproject commit cca4d08395b01765bac0b29dd65791a307069b3a diff --git a/sbc_case_builder.json b/sbc_case_builder.json index 8ad0d19..56578f1 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -5073,7 +5073,520 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, - "m1_panel": { + "m1s_shell": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 8, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3", + "case_design": "shell", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "2", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_panel": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "0", + "case_design": "panel", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1.5", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "1", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_stacked": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3.5", + "case_design": "stacked", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "hex", + "exhaust_vents": "none", + "fillet": "0", + "floorthick": "2", + "gap": "1.5", + "gpio_opening": "none", + "indents": "false", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "1", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_tray": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3", + "case_design": "tray", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "8.5", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "2", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_tray_sides": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "0", + "case_design": "tray", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "8.5", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "sides", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "2", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_tray_vu5": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3.5", + "case_design": "tray", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "8.5", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "vu5", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "2", + "floorthick": "2", + "gap": "1.5", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_tray_vu7": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3.5", + "case_design": "tray", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "8.5", + "case_offset_tz": "0", + "case_offset_x": "34", + "case_offset_y": "0", + "case_style": "vu7", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "2", + "floorthick": "2", + "gap": "1.5", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "34", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "2", + "sidewall_support": "false", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_snap": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3.5", + "case_design": "snap", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "1", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1s_fitted": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adjust": "0.01", + "bottom_ext_standoff": "[6.25, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_standoff": "[6.25, 7, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "c_fillet": "3.5", + "case_design": "fitted", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "hex", + "exhaust_vents": "vent", + "fillet": "0", + "floorthick": "2", + "gap": "1.5", + "gpio_opening": "none", + "indents": "true", + "lip": "5", + "lower_bottom": "0", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "sata_punchout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "m1s", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "sidethick": "1", + "sidewall_support": "true", + "tol": "0.25", + "top_ext_standoff": "[6.25, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_standoff": "[6.25, 20, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "view": "model", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" + }, + "m1_panel": { "$fn": "90", "accessory_highlight": "false", "accessory_name": "m1_panel", diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index 06300a6..180361e 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -50,6 +50,7 @@ fixed access_port and access_cover 180 rotation in portrait and landscape, adjusted jack_3.5 and hdmi_a_vertical opening, change radxa rockpi to rock, changed visionfive2 tray design bottom screw locations, updated sbc model framework. + 20231115 Version 2.0.5 added hex vent and new component openings, updated sbc model framework see https://github.com/hominoids/SBC_Case_Builder */ @@ -89,7 +90,7 @@ case_design = "shell"; // [shell,panel,stacked,tray,round,hex,snap,fitted] // base case style case_style = "none"; // ["none","vu5","vu7","sides"] // single board computer model -sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "rpi5_noheatsink", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "atomicpi", "jetsonnano", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b-v1.42", "rock5bq-v1.42", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "licheerv+dock", "visionfive2", "visionfive2q"] +sbc_model = "c1+"; // ["c1+", "c2", "c4", "xu4", "xu4q", "mc1", "hc1", "n1", "n2", "n2+", "n2+_noheatsink", "n2l", "n2lq", "m1", "m1_noheatsink", "m1s", "h2", "h3", "hc4", "show2", "rpizero", "rpizero2w", "rpi1a+", "rpi1b+", "rpi3a+", "rpi3b", "rpi3b+", "rpi4b", "rpi5", "rpi5_noheatsink", "a64", "rock64", "rockpro64", "quartz64a", "quartz64b", "h64b", "star64", "atomicpi", "jetsonnano", "rock4b+", "rock4c", "rock4c+", "rock5b-v1.3", "rock5b-v1.42", "rock5bq-v1.42", "vim1", "vim2", "vim3", "vim3l", "vim4", "tinkerboard", "tinkerboard-s", "tinkerboard-2", "tinkerboard-r2", "opizero", "opizero2", "opir1plus_lts", "opir1", "opi5", "licheerv+dock", "visionfive2", "visionfive2q"] // sbc location x axis pcb_loc_x = 0; //[0:.5:300] // sbc location y axis @@ -165,7 +166,7 @@ sata_punchout = false; // gpio openings gpio_opening = "none"; // [none,vent,open,punchout] // cooling openings -cooling = "fan"; // [none,vents,fan,custom] +cooling = "fan"; // [none,vents,fan,hex,custom] // exhaust vents exhaust_vents = "vent"; // [none,vent] // case accessory group to load @@ -2261,10 +2262,14 @@ module open_io() { } // top cooling openings if(side == "top" && cooling == "fan" && class == "heatsink" && type != "h3_oem" - && type != "h2_oem" && type != "n2_oem" && type != "n2+_oem") { + && type != "h2_oem" && type != "n2_oem" && type != "n2+_oem"&& type != "m1s_oem") { translate([loc_x+6,loc_y-28,case_z-(floorthick+adjust)-5]) fan_mask(40,floorthick+(2*adjust)+8,2); } + if(side == "top" && cooling == "fan" && class == "heatsink" && type == "m1s_oem") { + translate([loc_x,loc_y,case_z-(floorthick+adjust)-5]) + fan_mask(40,floorthick+(2*adjust)+8,2); + } if(side == "top" && cooling == "fan" && class == "heatsink" && (type == "n2_oem" || type == "n2+_oem")) { translate([loc_x+4,loc_y+5.5,-adjust]) fan_mask(80,floorthick+(2*adjust),2); @@ -2283,20 +2288,34 @@ module open_io() { translate([loc_x-5,loc_y-16,case_z-(floorthick+adjust)]) fan_mask(90,floorthick+6,2); } - if(side == "top" && cooling == "vents" && class == "heatsink") { - for(r=[loc_x+7:4:48+loc_x]) { + if(side == "top" && cooling == "vents" && class == "heatsink" && type != "m1s_oem") { + for(r=[loc_x+7:4:58+loc_x]) { translate([r,loc_y-20,case_z-(floorthick+adjust)-6]) - cube([2,25,floorthick+(adjust*2)+8]); + cube([2,30,floorthick+(adjust*2)+12]); } } + if(side == "top" && cooling == "vents" && class == "heatsink" && type == "m1s_oem") { + for(r=[loc_x+7:4:58+loc_x]) { + translate([r-8,loc_y+8,case_z-(floorthick+adjust)-6]) + cube([2,30,floorthick+(adjust*2)+12]); + } + } + if(side == "top" && cooling == "hex" && class == "heatsink" && type != "m1s_oem") { + translate([loc_x,loc_y-32,case_z-(floorthick+adjust)-6]) + vent_hex(11, 5, floorthick+(adjust*2)+12, 8, 1.5, "horizontal"); + } + if(side == "top" && cooling == "hex" && class == "heatsink" && type == "m1s_oem") { + translate([loc_x-8,loc_y,case_z-(floorthick+adjust)-6]) + vent_hex(11, 5, floorthick+(adjust*2)+12, 8, 1.5, "horizontal"); + } if(side == "top" && cooling == "custom" && class == "heatsink") { translate([loc_x+6,loc_y-14,case_z-(floorthick+adjust)]) - linear_extrude(height = wallthick+(2*adjust)) import(file = "./dxf/customfan.dxf"); + linear_extrude(height = wallthick+(2*adjust)+12) import(file = "./dxf/customfan.dxf"); } - if(side == "top" && exhaust_vents == "vent" && (cooling == "fan" || cooling == "vents" + if(side == "top" && exhaust_vents == "vent" && (cooling == "fan" || cooling == "vents" || cooling == "hex" || cooling == "custom") && class == "heatsink" && gpio_opening != "vent" && gpio_opening != "open" && gpio_opening != "punchout") { - for(r=[loc_x+7:4:46+loc_x]) { + for(r=[loc_x+7:4:50+loc_x]) { translate([r,depth-(2*wallthick)-adjust-2,bottom_height+2]) cube([2,wallthick+(2*adjust)+1,top_height-floorthick-6]); } @@ -2382,6 +2401,19 @@ module open_io() { punchout(15,8,1,wallthick+(2*adjust)+12,2,"rectangle"); } + if(side == "bottom" && type == "uart_micro_h" && rotation == 90) { + translate([loc_x-wallthick-gap+8.5,loc_y-1,bottom_height-6]) rotate([90,0,90]) + punchout(15,5,1,wallthick+(2*adjust)+10,2,"rectangle"); + } + if(side == "bottom" && type == "uart_micro_h" && rotation == -90) { + translate([loc_x+2*(wallthick+gap)+1,loc_y-1,bottom_height+5]) rotate([90,0,90]) + punchout(15,5,1,wallthick+(2*adjust)+5,2,"rectangle"); + } + if(side == "bottom" && type == "uart_micro_h" && rotation == 270) { + translate([loc_x-2*(wallthick),loc_y-1,bottom_height+5]) rotate([90,0,90]) + punchout(15,5,1,wallthick+(2*adjust)+12,2,"rectangle"); + } + // sata openings if(side == "top" && type == "sata_power_vrec" && sata_punchout == true) { translate([loc_x-3,loc_y+1.75,case_z-adjust-floorthick]) diff --git a/sbc_case_builder_library.scad b/sbc_case_builder_library.scad index ddd4375..d755996 100644 --- a/sbc_case_builder_library.scad +++ b/sbc_case_builder_library.scad @@ -54,6 +54,7 @@ vent_panel_hex(x, y, thick, cell_size, cell_spacing, border, borders), added nut_holder(nut, style, dia_x, dia_y, height), fixed access_port and access_cover 180 rotation in portrait and landscape, added h3_port_extender_holder(part,offset), cableholder_spacer() + 20231115 Version 2.0.5 added hex vent and new component openings see https://github.com/hominoids/SBC_Case_Builder @@ -3183,6 +3184,10 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick, place(loc_x+10.5,loc_y,loc_z,18,17.5,rotation,side) cube([19,12,27]); } + if(type == "rj45_low_profile" && rotation == 0) { + place(loc_x,loc_y-6,loc_z-3.5,15,8,rotation,side) + cube([14.75,8,12.25]); + } // micro usb opening if(class == "usb2" && type == "micro" && rotation == 0 && side == "top") { place(loc_x,loc_y-3,loc_z,8,3,rotation,side) microusb_open();