Compare commits

..

17 commits

14 changed files with 38229 additions and 7176 deletions

File diff suppressed because it is too large Load diff

View file

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

View file

@ -440,6 +440,7 @@
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
@ -646,10 +647,6 @@
[
"e3c88f17-e431-4ad8-b491-c68f92a3599e",
"Root"
],
[
"98ee239b-163f-48b3-a8ff-c02836b195b0",
"LEDs"
]
],
"text_variables": {}

View file

@ -1542,7 +1542,7 @@
(uuid "0df900b7-f253-49e5-be16-069430e9c15f")
)
(junction
(at 107.95 172.72)
(at 119.38 172.72)
(diameter 0)
(color 0 0 0 0)
(uuid "0fa57eb5-eaa7-4e45-8fbc-a988e3305738")
@ -1620,7 +1620,7 @@
(uuid "38bd1f97-602b-4f5b-a40a-87875dc43770")
)
(junction
(at 77.47 162.56)
(at 88.9 162.56)
(diameter 0)
(color 0 0 0 0)
(uuid "3c09b5da-21df-42e6-9498-c7ad2ed6be36")
@ -2010,15 +2010,19 @@
(uuid "f81cd84f-5a32-48ec-838b-3ea5ed6e0310")
)
(no_connect
(at 57.15 129.54)
(at 68.58 129.54)
(uuid "4095a63d-c131-4c91-966c-43222aff5c94")
)
(no_connect
(at 68.58 127)
(uuid "4e80321e-d03a-4aa5-9448-f5a82991d97d")
)
(no_connect
(at 228.6 121.92)
(uuid "5321128d-8d6d-45bc-a235-b50132ebf69f")
)
(no_connect
(at 97.79 121.92)
(at 109.22 121.92)
(uuid "6ed74e1d-3701-4e27-b475-923ead78bddb")
)
(bus_entry
@ -2040,7 +2044,7 @@
(uuid "024cf0bc-2802-49aa-8bde-67656e1c8a12")
)
(bus_entry
(at 50.8 144.78)
(at 62.23 144.78)
(size -2.54 2.54)
(stroke
(width 0)
@ -2049,7 +2053,7 @@
(uuid "03b26fc9-15eb-461b-868d-b1600ca48be1")
)
(bus_entry
(at 50.8 147.32)
(at 62.23 147.32)
(size -2.54 2.54)
(stroke
(width 0)
@ -2058,7 +2062,7 @@
(uuid "0db1af60-e609-40de-8843-4982b19f1c65")
)
(bus_entry
(at 48.26 137.16)
(at 59.69 137.16)
(size -2.54 2.54)
(stroke
(width 0)
@ -2067,7 +2071,7 @@
(uuid "0f7ca82b-317f-41fa-9910-3755033761be")
)
(bus_entry
(at 105.41 149.86)
(at 116.84 149.86)
(size 2.54 2.54)
(stroke
(width 0)
@ -2076,7 +2080,7 @@
(uuid "0fb38ceb-4dbf-4507-862b-b6269736108a")
)
(bus_entry
(at 48.26 132.08)
(at 59.69 132.08)
(size -2.54 2.54)
(stroke
(width 0)
@ -2148,7 +2152,7 @@
(uuid "4dd0e044-8c64-4bde-a209-e47dec1f86d2")
)
(bus_entry
(at 50.8 149.86)
(at 62.23 149.86)
(size -2.54 2.54)
(stroke
(width 0)
@ -2157,7 +2161,7 @@
(uuid "538a8068-5738-4036-9521-903be9e9c118")
)
(bus_entry
(at 105.41 134.62)
(at 116.84 134.62)
(size 2.54 2.54)
(stroke
(width 0)
@ -2166,7 +2170,7 @@
(uuid "676789f5-fc97-49bb-a6d7-dbb9c049ee94")
)
(bus_entry
(at 50.8 142.24)
(at 62.23 142.24)
(size -2.54 2.54)
(stroke
(width 0)
@ -2184,7 +2188,7 @@
(uuid "7b4dc7c4-5575-4bbf-a2d6-bb9b5dac9d70")
)
(bus_entry
(at 105.41 144.78)
(at 116.84 144.78)
(size 2.54 2.54)
(stroke
(width 0)
@ -2202,7 +2206,7 @@
(uuid "82af69a9-c389-46a3-8b78-370df5befe31")
)
(bus_entry
(at 105.41 147.32)
(at 116.84 147.32)
(size 2.54 2.54)
(stroke
(width 0)
@ -2211,7 +2215,7 @@
(uuid "89bb9591-bea9-4ad6-b767-85e40b212f46")
)
(bus_entry
(at 105.41 137.16)
(at 116.84 137.16)
(size 2.54 2.54)
(stroke
(width 0)
@ -2220,7 +2224,7 @@
(uuid "9408f5ba-d66f-4133-8279-707cf3d63880")
)
(bus_entry
(at 48.26 134.62)
(at 59.69 134.62)
(size -2.54 2.54)
(stroke
(width 0)
@ -2229,7 +2233,7 @@
(uuid "b5ab9156-2013-4fe0-9b1f-6fd9bf98af0d")
)
(bus_entry
(at 48.26 139.7)
(at 59.69 139.7)
(size -2.54 2.54)
(stroke
(width 0)
@ -2238,7 +2242,7 @@
(uuid "be803e9f-21d5-4a1f-9532-c1871de945d8")
)
(bus_entry
(at 105.41 142.24)
(at 116.84 142.24)
(size 2.54 2.54)
(stroke
(width 0)
@ -2247,7 +2251,7 @@
(uuid "c2cf5ad8-fe1e-4efa-83d6-f83cb50cd21f")
)
(bus_entry
(at 105.41 139.7)
(at 116.84 139.7)
(size 2.54 2.54)
(stroke
(width 0)
@ -2301,7 +2305,7 @@
(uuid "ee7bc58b-d793-45a6-a82e-c8e64ad02689")
)
(bus_entry
(at 105.41 132.08)
(at 116.84 132.08)
(size 2.54 2.54)
(stroke
(width 0)
@ -2321,7 +2325,7 @@
)
(wire
(pts
(xy 48.26 134.62) (xy 57.15 134.62)
(xy 59.69 134.62) (xy 68.58 134.62)
)
(stroke
(width 0)
@ -2371,7 +2375,7 @@
)
(bus
(pts
(xy 48.26 149.86) (xy 48.26 152.4)
(xy 59.69 149.86) (xy 59.69 152.4)
)
(stroke
(width 0)
@ -2411,7 +2415,7 @@
)
(wire
(pts
(xy 74.93 162.56) (xy 77.47 162.56)
(xy 86.36 162.56) (xy 88.9 162.56)
)
(stroke
(width 0)
@ -2471,7 +2475,7 @@
)
(wire
(pts
(xy 110.49 127) (xy 115.57 127)
(xy 121.92 127) (xy 127 127)
)
(stroke
(width 0)
@ -2521,7 +2525,7 @@
)
(wire
(pts
(xy 77.47 160.02) (xy 77.47 162.56)
(xy 88.9 160.02) (xy 88.9 162.56)
)
(stroke
(width 0)
@ -2531,7 +2535,7 @@
)
(wire
(pts
(xy 50.8 149.86) (xy 57.15 149.86)
(xy 62.23 149.86) (xy 68.58 149.86)
)
(stroke
(width 0)
@ -2541,7 +2545,7 @@
)
(wire
(pts
(xy 97.79 144.78) (xy 105.41 144.78)
(xy 109.22 144.78) (xy 116.84 144.78)
)
(stroke
(width 0)
@ -2571,7 +2575,7 @@
)
(bus
(pts
(xy 107.95 172.72) (xy 124.46 172.72)
(xy 119.38 172.72) (xy 135.89 172.72)
)
(stroke
(width 0)
@ -2661,7 +2665,7 @@
)
(wire
(pts
(xy 97.79 149.86) (xy 105.41 149.86)
(xy 109.22 149.86) (xy 116.84 149.86)
)
(stroke
(width 0)
@ -2719,16 +2723,6 @@
)
(uuid "3663c8d3-4477-4364-9b2a-cf3cc92cd3bf")
)
(wire
(pts
(xy 48.26 127) (xy 57.15 127)
)
(stroke
(width 0)
(type default)
)
(uuid "3681dd0f-9e2f-4695-93b6-c608492fb319")
)
(wire
(pts
(xy 196.85 50.8) (xy 196.85 63.5)
@ -2741,7 +2735,7 @@
)
(bus
(pts
(xy 107.95 144.78) (xy 107.95 147.32)
(xy 119.38 144.78) (xy 119.38 147.32)
)
(stroke
(width 0)
@ -2751,7 +2745,7 @@
)
(wire
(pts
(xy 97.79 142.24) (xy 105.41 142.24)
(xy 109.22 142.24) (xy 116.84 142.24)
)
(stroke
(width 0)
@ -2771,7 +2765,7 @@
)
(bus
(pts
(xy 48.26 147.32) (xy 48.26 149.86)
(xy 59.69 147.32) (xy 59.69 149.86)
)
(stroke
(width 0)
@ -2781,7 +2775,7 @@
)
(wire
(pts
(xy 77.47 115.57) (xy 77.47 116.84)
(xy 88.9 115.57) (xy 88.9 116.84)
)
(stroke
(width 0)
@ -2801,7 +2795,7 @@
)
(wire
(pts
(xy 50.8 144.78) (xy 57.15 144.78)
(xy 62.23 144.78) (xy 68.58 144.78)
)
(stroke
(width 0)
@ -2811,7 +2805,7 @@
)
(bus
(pts
(xy 107.95 147.32) (xy 107.95 149.86)
(xy 119.38 147.32) (xy 119.38 149.86)
)
(stroke
(width 0)
@ -2831,7 +2825,7 @@
)
(wire
(pts
(xy 50.8 142.24) (xy 57.15 142.24)
(xy 62.23 142.24) (xy 68.58 142.24)
)
(stroke
(width 0)
@ -2881,7 +2875,7 @@
)
(wire
(pts
(xy 97.79 132.08) (xy 105.41 132.08)
(xy 109.22 132.08) (xy 116.84 132.08)
)
(stroke
(width 0)
@ -2891,7 +2885,7 @@
)
(bus
(pts
(xy 30.48 142.24) (xy 45.72 142.24)
(xy 41.91 142.24) (xy 57.15 142.24)
)
(stroke
(width 0)
@ -2901,7 +2895,7 @@
)
(wire
(pts
(xy 97.79 137.16) (xy 105.41 137.16)
(xy 109.22 137.16) (xy 116.84 137.16)
)
(stroke
(width 0)
@ -2991,7 +2985,7 @@
)
(wire
(pts
(xy 48.26 137.16) (xy 57.15 137.16)
(xy 59.69 137.16) (xy 68.58 137.16)
)
(stroke
(width 0)
@ -3041,7 +3035,7 @@
)
(bus
(pts
(xy 48.26 152.4) (xy 48.26 172.72)
(xy 59.69 152.4) (xy 59.69 172.72)
)
(stroke
(width 0)
@ -3061,7 +3055,7 @@
)
(bus
(pts
(xy 45.72 134.62) (xy 45.72 137.16)
(xy 57.15 134.62) (xy 57.15 137.16)
)
(stroke
(width 0)
@ -3081,7 +3075,7 @@
)
(wire
(pts
(xy 97.79 139.7) (xy 105.41 139.7)
(xy 109.22 139.7) (xy 116.84 139.7)
)
(stroke
(width 0)
@ -3101,7 +3095,7 @@
)
(bus
(pts
(xy 48.26 144.78) (xy 48.26 147.32)
(xy 59.69 144.78) (xy 59.69 147.32)
)
(stroke
(width 0)
@ -3151,7 +3145,7 @@
)
(wire
(pts
(xy 77.47 162.56) (xy 77.47 165.1)
(xy 88.9 162.56) (xy 88.9 165.1)
)
(stroke
(width 0)
@ -3171,7 +3165,7 @@
)
(wire
(pts
(xy 74.93 160.02) (xy 74.93 162.56)
(xy 86.36 160.02) (xy 86.36 162.56)
)
(stroke
(width 0)
@ -3291,7 +3285,7 @@
)
(bus
(pts
(xy 107.95 142.24) (xy 107.95 144.78)
(xy 119.38 142.24) (xy 119.38 144.78)
)
(stroke
(width 0)
@ -3371,7 +3365,7 @@
)
(bus
(pts
(xy 107.95 134.62) (xy 107.95 137.16)
(xy 119.38 134.62) (xy 119.38 137.16)
)
(stroke
(width 0)
@ -3391,7 +3385,7 @@
)
(bus
(pts
(xy 107.95 152.4) (xy 107.95 172.72)
(xy 119.38 152.4) (xy 119.38 172.72)
)
(stroke
(width 0)
@ -3421,7 +3415,7 @@
)
(wire
(pts
(xy 97.79 127) (xy 100.33 127)
(xy 109.22 127) (xy 111.76 127)
)
(stroke
(width 0)
@ -3431,7 +3425,7 @@
)
(bus
(pts
(xy 45.72 139.7) (xy 45.72 142.24)
(xy 57.15 139.7) (xy 57.15 142.24)
)
(stroke
(width 0)
@ -3521,7 +3515,7 @@
)
(wire
(pts
(xy 115.57 127) (xy 115.57 129.54)
(xy 127 127) (xy 127 129.54)
)
(stroke
(width 0)
@ -3551,7 +3545,7 @@
)
(wire
(pts
(xy 48.26 132.08) (xy 57.15 132.08)
(xy 59.69 132.08) (xy 68.58 132.08)
)
(stroke
(width 0)
@ -3641,7 +3635,7 @@
)
(wire
(pts
(xy 80.01 162.56) (xy 80.01 160.02)
(xy 91.44 162.56) (xy 91.44 160.02)
)
(stroke
(width 0)
@ -3651,7 +3645,7 @@
)
(wire
(pts
(xy 77.47 162.56) (xy 80.01 162.56)
(xy 88.9 162.56) (xy 91.44 162.56)
)
(stroke
(width 0)
@ -3671,7 +3665,7 @@
)
(bus
(pts
(xy 107.95 172.72) (xy 48.26 172.72)
(xy 119.38 172.72) (xy 59.69 172.72)
)
(stroke
(width 0)
@ -3681,7 +3675,7 @@
)
(wire
(pts
(xy 50.8 147.32) (xy 57.15 147.32)
(xy 62.23 147.32) (xy 68.58 147.32)
)
(stroke
(width 0)
@ -3701,7 +3695,7 @@
)
(bus
(pts
(xy 107.95 137.16) (xy 107.95 139.7)
(xy 119.38 137.16) (xy 119.38 139.7)
)
(stroke
(width 0)
@ -3751,7 +3745,7 @@
)
(bus
(pts
(xy 107.95 139.7) (xy 107.95 142.24)
(xy 119.38 139.7) (xy 119.38 142.24)
)
(stroke
(width 0)
@ -3771,7 +3765,7 @@
)
(bus
(pts
(xy 45.72 137.16) (xy 45.72 139.7)
(xy 57.15 137.16) (xy 57.15 139.7)
)
(stroke
(width 0)
@ -3821,7 +3815,7 @@
)
(wire
(pts
(xy 48.26 139.7) (xy 57.15 139.7)
(xy 59.69 139.7) (xy 68.58 139.7)
)
(stroke
(width 0)
@ -3831,7 +3825,7 @@
)
(bus
(pts
(xy 107.95 149.86) (xy 107.95 152.4)
(xy 119.38 149.86) (xy 119.38 152.4)
)
(stroke
(width 0)
@ -3841,7 +3835,7 @@
)
(wire
(pts
(xy 97.79 134.62) (xy 105.41 134.62)
(xy 109.22 134.62) (xy 116.84 134.62)
)
(stroke
(width 0)
@ -3931,7 +3925,7 @@
)
(wire
(pts
(xy 97.79 147.32) (xy 105.41 147.32)
(xy 109.22 147.32) (xy 116.84 147.32)
)
(stroke
(width 0)
@ -4000,7 +3994,7 @@
(uuid "ff49b99d-8f5c-40f7-a132-60bd57ad04a0")
)
(label "col4"
(at 105.41 149.86 180)
(at 116.84 149.86 180)
(effects
(font
(size 1.27 1.27)
@ -4020,7 +4014,7 @@
(uuid "1fd62e40-49dd-4cad-94ae-f3255fcb1ff2")
)
(label "col1"
(at 50.8 149.86 0)
(at 62.23 149.86 0)
(effects
(font
(size 1.27 1.27)
@ -4030,7 +4024,7 @@
(uuid "2c16c44b-0543-4642-9f11-a84a6f9b3c7f")
)
(label "col0"
(at 50.8 142.24 0)
(at 62.23 142.24 0)
(effects
(font
(size 1.27 1.27)
@ -4040,7 +4034,7 @@
(uuid "2ff22b71-4083-482a-be64-af63cbd304bf")
)
(label "col10"
(at 105.41 134.62 180)
(at 116.84 134.62 180)
(effects
(font
(size 1.27 1.27)
@ -4050,7 +4044,7 @@
(uuid "3532774b-2562-4752-aaaf-52ce01751306")
)
(label "col8"
(at 105.41 139.7 180)
(at 116.84 139.7 180)
(effects
(font
(size 1.27 1.27)
@ -4070,7 +4064,7 @@
(uuid "3f1a6a62-5f88-40f0-8a0e-8f91baf2024e")
)
(label "col6"
(at 105.41 144.78 180)
(at 116.84 144.78 180)
(effects
(font
(size 1.27 1.27)
@ -4080,7 +4074,7 @@
(uuid "434411dd-76ad-4916-89fd-c40b11904d2d")
)
(label "col2"
(at 50.8 147.32 0)
(at 62.23 147.32 0)
(effects
(font
(size 1.27 1.27)
@ -4100,7 +4094,7 @@
(uuid "4b187a6c-5b4b-4960-b4fa-95477024eb0e")
)
(label "row3"
(at 50.8 137.16 0)
(at 62.23 137.16 0)
(effects
(font
(size 1.27 1.27)
@ -4120,7 +4114,7 @@
(uuid "55ecd10b-8dca-4ab1-be98-dc12ad96e72a")
)
(label "{row[3..0]}"
(at 43.18 142.24 180)
(at 54.61 142.24 180)
(effects
(font
(size 1.27 1.27)
@ -4160,7 +4154,7 @@
(uuid "674e138e-c248-4c2d-8eac-73afa1130e04")
)
(label "col11"
(at 105.41 132.08 180)
(at 116.84 132.08 180)
(effects
(font
(size 1.27 1.27)
@ -4200,7 +4194,7 @@
(uuid "777d63db-42cb-4fb8-86b5-0c66914383d3")
)
(label "col9"
(at 105.41 137.16 180)
(at 116.84 137.16 180)
(effects
(font
(size 1.27 1.27)
@ -4210,7 +4204,7 @@
(uuid "7c2073ca-79ca-47cb-a051-01b4dd901212")
)
(label "col3"
(at 50.8 144.78 0)
(at 62.23 144.78 0)
(effects
(font
(size 1.27 1.27)
@ -4220,7 +4214,7 @@
(uuid "82874ff8-f3a7-4ea4-8797-eb5cb9478e5e")
)
(label "col5"
(at 105.41 147.32 180)
(at 116.84 147.32 180)
(effects
(font
(size 1.27 1.27)
@ -4230,7 +4224,7 @@
(uuid "828c0b8f-8c7a-4948-9d09-e9a91362282b")
)
(label "{col[11..0]}"
(at 110.49 172.72 0)
(at 121.92 172.72 0)
(effects
(font
(size 1.27 1.27)
@ -4260,7 +4254,7 @@
(uuid "9c62d78e-61c3-4bbc-a8d9-f1bb4757844f")
)
(label "row0"
(at 50.8 132.08 0)
(at 62.23 132.08 0)
(effects
(font
(size 1.27 1.27)
@ -4280,7 +4274,7 @@
(uuid "b8200f4b-3072-458e-bd4a-c09b2f6a4727")
)
(label "row2"
(at 50.8 139.7 0)
(at 62.23 139.7 0)
(effects
(font
(size 1.27 1.27)
@ -4310,7 +4304,7 @@
(uuid "c2fbc288-6400-4196-9491-ec556a65a6b1")
)
(label "col7"
(at 105.41 142.24 180)
(at 116.84 142.24 180)
(effects
(font
(size 1.27 1.27)
@ -4320,7 +4314,7 @@
(uuid "c74adf17-9ffa-4ae4-9c4a-e1fa4773a2a7")
)
(label "row1"
(at 50.8 134.62 0)
(at 62.23 134.62 0)
(effects
(font
(size 1.27 1.27)
@ -4361,7 +4355,7 @@
)
(global_label "VBAT"
(shape input)
(at 77.47 115.57 90)
(at 88.9 115.57 90)
(fields_autoplaced yes)
(effects
(font
@ -4371,7 +4365,7 @@
)
(uuid "00f42f17-ff40-4dbc-bc05-9c7726202ac1")
(property "Intersheetrefs" "${INTERSHEET_REFS}"
(at 77.47 108.17 90)
(at 88.9 108.17 90)
(effects
(font
(size 1.27 1.27)
@ -4405,7 +4399,7 @@
)
(global_label "COLS"
(shape input)
(at 124.46 172.72 0)
(at 135.89 172.72 0)
(fields_autoplaced yes)
(effects
(font
@ -4415,7 +4409,7 @@
)
(uuid "49b6c3a0-0c86-43d2-a8ef-4563bd33ea09")
(property "Intersheetrefs" "${INTERSHEET_REFS}"
(at 132.2833 172.72 0)
(at 143.7133 172.72 0)
(effects
(font
(size 1.27 1.27)
@ -4427,7 +4421,7 @@
)
(global_label "ROWS"
(shape input)
(at 30.48 142.24 180)
(at 41.91 142.24 180)
(fields_autoplaced yes)
(effects
(font
@ -4437,7 +4431,7 @@
)
(uuid "6dec2d9c-2bbf-4f7e-8150-b77e50813294")
(property "Intersheetrefs" "${INTERSHEET_REFS}"
(at 22.2334 142.24 0)
(at 33.6634 142.24 0)
(effects
(font
(size 1.27 1.27)
@ -5711,7 +5705,7 @@
)
(symbol
(lib_id "Switch:SW_SPST")
(at 105.41 127 0)
(at 116.84 127 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
@ -5720,7 +5714,7 @@
(fields_autoplaced yes)
(uuid "3cb06689-8777-4b23-af23-29c61c89b6c1")
(property "Reference" "SW50"
(at 105.41 123.19 0)
(at 116.84 123.19 0)
(effects
(font
(size 1.27 1.27)
@ -5728,7 +5722,7 @@
)
)
(property "Value" "SW_SPST"
(at 106.6799 124.46 90)
(at 118.1099 124.46 90)
(effects
(font
(size 1.27 1.27)
@ -5738,7 +5732,7 @@
)
)
(property "Footprint" "Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A"
(at 105.41 127 0)
(at 116.84 127 0)
(effects
(font
(size 1.27 1.27)
@ -5747,7 +5741,7 @@
)
)
(property "Datasheet" "~"
(at 105.41 127 0)
(at 116.84 127 0)
(effects
(font
(size 1.27 1.27)
@ -5756,7 +5750,7 @@
)
)
(property "Description" "Single Pole Single Throw (SPST) switch"
(at 105.41 127 0)
(at 116.84 127 0)
(effects
(font
(size 1.27 1.27)
@ -5765,7 +5759,7 @@
)
)
(property "JLCPCB Part Number" "C318884"
(at 105.41 127 0)
(at 116.84 127 0)
(effects
(font
(size 1.27 1.27)
@ -6296,7 +6290,7 @@
)
(symbol
(lib_id "power:GND")
(at 77.47 165.1 0)
(at 88.9 165.1 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
@ -6305,7 +6299,7 @@
(fields_autoplaced yes)
(uuid "4ab72dc6-f62c-4da9-b66e-13502d83383e")
(property "Reference" "#PWR02"
(at 77.47 171.45 0)
(at 88.9 171.45 0)
(effects
(font
(size 1.27 1.27)
@ -6314,7 +6308,7 @@
)
)
(property "Value" "GND"
(at 77.47 170.18 0)
(at 88.9 170.18 0)
(effects
(font
(size 1.27 1.27)
@ -6322,7 +6316,7 @@
)
)
(property "Footprint" ""
(at 77.47 165.1 0)
(at 88.9 165.1 0)
(effects
(font
(size 1.27 1.27)
@ -6331,7 +6325,7 @@
)
)
(property "Datasheet" ""
(at 77.47 165.1 0)
(at 88.9 165.1 0)
(effects
(font
(size 1.27 1.27)
@ -6340,7 +6334,7 @@
)
)
(property "Description" "Power symbol creates a global label with name \"GND\" , ground"
(at 77.47 165.1 0)
(at 88.9 165.1 0)
(effects
(font
(size 1.27 1.27)
@ -9975,7 +9969,7 @@
)
(symbol
(lib_id "power:GND")
(at 115.57 129.54 0)
(at 127 129.54 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
@ -9984,7 +9978,7 @@
(fields_autoplaced yes)
(uuid "ab9d274a-ffe0-4346-b5a8-29511366531b")
(property "Reference" "#PWR03"
(at 115.57 135.89 0)
(at 127 135.89 0)
(effects
(font
(size 1.27 1.27)
@ -9993,7 +9987,7 @@
)
)
(property "Value" "GND"
(at 115.57 134.62 0)
(at 127 134.62 0)
(effects
(font
(size 1.27 1.27)
@ -10001,7 +9995,7 @@
)
)
(property "Footprint" ""
(at 115.57 129.54 0)
(at 127 129.54 0)
(effects
(font
(size 1.27 1.27)
@ -10010,7 +10004,7 @@
)
)
(property "Datasheet" ""
(at 115.57 129.54 0)
(at 127 129.54 0)
(effects
(font
(size 1.27 1.27)
@ -10019,7 +10013,7 @@
)
)
(property "Description" "Power symbol creates a global label with name \"GND\" , ground"
(at 115.57 129.54 0)
(at 127 129.54 0)
(effects
(font
(size 1.27 1.27)
@ -10215,7 +10209,7 @@
)
(symbol
(lib_id "stuff:ProMicro")
(at 77.47 138.43 0)
(at 88.9 138.43 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
@ -10224,7 +10218,7 @@
(fields_autoplaced yes)
(uuid "b08847ce-cdb3-4e9b-8940-c3aa74818efd")
(property "Reference" "U1"
(at 79.6133 114.3 0)
(at 91.0433 114.3 0)
(effects
(font
(size 1.27 1.27)
@ -10233,7 +10227,7 @@
)
)
(property "Value" "ProMicro Compatible"
(at 79.6133 116.84 0)
(at 91.0433 116.84 0)
(effects
(font
(size 1.27 1.27)
@ -10242,7 +10236,7 @@
)
)
(property "Footprint" "stuff:nice_nano_reverse_mount"
(at 77.47 128.27 0)
(at 88.9 128.27 0)
(effects
(font
(size 1.27 1.27)
@ -10251,7 +10245,7 @@
)
)
(property "Datasheet" ""
(at 77.47 128.27 0)
(at 88.9 128.27 0)
(effects
(font
(size 1.27 1.27)
@ -10260,7 +10254,7 @@
)
)
(property "Description" "ProMicro-compatible socketed MCU"
(at 77.47 128.27 0)
(at 88.9 128.27 0)
(effects
(font
(size 1.27 1.27)
@ -10269,7 +10263,7 @@
)
)
(property "JLCPCB Part Number" ""
(at 77.47 138.43 0)
(at 88.9 138.43 0)
(effects
(font
(size 1.27 1.27)
@ -13552,58 +13546,6 @@
)
)
)
(sheet
(at 22.86 124.46)
(size 25.4 5.08)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 0 0 0 0.0000)
)
(uuid "98ee239b-163f-48b3-a8ff-c02836b195b0")
(property "Sheetname" "LEDs"
(at 22.86 123.7484 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Sheetfile" "leds.kicad_sch"
(at 22.86 130.1246 0)
(effects
(font
(size 1.27 1.27)
)
(justify left top)
)
)
(pin "LED_D" input
(at 48.26 127 0)
(uuid "b5b1b091-32aa-4774-b7b2-b939ce87ed0d")
(effects
(font
(size 1.27 1.27)
)
(justify right)
)
)
(instances
(project "48ish_soldered"
(path "/e3c88f17-e431-4ad8-b491-c68f92a3599e"
(page "2")
)
)
)
)
(sheet_instances
(path "/"
(page "1")

35707
48ish_soldered_cfx.kicad_pcb Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,131 @@
{
"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

@ -0,0 +1,658 @@
{
"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,17 +1,22 @@
all: plot-zip positions
gerbers:
kicad-cli pcb export gerbers 48ish_soldered.kicad_pcb --board-plot-params -o 48ish_soldered_out
kicad-cli pcb export gerbers 48ish_soldered.kicad_pcb --board-plot-params -o 48ish_soldered_out/mbk
kicad-cli pcb export gerbers 48ish_soldered_cfx.kicad_pcb --board-plot-params -o 48ish_soldered_out/cfx
drills:
kicad-cli pcb export drill 48ish_soldered.kicad_pcb --excellon-separate-th -o 48ish_soldered_out
kicad-cli pcb export drill 48ish_soldered.kicad_pcb --excellon-separate-th -o 48ish_soldered_out/mbk
kicad-cli pcb export drill 48ish_soldered_cfx.kicad_pcb --excellon-separate-th -o 48ish_soldered_out/cfx
positions:
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.kicad_pcb --format csv --units mm --side back --smd-only -o 48ish_soldered_mbk-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
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_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_cfx-bottom-pos.csv
plot: gerbers drills
plot-zip: gerbers drills
zip -FSr 48ish_soldered_out.zip 48ish_soldered_out
zip -FSr 48ish_soldered_mbk_out.zip 48ish_soldered_out/mbk
zip -FSr 48ish_soldered_cfx_out.zip 48ish_soldered_out/cfx

View file

@ -1,10 +1,12 @@
# 48ish
A wireless, low-profile 47/48-key keyboard PCB.
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 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
works with JLCPCB, haven't tried any other production houses, ymmv
production files are uploaded [with each release](https://git.ewin.moe/erin/48ish). 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)
@ -14,9 +16,17 @@ 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)
- 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???
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
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
## acknowledgements

76
case/48ish_case.scad Normal file
View file

@ -0,0 +1,76 @@
$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();

BIN
images/47.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,226 @@
(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)
)

View file

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