Added switch between COGS and breakout display

main
noah metz 2026-06-03 01:39:03 -06:00
parent 2ef2e75430
commit 573cb7bf2f
11 changed files with 27609 additions and 871 deletions

@ -1,7 +1,10 @@
from build123d import * from build123d import *
# --- Facade panel --- # --- Facade panel ---
PANEL = 1.6 # plate thickness (Cherry MX standard ~1.5 mm) PANEL = 1.5 # plate thickness (Cherry MX standard ~1.5 mm)
OLED_GLASS_X = 27
OLED_GLASS_Y = 19.5
OLED_GLASS_IN = 1.0
# --- Component footprints --- # --- Component footprints ---
SW_SIZE = 14.0 # Cherry MX plate cutout (square) SW_SIZE = 14.0 # Cherry MX plate cutout (square)
@ -13,46 +16,68 @@ OLED_H = 13.0 # visible window height
# --- OLED alignment pegs (solid 2 mm, 24 mm square pattern) --- # --- OLED alignment pegs (solid 2 mm, 24 mm square pattern) ---
POST_D = 2.0 # peg diameter POST_D = 2.0 # peg diameter
POST_SPACING = 24.0 # hole centre-to-centre POST_SPACING_X = 23.0 # hole centre-to-centre
POST_H = 12.0 # peg length behind panel POST_SPACING_Y = 23.6
POST_OFFSET = 4.35 # offset between hole and screen
POST_H = 3.0 # peg length behind panel
# --- Layout --- inner_w = OLED_W + 25
# MARGIN_Y=7 and OLED_SW_GAP=9 push outer_h to 50 mm, giving the top pegs inner_h = OLED_H + 25
# 1.5 mm clearance from the panel edge and the bottom pegs 2.5 mm clearance inner_z = 22.5
# above the switch cutout tops.
MARGIN_X = 3.0
MARGIN_Y = 7.0
OLED_SW_GAP = 9.0
outer_w = (N_SW - 1) * SW_PITCH + SW_SIZE + 2 * MARGIN_X # 58 mm oled_x = 0
outer_h = 2 * MARGIN_Y + OLED_H + OLED_SW_GAP + SW_SIZE # 50 mm oled_y = 0
oled_cy = outer_h / 2 - MARGIN_Y - OLED_H / 2 # 11.5 mm
sw_cy = -outer_h / 2 + MARGIN_Y + SW_SIZE / 2 # -11.0 mm
with BuildPart() as case: with BuildPart() as case:
Box(outer_w, outer_h, PANEL) with Locations((0, 0, PANEL/2)):
Box(inner_w+2*PANEL, inner_h+2*PANEL, PANEL)
with BuildSketch(Plane.XY.offset(PANEL / 2)): with BuildSketch(Plane.XY):
with Locations((0, oled_cy)): with Locations((oled_x, oled_y)):
Rectangle(OLED_W, OLED_H) Rectangle(OLED_W, OLED_H)
with Locations((-SW_PITCH, sw_cy), (0, sw_cy), (SW_PITCH, sw_cy)): extrude(amount=PANEL, mode=Mode.SUBTRACT)
with BuildSketch(Plane.XY.offset(PANEL-OLED_GLASS_IN)):
with Locations((oled_x, oled_y+POST_OFFSET/2)):
Rectangle(OLED_GLASS_X, OLED_GLASS_Y)
extrude(amount=OLED_GLASS_IN, mode=Mode.SUBTRACT)
with Locations((0, inner_h/2+PANEL/2, inner_z/2+PANEL)):
Box(inner_w+2*PANEL, PANEL, inner_z+2*PANEL)
with Locations((0, -inner_h/2-PANEL/2, inner_z/2+PANEL)):
Box(inner_w+2*PANEL, PANEL, inner_z+2*PANEL)
with BuildSketch(Plane.XZ.offset(-inner_h/2)):
with Locations((-SW_PITCH/2, PANEL+inner_z/2), (SW_PITCH/2, PANEL+inner_z/2)):
RectangleRounded(SW_SIZE, SW_SIZE, 0.3) RectangleRounded(SW_SIZE, SW_SIZE, 0.3)
extrude(amount=-PANEL, mode=Mode.SUBTRACT) extrude(amount=-PANEL, mode=Mode.SUBTRACT)
with Locations((-inner_w/2-PANEL/2, 0, inner_z/2+PANEL)):
Box(PANEL, inner_h+2*PANEL, inner_z+2*PANEL)
with Locations((inner_w/2+PANEL/2, 0, inner_z/2+PANEL)):
Box(PANEL, inner_h+2*PANEL, inner_z+2*PANEL)
with BuildSketch(Plane.YZ.offset(-inner_w/2)):
with Locations((-SW_PITCH/2, PANEL+inner_z/2), (SW_PITCH/2, PANEL+inner_z/2)):
RectangleRounded(SW_SIZE, SW_SIZE, 0.3)
extrude(amount=-PANEL, mode=Mode.SUBTRACT)
# Solid 2 mm alignment pegs extending from the back face # Solid 2 mm alignment pegs extending from the back face
half_s = POST_SPACING / 2 half_x = POST_SPACING_X / 2
post_z = -PANEL / 2 - POST_H / 2 half_y = POST_SPACING_Y / 2
post_xy = [ post_xy = [
(-half_s, oled_cy - half_s), (-half_x, half_y + POST_OFFSET/2),
( half_s, oled_cy - half_s), ( half_x,-half_y + POST_OFFSET/2),
(-half_s, oled_cy + half_s), (-half_x,-half_y + POST_OFFSET/2),
( half_s, oled_cy + half_s), ( half_x, half_y + POST_OFFSET/2),
] ]
with Locations([(x, y, post_z) for x, y in post_xy]): with Locations([(x + oled_x, y + oled_y, POST_H/2 + PANEL) for x, y in post_xy]):
Cylinder(POST_D / 2, POST_H) Cylinder(POST_D / 2, POST_H)
export_stl(case.part, "case/output/case.stl") export_stl(case.part, "case.stl")
try: try:
from ocp_vscode import show from ocp_vscode import show

