Compare commits

..

No commits in common. "main" and "v2" have entirely different histories.
main ... v2

12 changed files with 995 additions and 38036 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{ {
"board": { "board": {
"active_layer": 7, "active_layer": 2,
"active_layer_preset": "", "active_layer_preset": "",
"auto_track_width": false, "auto_track_width": false,
"hidden_netclasses": [], "hidden_netclasses": [],

View file

@ -440,7 +440,6 @@
"single_global_label": "ignore", "single_global_label": "ignore",
"unannotated": "error", "unannotated": "error",
"unconnected_wire_endpoint": "warning", "unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error", "unit_value_mismatch": "error",
"unresolved_variable": "error", "unresolved_variable": "error",
"wire_dangling": "error" "wire_dangling": "error"

File diff suppressed because it is too large Load diff

View file

@ -1,131 +0,0 @@
{
"board": {
"active_layer": 7,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"shapes": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
"vias",
"footprint_text",
"footprint_anchors",
"ratsnest",
"grid",
"footprints_front",
"footprints_back",
"footprint_values",
"footprint_references",
"tracks",
"drc_errors",
"drawing_sheet",
"bitmaps",
"pads",
"zones",
"drc_warnings",
"drc_exclusions",
"locked_item_shadows",
"conflict_shadows",
"shapes"
],
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "48ish_soldered_cfx.kicad_prl",
"version": 5
},
"net_inspector_panel": {
"col_hidden": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
],
"col_order": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"col_widths": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"custom_group_rules": [],
"expanded_rows": [],
"filter_by_net_name": true,
"filter_by_netclass": true,
"filter_text": "",
"group_by_constraint": false,
"group_by_netclass": false,
"show_unconnected_nets": false,
"show_zero_pad_nets": false,
"sort_ascending": true,
"sorting_column": 0
},
"open_jobsets": [],
"project": {
"files": []
},
"schematic": {
"selection_filter": {
"graphics": true,
"images": true,
"labels": true,
"lockedItems": false,
"otherItems": true,
"pins": true,
"symbols": true,
"text": true,
"wires": true
}
}
}

View file

@ -1,658 +0,0 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 2.2,
"height": 3.8,
"width": 3.8
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [
[
"npth_inside_courtyard|151500000|111000000|7e3f9814-e570-4046-a4f4-bc5194edfca8|40cefe3d-76ed-4a8a-b837-001290e24f03",
"Pad near hole is fine actually"
]
],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "warning",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "warning",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "warning",
"padstack": "warning",
"pth_inside_courtyard": "warning",
"shorting_items": "error",
"silk_edge_clearance": "ignore",
"silk_over_copper": "ignore",
"silk_overlap": "ignore",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [
"stuff"
],
"pinned_symbol_libs": [
"stuff"
]
},
"meta": {
"filename": "48ish_soldered_cfx.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 4
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "/home/erin/Downloads/48ish-out",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "${PROJECTNAME}.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": true
},
{
"group_by": false,
"label": "JLCPCB Part Number",
"name": "JLCPCB Part Number",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Sim.Pins",
"name": "Sim.Pins",
"show": false
},
{
"group_by": false,
"label": "Sim.Device",
"name": "Sim.Device",
"show": false
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"e3c88f17-e431-4ad8-b491-c68f92a3599e",
"Root"
]
],
"text_variables": {}
}

View file