@ -67,9 +67,42 @@
"version": 5 "version": 5
}, },
"net_inspector_panel": { "net_inspector_panel": {
"col_hidden": [], "col_hidden": [
"col_order": [], false,
"col_widths": [], false,
false,
false,
false,
false,
false,
false,
false,
false
],
"col_order": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"col_widths": [
156,
141,
103,
71,
103,
103,
103,
74,
103,
103
],
"custom_group_rules": [], "custom_group_rules": [],
"expanded_rows": [], "expanded_rows": [],
"filter_by_net_name": true, "filter_by_net_name": true,
@ -81,7 +114,7 @@
"show_unconnected_nets": false, "show_unconnected_nets": false,
"show_zero_pad_nets": false, "show_zero_pad_nets": false,
"sort_ascending": true, "sort_ascending": true,
"sorting_column": -1 "sorting_column": 0
}, },
"open_jobsets": [], "open_jobsets": [],
"project": { "project": {

@ -1,6 +1,238 @@
{ {
"board": { "board": {
"3dviewports": [], "3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_barcodes": false,
"apply_defaults_to_fp_dimensions": false,
"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": 0.8,
"height": 1.27,
"width": 2.54
},
"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": {
"border_display_style": 2,
"border_hatch_pitch": 0.5,
"corner_radius": 0.0,
"corner_smoothing": 0,
"fill_mode": 0,
"hatch_gap": 1.5,
"hatch_orientation": 0.0,
"hatch_smoothing_level": 0,
"hatch_smoothing_value": 0.1,
"hatch_thickness": 1.0,
"min_clearance": 0.5,
"min_island_area": 10.0,
"min_thickness": 0.25,
"pad_connection": 1,
"remove_islands": 0,
"thermal_relief_gap": 0.5,
"thermal_relief_spoke_width": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"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": "ignore",
"footprint_symbol_field_mismatch": "warning",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"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",
"missing_tuning_profile": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "error",
"padstack": "warning",
"pth_inside_courtyard": "error",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"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_not_centered_on_via": "ignore",
"track_on_post_machined_layer": "error",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"tuning_profile_track_geometries": "ignore",
"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.2,
"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": { "ipc2581": {
"bom_rev": "", "bom_rev": "",
"dist": "", "dist": "",
@ -446,7 +678,7 @@
"uuid": "4f1ddaab-5ed8-4280-ae9f-5da3efc5b3b5" "uuid": "4f1ddaab-5ed8-4280-ae9f-5da3efc5b3b5"
} }
], ],
"used_designators": "P1,BT1,SW1-4,D1-2,R1-3,Q1,U1-6", "used_designators": "#PWR9,#PWR15,#PWR30-43,#FLG1-7,R1,R12,C6-8",
"variants": [] "variants": []
}, },
"sheets": [ "sheets": [

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,839 @@
(kicad_symbol_lib
(version 20220914)
(generator kicad_symbol_editor)
(symbol "FS8205A"
(pin_names
(hide yes)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(in_pos_files yes)
(duplicate_pin_numbers_are_jumpers no)
(property "Reference" "Q"
(at 2.54 6.985 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "FS8205A"
(at 2.54 5.08 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-6"
(at 2.54 -3.81 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
(italic yes)
)
(justify left)
)
)
(property "Datasheet" "https://datasheet.lcsc.com/lcsc/1811161510_Fortune-Semiconductor-FS8205A_C32254.pdf"
(at 2.54 -5.715 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Description" "5.5A Id, 8.5V Vds, Common-Source Dual N-Channel MOSFET, Li-ion battery protection switch, SOT-23-6"
(at 0 0 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "ki_keywords" "Dual N-Channel MOSFET battery protection SOT-23-6 common source"
(at 0 0 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "ki_fp_filters" "SOT?23*6*"
(at 0 0 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
)
)
(symbol "FS8205A_0_1"
(polyline
(pts
(xy -2.286 5.08) (xy -5.08 5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -2.286 3.175) (xy -2.286 6.985)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 6.858) (xy 0.762 6.858) (xy 0.762 3.302) (xy -1.778 3.302)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 6.35) (xy -1.778 7.366)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 4.572) (xy -1.778 5.588)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 2.794) (xy -1.778 3.81)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.524 5.08) (xy -0.508 4.699) (xy -0.508 5.461) (xy -1.524 5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center -0.889 5.08)
(radius 2.794)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0 7.62) (xy 0 5.08) (xy -1.778 5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(circle
(center 0 6.858)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center 0 3.302)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 0 -3.302) (xy 0 3.302)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.254 4.572) (xy 0.381 4.699) (xy 1.143 4.699) (xy 1.27 4.826)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.762 4.699) (xy 0.381 5.334) (xy 1.143 5.334) (xy 0.762 4.699)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
)
(symbol "FS8205A_1_1"
(polyline
(pts
(xy -2.286 -3.175) (xy -2.286 -6.985)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -2.286 -5.08) (xy -5.08 -5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -2.794) (xy -1.778 -3.81)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -4.572) (xy -1.778 -5.588)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -6.35) (xy -1.778 -7.366)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -6.858) (xy 0.762 -6.858) (xy 0.762 -3.302) (xy -1.778 -3.302)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.524 -5.08) (xy -0.508 -4.699) (xy -0.508 -5.461) (xy -1.524 -5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center -0.889 -5.08)
(radius 2.794)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(circle
(center 0 0)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center 0 -3.302)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center 0 -6.858)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 0 -7.62) (xy 0 -5.08) (xy -1.778 -5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.254 -4.572) (xy 0.381 -4.699) (xy 1.143 -4.699) (xy 1.27 -4.826)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.762 -4.699) (xy 0.381 -5.334) (xy 1.143 -5.334) (xy 0.762 -4.699)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(pin passive line
(at 0 10.16 270)
(length 2.54)
(name "D1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "6"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 2.54 0 180)
(length 2.54)
(name "S"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 0 -10.16 90)
(length 2.54)
(name "D2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "5"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -7.62 -5.08 0)
(length 2.54)
(name "G2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 2.54 0 180)
(length 2.54)
(hide yes)
(name "S"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -7.62 5.08 0)
(length 2.54)
(name "G1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
(symbol "WEO012864AE_24P"
(pin_names
(offset 1.016)
(hide yes)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(in_pos_files yes)
(duplicate_pin_numbers_are_jumpers no)
(property "Reference" "J"
(at 7.62 2.54 0)
(show_name no)
(do_not_autoplace no)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "WEO012864AE_24P"
(at 7.62 0 0)
(show_name no)
(do_not_autoplace no)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" "Connector_FFC-FPC:Molex_503480-2400_1x24-1MP_P0.50mm_Horizontal"
(at 0 -5.08 0)
(hide yes)
(show_name no)
(do_not_autoplace no)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Datasheet" "https://www.winstar.com.tw/products/oled-module/graphic-oled-display/weo012864a.html"
(at 0 -7.62 0)
(hide yes)
(show_name no)
(do_not_autoplace no)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Description" "Winstar WEO012864AE COG OLED, 128x64, 24-pin FPC, CH1116 driver"
(at 0 -10.16 0)
(hide yes)
(show_name no)
(do_not_autoplace no)
(effects
(font
(size 1.27 1.27)
)
)
)
(symbol "WEO012864AE_24P_0_1"
(rectangle
(start -5.08 30.48)
(end 5.08 -30.48)
(stroke (width 0.254) (type default))
(fill (type background))
)
)
(symbol "WEO012864AE_24P_1_1"
(pin no_connect line
(at 10.16 -29.21 180)
(length 5.08)
(name "NC_GND"
(effects (font (size 1.27 1.27)))
)
(number "1"
(effects (font (size 1.27 1.27)))
)
)
(pin power_in line
(at 10.16 -26.67 180)
(length 5.08)
(name "VSS"
(effects (font (size 1.27 1.27)))
)
(number "2"
(effects (font (size 1.27 1.27)))
)
)
(pin power_in line
(at 10.16 -24.13 180)
(length 5.08)
(name "VSS"
(effects (font (size 1.27 1.27)))
)
(number "3"
(effects (font (size 1.27 1.27)))
)
)
(pin no_connect line
(at 10.16 -21.59 180)
(length 5.08)
(name "NC"
(effects (font (size 1.27 1.27)))
)
(number "4"
(effects (font (size 1.27 1.27)))
)
)
(pin power_in line
(at 10.16 -19.05 180)
(length 5.08)
(name "VDD1"
(effects (font (size 1.27 1.27)))
)
(number "5"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -16.51 180)
(length 5.08)
(name "IM1"
(effects (font (size 1.27 1.27)))
)
(number "6"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -13.97 180)
(length 5.08)
(name "IM2"
(effects (font (size 1.27 1.27)))
)
(number "7"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -11.43 180)
(length 5.08)
(name "/CS"
(effects (font (size 1.27 1.27)))
)
(number "8"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -8.89 180)
(length 5.08)
(name "/RES"
(effects (font (size 1.27 1.27)))
)
(number "9"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -6.35 180)
(length 5.08)
(name "A0"
(effects (font (size 1.27 1.27)))
)
(number "10"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -3.81 180)
(length 5.08)
(name "/WR"
(effects (font (size 1.27 1.27)))
)
(number "11"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 -1.27 180)
(length 5.08)
(name "E/RD"
(effects (font (size 1.27 1.27)))
)
(number "12"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 1.27 180)
(length 5.08)
(name "D0"
(effects (font (size 1.27 1.27)))
)
(number "13"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 3.81 180)
(length 5.08)
(name "D1"
(effects (font (size 1.27 1.27)))
)
(number "14"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 6.35 180)
(length 5.08)
(name "D2"
(effects (font (size 1.27 1.27)))
)
(number "15"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 8.89 180)
(length 5.08)
(name "D3"
(effects (font (size 1.27 1.27)))
)
(number "16"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 11.43 180)
(length 5.08)
(name "D4"
(effects (font (size 1.27 1.27)))
)
(number "17"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 13.97 180)
(length 5.08)
(name "D5"
(effects (font (size 1.27 1.27)))
)
(number "18"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 16.51 180)
(length 5.08)
(name "D6"
(effects (font (size 1.27 1.27)))
)
(number "19"
(effects (font (size 1.27 1.27)))
)
)
(pin input line
(at 10.16 19.05 180)
(length 5.08)
(name "D7"
(effects (font (size 1.27 1.27)))
)
(number "20"
(effects (font (size 1.27 1.27)))
)
)
(pin passive line
(at 10.16 21.59 180)
(length 5.08)
(name "IREF"
(effects (font (size 1.27 1.27)))
)
(number "21"
(effects (font (size 1.27 1.27)))
)
)
(pin power_in line
(at 10.16 24.13 180)
(length 5.08)
(name "VCOMH"
(effects (font (size 1.27 1.27)))
)
(number "22"
(effects (font (size 1.27 1.27)))
)
)
(pin power_in line
(at 10.16 26.67 180)
(length 5.08)
(name "VPP"
(effects (font (size 1.27 1.27)))
)
(number "23"
(effects (font (size 1.27 1.27)))
)
)
(pin no_connect line
(at 10.16 29.21 180)
(length 5.08)
(name "NC_GND"
(effects (font (size 1.27 1.27)))
)
(number "24"
(effects (font (size 1.27 1.27)))
)
)
)
(embedded_fonts no)
)
)

@ -0,0 +1,523 @@
(kicad_symbol_lib
(version 20220914)
(generator kicad_symbol_editor)
(symbol "FS8205A"
(pin_names
(hide yes)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(in_pos_files yes)
(duplicate_pin_numbers_are_jumpers no)
(property "Reference" "Q"
(at 2.54 6.985 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "FS8205A"
(at 2.54 5.08 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-6"
(at 2.54 -3.81 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
(italic yes)
)
(justify left)
)
)
(property "Datasheet" "https://datasheet.lcsc.com/lcsc/1811161510_Fortune-Semiconductor-FS8205A_C32254.pdf"
(at 2.54 -5.715 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Description" "5.5A Id, 8.5V Vds, Common-Source Dual N-Channel MOSFET, Li-ion battery protection switch, SOT-23-6"
(at 0 0 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "ki_keywords" "Dual N-Channel MOSFET battery protection SOT-23-6 common source"
(at 0 0 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "ki_fp_filters" "SOT?23*6*"
(at 0 0 0)
(hide yes)
(effects
(font
(size 1.27 1.27)
)
)
)
(symbol "FS8205A_0_1"
(polyline
(pts
(xy -2.286 5.08) (xy -5.08 5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -2.286 3.175) (xy -2.286 6.985)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 6.858) (xy 0.762 6.858) (xy 0.762 3.302) (xy -1.778 3.302)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 6.35) (xy -1.778 7.366)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 4.572) (xy -1.778 5.588)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 2.794) (xy -1.778 3.81)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.524 5.08) (xy -0.508 4.699) (xy -0.508 5.461) (xy -1.524 5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center -0.889 5.08)
(radius 2.794)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0 7.62) (xy 0 5.08) (xy -1.778 5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(circle
(center 0 6.858)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center 0 3.302)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 0 -3.302) (xy 0 3.302)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.254 4.572) (xy 0.381 4.699) (xy 1.143 4.699) (xy 1.27 4.826)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.762 4.699) (xy 0.381 5.334) (xy 1.143 5.334) (xy 0.762 4.699)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
)
(symbol "FS8205A_1_1"
(polyline
(pts
(xy -2.286 -3.175) (xy -2.286 -6.985)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -2.286 -5.08) (xy -5.08 -5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -2.794) (xy -1.778 -3.81)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -4.572) (xy -1.778 -5.588)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -6.35) (xy -1.778 -7.366)
)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.778 -6.858) (xy 0.762 -6.858) (xy 0.762 -3.302) (xy -1.778 -3.302)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -1.524 -5.08) (xy -0.508 -4.699) (xy -0.508 -5.461) (xy -1.524 -5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center -0.889 -5.08)
(radius 2.794)
(stroke
(width 0.254)
(type default)
)
(fill
(type none)
)
)
(circle
(center 0 0)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center 0 -3.302)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(circle
(center 0 -6.858)
(radius 0.254)
(stroke
(width 0)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 0 -7.62) (xy 0 -5.08) (xy -1.778 -5.08)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.254 -4.572) (xy 0.381 -4.699) (xy 1.143 -4.699) (xy 1.27 -4.826)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 0.762 -4.699) (xy 0.381 -5.334) (xy 1.143 -5.334) (xy 0.762 -4.699)
)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
)
(pin passive line
(at 0 10.16 270)
(length 2.54)
(name "D1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "6"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 2.54 0 180)
(length 2.54)
(name "S"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 0 -10.16 90)
(length 2.54)
(name "D2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "5"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -7.62 -5.08 0)
(length 2.54)
(name "G2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 2.54 0 180)
(length 2.54)
(hide yes)
(name "S"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin input line
(at -7.62 5.08 0)
(length 2.54)
(name "G1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
)

@ -0,0 +1,208 @@
(footprint "SW_Cherry_MX_EdgeMount"
(version 20260206)
(generator "pcbnew")
(generator_version "10.0")
(layer "F.Cu")
(descr "Cherry MX compatible keyswitch, edge-mount on 1.6mm PCB. Pin 1 on F.Cu at X=+2.54, Pin 2 on B.Cu at X=-3.81 (both relative to switch center). Pins straddle the board top edge with ~0.47mm clearance each side. Remove or clip the plastic mounting pins before installation — they are 1.7mm diameter and will not fit in a 1.6mm PCB edge.")
(tags "cherry mx edge mount keyboard switch 1.6mm")
(property "Reference" "REF**"
(at 0 -9.5 0)
(layer "F.SilkS")
(uuid "3a1c2e4f-5b6d-7e8f-9012-3a4b5c6d7e8f")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "SW_Cherry_MX_EdgeMount"
(at 0 -8 0)
(layer "F.Fab")
(uuid "4b2d3f5a-6c7e-8f90-1234-4b5c6d7e8f90")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "5c3e4f6b-7d8f-9012-3456-5c6d7e8f9012")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "6d4f5a7c-8e9f-0123-4567-6d7e8f901234")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(duplicate_pad_numbers_are_jumpers no)
(fp_text user "${REFERENCE}"
(at 0 -7 0)
(layer "F.Fab")
(uuid "7e5a6b8d-9f01-2345-6789-7e8f90123456")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(fp_line
(start -7 0)
(end 7 0)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "8f6b7c9e-0123-4567-89ab-8f9012345678")
)
(fp_line
(start -7 0)
(end -7 -14)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "9a7c8d0f-1234-5678-9abc-9a0123456789")
)
(fp_line
(start 7 0)
(end 7 -14)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "ab8d9e1a-2345-6789-abcd-ab123456789a")
)
(fp_line
(start -7 -14)
(end 7 -14)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "bc9eaf2b-3456-789a-bcde-bc23456789ab")
)
(fp_line
(start -7 0)
(end 7 0)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "cda0b03c-4567-89ab-cdef-cd3456789abc")
)
(fp_line
(start -7 0)
(end -7 -14)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "deb1c14d-5678-9abc-def0-de456789abcd")
)
(fp_line
(start 7 0)
(end 7 -14)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "efc2d25e-6789-abcd-ef01-ef56789abcde")
)
(fp_line
(start -7 -14)
(end 7 -14)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "f0d3e36f-789a-bcde-f012-f06789abcdef")
)
(fp_circle
(center -5.08 0)
(end -3.23 0)
(stroke
(width 0.1)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "a1e4f47a-89ab-cdef-0123-a178abcdef01")
)
(fp_circle
(center 5.08 0)
(end 6.93 0)
(stroke
(width 0.1)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "b2f5a58b-9abc-def0-1234-b289bcdef012")
)
(fp_rect
(start -7.5 -14.5)
(end 4 3.5)
(stroke
(width 0.05)
(type solid)
)
(fill none)
(layer "F.CrtYd")
(uuid "c3a6b69c-abcd-ef01-2345-c39acdef0123")
)
(fp_rect
(start -5.5 -0.5)
(end 7.5 3.5)
(stroke
(width 0.05)
(type solid)
)
(fill none)
(layer "B.CrtYd")
(uuid "d4b7c7ad-bcde-f012-3456-d4abdef01234")
)
(pad "1" smd roundrect
(at 2.54 1.5)
(size 1.8 3.0)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "e5c8d8be-cdef-0123-4567-e5bcef012345")
)
(pad "2" smd roundrect
(at -3.81 1.5)
(size 1.8 3.0)
(layers "B.Cu" "B.Mask" "B.Paste")
(roundrect_rratio 0.25)
(uuid "f6d9e9cf-def0-1234-5678-f6cdf0123456")
)
(embedded_fonts no)
)

@ -0,0 +1,4 @@
(fp_lib_table
(version 7)
(lib (name "commeownder")(type "KiCad")(uri "${KIPRJMOD}/commeownder.pretty")(options "")(descr "Project-specific footprints"))
)

@ -0,0 +1,4 @@
(sym_lib_table
(version 7)
(lib (name "commeownder")(type "KiCad")(uri "${KIPRJMOD}/commeownder.kicad_sym")(options "")(descr "Project-specific symbols"))
)