@ -1,22 +1,17 @@
all: plot-zip positions all: plot-zip positions
gerbers: gerbers:
kicad-cli pcb export gerbers 48ish_soldered.kicad_pcb --board-plot-params -o 48ish_soldered_out/mbk kicad-cli pcb export gerbers 48ish_soldered.kicad_pcb --board-plot-params -o 48ish_soldered_out
kicad-cli pcb export gerbers 48ish_soldered_cfx.kicad_pcb --board-plot-params -o 48ish_soldered_out/cfx
drills: drills:
kicad-cli pcb export drill 48ish_soldered.kicad_pcb --excellon-separate-th -o 48ish_soldered_out/mbk kicad-cli pcb export drill 48ish_soldered.kicad_pcb --excellon-separate-th -o 48ish_soldered_out
kicad-cli pcb export drill 48ish_soldered_cfx.kicad_pcb --excellon-separate-th -o 48ish_soldered_out/cfx
positions: positions:
kicad-cli pcb export pos 48ish_soldered.kicad_pcb --format csv --units mm --side back --smd-only -o 48ish_soldered_mbk-bottom-pos.csv kicad-cli pcb export pos 48ish_soldered.kicad_pcb --format csv --units mm --side back --smd-only -o 48ish_soldered-bottom-pos.csv
kicad-cli pcb export pos 48ish_soldered_cfx.kicad_pcb --format csv --units mm --side back --smd-only -o 48ish_soldered_cfx-bottom-pos.csv
# replace headers with what jlcpcb wants - see https://jlcpcb.com/help/article/How-to-generate-the-BOM-and-Centroid-file-from-KiCAD # replace headers with what jlcpcb wants - see https://jlcpcb.com/help/article/How-to-generate-the-BOM-and-Centroid-file-from-KiCAD
sed -e 's/Ref/Designator/' -e 's/PosX/Mid X/' -e 's/PosY/Mid Y/' -e 's/Rot/Rotation/' -e 's/Side/Layer/' -i 48ish_soldered_mbk-bottom-pos.csv sed -e 's/Ref/Designator/' -e 's/PosX/Mid X/' -e 's/PosY/Mid Y/' -e 's/Rot/Rotation/' -e 's/Side/Layer/' -i 48ish_soldered-bottom-pos.csv
sed -e 's/Ref/Designator/' -e 's/PosX/Mid X/' -e 's/PosY/Mid Y/' -e 's/Rot/Rotation/' -e 's/Side/Layer/' -i 48ish_soldered_cfx-bottom-pos.csv
plot: gerbers drills plot: gerbers drills
plot-zip: gerbers drills plot-zip: gerbers drills
zip -FSr 48ish_soldered_mbk_out.zip 48ish_soldered_out/mbk zip -FSr 48ish_soldered_out.zip 48ish_soldered_out
zip -FSr 48ish_soldered_cfx_out.zip 48ish_soldered_out/cfx

View file

@ -1,12 +1,10 @@
# 48ish # 48ish
A wireless, low-profile, 47/48-key keyboard PCB for Kalih Choc v1 switches, with variants for 18x17mm (MBK) or 17x17mm (CFX) keycap spacing. A wireless, low-profile 47/48-key keyboard PCB.
![a thin rectangular keyboard with keys organized in a 12 by 4 grid, the bottom middle two keys joined in a single small spacebar. the board is held up in one hand, and has blank keycaps in white, green, and blue.](images/47.png)
## production files ## production files
production files are uploaded [with each release](https://git.ewin.moe/erin/48ish). works with JLCPCB, haven't tried any other production houses, ymmv works with JLCPCB, haven't tried any other production houses, ymmv
production outputs automated with `just` (`apt install just` etc) and `kicad-cli` (it came free with your fucking kicad) production outputs automated with `just` (`apt install just` etc) and `kicad-cli` (it came free with your fucking kicad)
@ -16,17 +14,9 @@ production outputs automated with `just` (`apt install just` etc) and `kicad-cli
- BOM: `48ish_soldered_bom.csv` (not generated by kicad Yet:tm:; includes specific JLCPCB part numbers, you may want to shop around for alternatives) - BOM: `48ish_soldered_bom.csv` (not generated by kicad Yet:tm:; includes specific JLCPCB part numbers, you may want to shop around for alternatives)
- Placements: `48ish_soldered-bottom-pos.csv` (generated by kicad, with column names manually edited to reflect [JLCPCB's requirements](https://jlcpcb.com/help/article/pick-place-file-for-pcb-assembly)) - Placements: `48ish_soldered-bottom-pos.csv` (generated by kicad, with column names manually edited to reflect [JLCPCB's requirements](https://jlcpcb.com/help/article/pick-place-file-for-pcb-assembly))
## that sounds complicated but i still want one
hit me up on fedi [@erin@tired.umbreon.online](https://tired.umbreon.online/@erin) and i'll maybe do a custom build for you, if shipping you things from the united states isn't too complicated
## case???
[here's a basic one](case). the rendered stl file is attached to the latest release
## firmware??? ## firmware???
i wrote a zmk shield for this but dude i am not figuring out the zmk local build steps. go look at [the github repo for the shield firmware](https://github.com/ewwwin/zmk-keyboard-48ish) and grab the firmware from the latest github actions run, i do not care i wrote a zmk shield for this but dude i am not figuring out the zmk local build steps. go look at [the github repo for the shield firmware](https://github.com/ewwwin/zmk-shield-48ish) and grab the firmware from the latest github actions run, i do not care
## acknowledgements ## acknowledgements

View file

@ -1,76 +0,0 @@
$fn = 20;
baseplate_thickness = 2;
inner_clearance = 6.5; // space inside the case for the battery/mcu to occupy
pcb_thickness = 1.6; // thickness of the pcb
module roundsquare (size, r) {
translate([r, r]) minkowski() {
square([size.x-2*r, size.y-2*r]);
circle(r=r);
}
}
module shell () {
difference() {
// block
linear_extrude(baseplate_thickness + inner_clearance + pcb_thickness) {
translate([-1, -1]) roundsquare([214+1*2, 67+1*2], r=2+1);
}
// cut for shelf
translate([0, 0, baseplate_thickness + inner_clearance]) linear_extrude(pcb_thickness + 2) {
roundsquare([214, 67], r=2-0.25); // pcb r=2 but it's not exact
}
// cut for inner clearance
translate([0, 0, baseplate_thickness]) linear_extrude(inner_clearance + 10) {
translate([1, 1]) roundsquare([214 - 1 * 2, 67 - 1 * 2], r=1);
}
}
}
module standoffs () {
// for M2 3x3 standoffs
hole_diameter = 3;
hole_depth = 3 * 1.5;
wall_thickness = 1;
// offsets the top of the standoffs down from where the pcb will actually rest; this allows the screws to actually hold the pcb down against the outer lip of the case and prevent rattling if the pcb is not perfectly flat
standoff_top_face_offset = -0.25;
for (point = [
[17 + 18 * 0, 16.5 + 17 * 0],
[17 + 18 * 2, 16.5 + 17 * 2],
[17 + 18 * 4, 16.5 + 17 * 0],
[17 + 18 * 5, 16.5 + 17 * 2],
[17 + 18 * 6, 16.5 + 17 * 0],
[17 + 18 * 8, 16.5 + 17 * 2],
[17 + 18 * 10, 16.5 + 17 * 0],
]) {
translate([point.x, point.y, baseplate_thickness - 0.01]) difference() {
cylinder(h = inner_clearance + standoff_top_face_offset + .01, d = hole_diameter + 2*wall_thickness);
translate([0, 0, inner_clearance + standoff_top_face_offset + .1 - hole_depth]) cylinder(h = hole_depth + .02, d = hole_diameter); // hole inner - adjust for insert size
}
}
}
difference() {
shell();
translate([2, 65-.01, baseplate_thickness])
// cube([34, 2, 30]);
// cube([34, 5, 6]);
cube([18+17-2, 2, 30]);
// usb-c cutout
translate([17 + 18/2 - 9/2, 71, baseplate_thickness + inner_clearance - 6.5]) {
rotate([90, 0, 0]) linear_extrude(8) {
roundsquare([9, 3.75], r = 1.5);
}
}
// power switch cutout
translate([4, 71, baseplate_thickness + inner_clearance - 2]) {
rotate([90, 0, 0]) linear_extrude(8) {
roundsquare([6.5, 2], r = 0.5);
}
}
}
standoffs();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 MiB

View file

@ -1,4 +1,4 @@
(footprint "Choc_v1_18x17mm_spacing" (footprint "Choc_v1"
(version 20241229) (version 20241229)
(generator "pcbnew") (generator "pcbnew")
(generator_version "9.0") (generator_version "9.0")

View file

@ -1,226 +0,0 @@
(footprint "Choc_v1_17x17mm_spacing"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(property "Reference" "SW13"
(at 0 0 0)
(layer "F.SilkS")
(hide yes)
(uuid "5b8b2509-cc48-47a4-8fce-ab86fcffde68")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Value" "SW_SPST"
(at 0 0 0)
(layer "F.SilkS")
(hide yes)
(uuid "aacfd6f5-65b7-4133-8281-45c322585029")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" "~"
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "2a52bd72-0c3f-48f2-a724-e8d669cfe14f")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" "Choc v1 keyswitch"
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "60fcfa86-dd34-4fec-98c7-ae7cfcb9d8ee")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "JLCPCB Part Number" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "7c202ef6-551b-4cdd-9ae7-26d21269315b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr through_hole exclude_from_bom)
(fp_line
(start -8.5 -8.5)
(end 8.5 -8.5)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "7699333a-f4db-4625-a04f-ceb94bcace22")
)
(fp_line
(start -8.5 8.5)
(end -8.5 -8.5)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "84e98009-a36c-4a17-a569-fde4fbea482e")
)
(fp_line
(start -7 -6)
(end -7 -7)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "c3e13b08-e233-4954-86c1-a796d408a520")
)
(fp_line
(start -7 7)
(end -7 6)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "d1e7dd04-eabb-4c9c-9bd8-3860764a3590")
)
(fp_line
(start -7 7)
(end -6 7)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "49c30273-bb99-474a-8452-3e95b3920c2c")
)
(fp_line
(start -6 -7)
(end -7 -7)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "54c7fd19-7ce7-4c39-9f25-859237f52ffc")
)
(fp_line
(start 6 7)
(end 7 7)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "ede29a3f-a9a6-47df-836d-c4772ed880b1")
)
(fp_line
(start 7 -7)
(end 6 -7)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "65ba7540-2b09-40be-8697-21853845d68e")
)
(fp_line
(start 7 -7)
(end 7 -6)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "f1d0021a-165e-4889-aa81-e278d0d78cc6")
)
(fp_line
(start 7 6)
(end 7 7)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "c89ad502-74fd-4515-831a-e77ed3111cbc")
)
(fp_line
(start 8.5 -8.5)
(end 8.5 8.5)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "8210335c-d6a0-4308-8c53-57e96bf7ef0e")
)
(fp_line
(start 8.5 8.5)
(end -8.5 8.5)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "36a01b58-12db-413b-bdf4-8e7e60f5b51e")
)
(pad "" np_thru_hole circle
(at -5.5 0 180)
(size 1.7018 1.7018)
(drill 1.7018)
(layers "*.Cu" "*.Mask")
(uuid "5add7edf-3b4d-49b6-9b81-fda7ac714069")
)
(pad "" np_thru_hole circle
(at 0 0 180)
(size 3.429 3.429)
(drill 3.429)
(layers "*.Cu" "*.Mask")
(uuid "42fb6c34-34c0-481b-8207-70ca722ad0fb")
)
(pad "" np_thru_hole circle
(at 5.5 0 180)
(size 1.7018 1.7018)
(drill 1.7018)
(layers "*.Cu" "*.Mask")
(uuid "cb8a715d-8e12-4712-82bb-413e7d72aaf4")
)
(pad "1" thru_hole circle
(at -5 3.8 180)
(size 2.032 2.032)
(drill 1.27)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "6ef19e7b-3b30-4e26-bfe0-826067df6d4a")
)
(pad "2" thru_hole circle
(at 0 5.9 180)
(size 2.032 2.032)
(drill 1.27)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "5b307a43-4634-436d-b54b-63eed3a5e24c")
)
(embedded_fonts no)
)