pixalynx/keyboard
This code defines the physical layout and key components of a USB-C dongle featuring an nRF52840 microcontroller with antenna, USB-A connector, status LED, pair button, firmware debug test points, and associated passive components and interface connectors.
- Version
- 1.0.0
- License
- unset
- Stars
- 0
dist/index.js
import { jsx, jsxs } from 'react/jsx-runtime';
import { Fragment } from 'react';
import { KeyHotSocket } from '@tsci/seveibar.KeyHotSocket';
import { KeyShaftForHotSocket } from '@tsci/seveibar.KeyShaftForHotSocket';
const pinLabels$c = {
pin1: ["P1_11"],
pin2: ["P1_10"],
pin3: ["P0_03"],
pin4: ["P0_28"],
pin5: ["GND1"],
pin6: ["P1_13"],
pin7: ["P0_02"],
pin8: ["P0_29"],
pin9: ["P0_31"],
pin10: ["P0_30"],
pin11: ["P0_00"],
pin12: ["P0_26"],
pin13: ["P0_01"],
pin14: ["P0_06"],
pin15: ["P0_05"],
pin16: ["P0_08"],
pin17: ["P1_09"],
pin18: ["P0_04"],
pin19: ["VDD"],
pin20: ["P0_12"],
pin21: ["GND2"],
pin22: ["P0_07"],
pin23: ["VDDH"],
pin24: ["GND3"],
pin25: ["DCCH"],
pin26: ["RESET"],
pin27: ["VBUS"],
pin28: ["P0_15"],
pin29: ["D_NEG"],
pin30: ["P0_17"],
pin31: ["D_POS"],
pin32: ["P0_20"],
pin33: ["P0_13"],
pin34: ["P0_22"],
pin35: ["P0_24"],
pin36: ["P1_00"],
pin37: ["SWDIO"],
pin38: ["P1_02"],
pin39: ["SWDCLK"],
pin40: ["P1_04"],
pin41: ["P0_09"],
pin42: ["P1_06"],
pin43: ["P0_10"]
};
const pinAttributes$5 = {
pin5: { requiresGround: true },
pin21: { requiresGround: true },
pin23: { requiresPower: true },
pin24: { requiresGround: true }
};
// Pin names per the Ebyte E73-2G4M08S1C user manual (v1.x pin definition
// table). VDD is the REG0 output when the module is powered through VDDH.
const E73_2G4M08S1C = (props) => {
return (jsx("chip", { pinLabels: pinLabels$c, pinAttributes: pinAttributes$5, supplierPartNumbers: {
"jlcpcb": [
"C356849"
]
}, manufacturerPartNumber: "E73-2G4M08S1C", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin43"], pcbX: "-6.50494mm", pcbY: "-6.204458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin42"], pcbX: "-4.404868mm", pcbY: "-5.569458mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin41"], pcbX: "-6.50494mm", pcbY: "-4.934458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin40"], pcbX: "-4.405122mm", pcbY: "-4.299458mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin39"], pcbX: "-6.50494mm", pcbY: "-3.664458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin38"], pcbX: "-4.405122mm", pcbY: "-3.029458mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin37"], pcbX: "-6.50494mm", pcbY: "-2.394458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin36"], pcbX: "-4.405122mm", pcbY: "-1.759458mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin35"], pcbX: "-6.50494mm", pcbY: "-1.124458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin34"], pcbX: "-4.405122mm", pcbY: "-0.489458mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin33"], pcbX: "-6.50494mm", pcbY: "0.145542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin32"], pcbX: "-4.405122mm", pcbY: "0.780542mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin31"], pcbX: "-6.50494mm", pcbY: "1.415542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin30"], pcbX: "-4.405122mm", pcbY: "2.050542mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin29"], pcbX: "-6.50494mm", pcbY: "2.685542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin28"], pcbX: "-4.405122mm", pcbY: "3.320542mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin27"], pcbX: "-6.50494mm", pcbY: "3.955542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin26"], pcbX: "-6.50494mm", pcbY: "5.225542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin25"], pcbX: "-4.445mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin24"], pcbX: "-3.81mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin23"], pcbX: "-3.175mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin22"], pcbX: "-2.54mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin21"], pcbX: "-1.905mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin20"], pcbX: "-1.27mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin19"], pcbX: "-0.635mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin18"], pcbX: "0mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin17"], pcbX: "0.635mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin16"], pcbX: "1.27mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin15"], pcbX: "1.905mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin14"], pcbX: "2.54mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin13"], pcbX: "3.175mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin12"], pcbX: "3.81mm", pcbY: "5.725414mm", width: "0.8999982mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin11"], pcbX: "4.445mm", pcbY: "7.825486mm", width: "0.8999982mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin10"], pcbX: "6.50494mm", pcbY: "5.225542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin9"], pcbX: "6.50494mm", pcbY: "3.955542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin8"], pcbX: "6.50494mm", pcbY: "2.685542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin7"], pcbX: "6.50494mm", pcbY: "1.415542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin6"], pcbX: "6.50494mm", pcbY: "0.145542mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin5"], pcbX: "6.50494mm", pcbY: "-1.124458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "6.50494mm", pcbY: "-2.394458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "6.500114mm", pcbY: "-3.68935mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "6.50494mm", pcbY: "-4.934458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin1"], pcbX: "6.50494mm", pcbY: "-6.204458mm", width: "1.999996mm", height: "0.8999982mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 5.07606300000009, "y": 7.811515999999983 }, { "x": 6.499631399999885, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": -5.0803809999999885, "y": -7.428484000000026 }, { "x": 5.07961899999998, "y": -7.428484000000026 }, { "x": 5.07961899999998, "y": -9.587483999999904 }, { "x": -5.0803809999999885, "y": -9.587483999999904 }, { "x": -5.0803809999999885, "y": -7.428484000000026 }] }), jsx("silkscreenpath", { route: [{ "x": 3.806062999999881, "y": 7.811515999999983 }, { "x": 3.813682999999969, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": 2.536063000000013, "y": 7.811515999999983 }, { "x": 2.543683000000101, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": 1.266063000000031, "y": 7.811515999999983 }, { "x": 1.2736830000000054, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": -0.003937000000064472, "y": 7.811515999999983 }, { "x": 0.0036830000000236396, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": -1.2739370000000463, "y": 7.811515999999983 }, { "x": -1.2663169999999582, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": -2.543937000000028, "y": 7.811515999999983 }, { "x": -2.5363170000000537, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": -3.81393700000001, "y": 7.811515999999983 }, { "x": -3.806316999999922, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": 7.811515999999983 }, { "x": -5.076316999999904, "y": 7.811515999999983 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -6.835647999999992 }, { "x": 6.499631399999885, "y": -10.18847340000002 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -5.565648000000124 }, { "x": 6.499631399999885, "y": -5.573267999999871 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -4.295648000000028 }, { "x": 6.499631399999885, "y": -4.303267999999889 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -3.0256480000000465 }, { "x": 6.499631399999885, "y": -3.033268000000021 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -1.7556480000000647 }, { "x": 6.499631399999885, "y": -1.7632679999999255 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -0.4856479999999692 }, { "x": 6.499631399999885, "y": -0.49326799999994364 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": 0.7843519999998989 }, { "x": 6.499631399999885, "y": 0.7767320000000382 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": 2.0543519999998807 }, { "x": 6.499631399999885, "y": 2.0467320000001337 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": 3.324326600000063 }, { "x": 6.499631399999885, "y": 3.316732000000002 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": 4.594351999999958 }, { "x": 6.499631399999885, "y": 4.5867066000000705 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": 7.811515999999983 }, { "x": 6.499631399999885, "y": 5.856732000000079 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": -6.835647999999992 }, { "x": -6.500393400000007, "y": -10.18847340000002 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": -5.565673399999923 }, { "x": -6.500393400000007, "y": -5.573267999999871 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": -4.295648000000028 }, { "x": -6.500393400000007, "y": -4.30329340000003 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": -3.0256480000000465 }, { "x": -6.500393400000007, "y": -3.033268000000021 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": -1.7556480000000647 }, { "x": -6.500393400000007, "y": -1.7632679999999255 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": -0.4856479999999692 }, { "x": -6.500393400000007, "y": -0.49326799999994364 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": 0.7843519999998989 }, { "x": -6.500393400000007, "y": 0.7767320000000382 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": 2.0543519999998807 }, { "x": -6.500393400000007, "y": 2.0467320000001337 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": 3.324351999999976 }, { "x": -6.500393400000007, "y": 3.316732000000002 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": 4.594351999999958 }, { "x": -6.500393400000007, "y": 4.586731999999984 }] }), jsx("silkscreenpath", { route: [{ "x": -6.500393400000007, "y": 7.811515999999983 }, { "x": -6.500393400000007, "y": 5.856732000000079 }] }), jsx("silkscreenpath", { route: [{ "x": 6.499631399999885, "y": -10.18847340000002 }, { "x": -6.50036799999998, "y": -10.18847340000002 }] }), jsx("silkscreencircle", { pcbX: "6.985mm", pcbY: "-7.063486mm", radius: "0.127mm" }), jsx("silkscreenrect", { pcbX: "-3.238881mm", pcbY: "-8.571484mm", width: "1.397mm", height: "0.508mm", strokeWidth: "0.254mm" }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0.012319mm", pcbY: "9.827516mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -7.743381000000113, "y": 9.07751600000006 }, { "x": 7.768018999999981, "y": 9.07751600000006 }, { "x": 7.768018999999981, "y": -10.447084000000018 }, { "x": -7.743381000000113, "y": -10.447084000000018 }, { "x": -7.743381000000113, "y": 9.07751600000006 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C356849.obj?uuid=b3edabdd105b4c4bb978bf18f45b7e60",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C356849.step?uuid=b3edabdd105b4c4bb978bf18f45b7e60",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 1.1784837999999809, z: 0 },
}, ...props }));
};
const pinLabels$b = {
pin1: ["DO"],
pin2: ["GND"],
pin3: ["DI"],
pin4: ["VDD"]
};
const pinAttributes$4 = {
pin2: { requiresGround: true },
pin4: { requiresPower: true }
};
const WS2812C_2020_V1 = (props) => {
return (jsx("chip", { pinLabels: pinLabels$b, pinAttributes: pinAttributes$4, supplierPartNumbers: {
"jlcpcb": [
"C2976072"
]
}, manufacturerPartNumber: "WS2812C-2020-V1", footprint: "dfn4_p1.1001mm_w2.7301mm_pw0.7mm_pl0.9mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2976072.obj?uuid=caa88715b11f4aa189b02e52bbb84e4f",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2976072.step?uuid=caa88715b11f4aa189b02e52bbb84e4f",
pcbRotationOffset: 0,
modelOriginPosition: { "x": 0, "y": 0, "z": -0.10003630000001063 },
}, ...props }));
};
const pinLabels$a = {
pin1: ["cathode", "neg"],
pin2: ["anode", "pos"]
};
const A_1N4148WS = (props) => {
const { name = "D1", ...restProps } = props;
return (jsx("diode", { name: name, pinLabels: pinLabels$a, supplierPartNumbers: {
"jlcpcb": [
"C57759"
]
}, manufacturerPartNumber: "1N4148WS", footprint: "smdpads2_p2.3452mm_pw1mm_ph0.75mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C57759.obj?uuid=973acf8a660c48b1975f1ba1c890421a",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C57759.step?uuid=973acf8a660c48b1975f1ba1c890421a",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0.000012699999956566899, y: 0.000012699999842880061, z: -0.01 },
}, ...restProps }));
};
const pinLabels$9 = {
pin1: ["N_OE"],
pin2: ["A"],
pin3: ["GND"],
pin4: ["Y"],
pin5: ["VCC"]
};
const pinAttributes$3 = {
pin3: { requiresGround: true },
pin5: { requiresPower: true }
};
const SN74AHCT1G125DBVR = (props) => {
return (jsx("chip", { pinLabels: pinLabels$9, pinAttributes: pinAttributes$3, supplierPartNumbers: {
"jlcpcb": [
"C7484"
]
}, manufacturerPartNumber: "SN74AHCT1G125DBVR", footprint: "sot25_w2.6mm_pl1.1mm_pin1location(rightside,bottom)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C7484.obj?uuid=460193f9bf2d42e58cf3c2f675b07dc6",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C7484.step?uuid=460193f9bf2d42e58cf3c2f675b07dc6",
pcbRotationOffset: 180,
modelOriginPosition: { x: 0, y: -12700000070253736e-21, z: -0.049083 },
}, ...props }));
};
// USB-C 16-pin top-mount receptacle, JLCPCB basic part C2765186
// ("TYPE-C 16PIN 2MD(073)"). Geometry is a verbatim copy of the footprint
// the parts engine fetches for this part number (12 SMD contacts at
// 0.5mm pitch, four plated shell slots, two 0.7mm alignment-peg holes),
// with the pegs expressed only as NPTH holes. The fetched version also
// carries the pegs as pcb_cutouts, which the placement checker flags as
// the connector overlapping its own cutouts and that in turn suppresses
// autorouting -- so the footprint is spelled out here instead. Pin numbers
// follow tscircuit's canonical USB-C order so `standard="usb_c"` still
// drives the schematic symbol.
const pinLabels$8 = {
pin1: ["GND1"],
pin2: ["VBUS1"],
pin3: ["CC1"],
pin4: ["DP1"],
pin5: ["DM1", "DN1"],
pin6: ["SBU1"],
pin7: ["SBU2"],
pin8: ["DM2", "DN2"],
pin9: ["DP2"],
pin10: ["CC2"],
pin11: ["VBUS2"],
pin12: ["GND2"],
pin13: ["SHELL1"],
pin14: ["SHELL2"],
pin15: ["SHELL3"],
pin16: ["SHELL4"],
};
const wide = { width: "0.55mm", height: "1.1mm", shape: "rect" };
const narrow = { width: "0.3mm", height: "1.1mm", shape: "rect" };
const TYPE_C_16PIN_2MD_073 = (props) => {
return (jsx("connector", { standard: "usb_c", pinLabels: pinLabels$8, manufacturerPartNumber: "TYPE-C 16PIN 2MD(073)", supplierPartNumbers: { jlcpcb: ["C2765186"] }, footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1"], pcbX: "-3.2mm", pcbY: "2.125mm", ...wide }), jsx("smtpad", { portHints: ["pin2"], pcbX: "-2.4mm", pcbY: "2.125mm", ...wide }), jsx("smtpad", { portHints: ["pin7"], pcbX: "-1.75mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin3"], pcbX: "-1.25mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin8"], pcbX: "-0.75mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin4"], pcbX: "-0.25mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin5"], pcbX: "0.25mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin9"], pcbX: "0.75mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin6"], pcbX: "1.25mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin10"], pcbX: "1.75mm", pcbY: "2.125mm", ...narrow }), jsx("smtpad", { portHints: ["pin11"], pcbX: "2.4mm", pcbY: "2.125mm", ...wide }), jsx("smtpad", { portHints: ["pin12"], pcbX: "3.2mm", pcbY: "2.125mm", ...wide }), jsx("platedhole", { portHints: ["pin13"], shape: "pill", pcbX: "-4.325mm", pcbY: "1.575mm", outerWidth: "1.1mm", outerHeight: "1.9mm", holeWidth: "0.6mm", holeHeight: "1.4mm" }), jsx("platedhole", { portHints: ["pin14"], shape: "pill", pcbX: "4.325mm", pcbY: "1.575mm", outerWidth: "1.1mm", outerHeight: "1.9mm", holeWidth: "0.6mm", holeHeight: "1.4mm" }), jsx("platedhole", { portHints: ["pin15"], shape: "pill", pcbX: "-4.325mm", pcbY: "-2.625mm", outerWidth: "1.2mm", outerHeight: "1.6mm", holeWidth: "0.6mm", holeHeight: "1.0mm" }), jsx("platedhole", { portHints: ["pin16"], shape: "pill", pcbX: "4.325mm", pcbY: "-2.625mm", outerWidth: "1.2mm", outerHeight: "1.6mm", holeWidth: "0.6mm", holeHeight: "1.0mm" }), jsx("hole", { pcbX: "-2.89mm", pcbY: "1.055mm", diameter: "0.7mm" }), jsx("hole", { pcbX: "2.89mm", pcbY: "1.055mm", diameter: "0.7mm" }), jsx("silkscreenpath", { route: [{ x: 4.572, y: -1.647 }, { x: 4.572, y: 0.347 }] }), jsx("silkscreenpath", { route: [{ x: 4.572, y: -5.076 }, { x: 4.572, y: -3.603 }] }), jsx("silkscreenpath", { route: [{ x: -4.5, y: -1.644 }, { x: -4.5, y: 0.344 }] }), jsx("silkscreenpath", { route: [{ x: -4.5, y: -5.225 }, { x: -4.5, y: -3.606 }] }), jsx("silkscreenpath", { route: [{ x: 4.5, y: -5.225 }, { x: -4.5, y: -5.225 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0mm", pcbY: "3.6mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ x: -4.753, y: 2.934 }, { x: 4.815, y: 2.934 }, { x: 4.815, y: -5.491 }, { x: -4.753, y: -5.491 }, { x: -4.753, y: 2.934 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2765186.obj?uuid=4ee8413127e64716b804db03d4b340ae",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2765186.step?uuid=4ee8413127e64716b804db03d4b340ae",
pcbRotationOffset: 0,
modelOriginPosition: { x: -127e-7, y: 1.57499705, z: -1.6800018 },
}, ...props }));
};
const pinLabels$7 = {
pin1: ["TEMP"],
pin2: ["PROG"],
pin3: ["GND"],
pin4: ["VCC"],
pin5: ["BAT"],
pin6: ["N_STDBY"],
pin7: ["N_CHRG"],
pin8: ["CE"],
pin9: ["EP"]
};
const pinAttributes$2 = {
pin3: { requiresGround: true },
pin4: { requiresPower: true }
};
const footprinterPinLabels$1 = {
...pinLabels$7,
"pin9": [...pinLabels$7["pin9"], "thermalpad"],
};
const TP4056_42_ESOP8 = (props) => {
return (jsx("chip", { pinLabels: footprinterPinLabels$1, pinAttributes: pinAttributes$2, supplierPartNumbers: {
"jlcpcb": [
"C16581"
]
}, manufacturerPartNumber: "TP4056-42-ESOP8", footprint: "dfn8_thermalpad2.4mmx3.3mm_w7.02mm_pl1.2mm_pin1location(leftside,bottom)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C16581.obj?uuid=9e2b03dd4dce46a190ce3fa245369fb2",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C16581.step?uuid=9e2b03dd4dce46a190ce3fa245369fb2",
pcbRotationOffset: 90,
modelOriginPosition: { x: 0.000012700000013410317, y: -12699999984988608e-21, z: -0.099425 },
}, ...props }));
};
const pinLabels$6 = {
pin1: ["pin1"],
pin2: ["pin2"],
pin3: ["pin3"],
pin4: ["pin4"]
};
const S2B_PH_SM4_TB_LF__SN_ = (props) => {
return (jsx("chip", { pinLabels: pinLabels$6, supplierPartNumbers: {
"jlcpcb": [
"C295747"
]
}, manufacturerPartNumber: "S2B-PH-SM4-TB(LF)(SN)", footprint: "fpc2_p2mm_pw1mm_pl3.8mm_mpx6.7mm_mpy5.85mm_mpw1.5mm_mpl3.4mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C295747.obj?uuid=e009435048914ef2b30a218c3065ed28",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C295747.step?uuid=e009435048914ef2b30a218c3065ed28",
pcbRotationOffset: 0,
modelOriginPosition: { x: -0.9999872999999297, y: 2.8499996000001833, z: 0 },
}, ...props }));
};
const pinLabels$5 = {
pin1: ["cathode", "neg"],
pin2: ["anode", "pos"]
};
const SS14L = (props) => {
const { name = "D1", ...restProps } = props;
return (jsx("diode", { name: name, pinLabels: pinLabels$5, supplierPartNumbers: {
"jlcpcb": [
"C190475"
]
}, manufacturerPartNumber: "SS14L", footprint: "smdpads2_p3.3mm_pw1mm_ph1.2mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C190475.obj?uuid=c6882627c5f64d6e8dd3b5c64b2adb0a",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C190475.step?uuid=c6882627c5f64d6e8dd3b5c64b2adb0a",
pcbRotationOffset: 0,
modelOriginPosition: { x: -12699999956566899e-21, y: -0.007010400000012851, z: -0.21 },
}, ...restProps }));
};
const pinLabels$4 = {
pin1: ["pin1"],
pin2: ["pin2"],
pin3: ["pin3"],
pin4: ["pin4"]
};
const footprinterPinLabels = {
...pinLabels$4,
"pin4": [...pinLabels$4["pin4"], "pin5", "pin6", "pin7"],
};
const MSK12C02 = (props) => {
const { name = "SW1", ...restProps } = props;
return (jsx("switch", { name: name, pinLabels: footprinterPinLabels, supplierPartNumbers: {
"jlcpcb": [
"C431540"
]
}, manufacturerPartNumber: "MSK12C02", footprint: "smdslideswitch7_signalcols4_missing(2)_p1.5mm_pw0.6mm_pl1.524mm_mounty-2.2501mm_mpx7.1999mm_mpy2.3mm_mpw1.2mm_mpl0.7mm_holex1.5mm_holey-2.2502mm_holed0.9mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C431540.obj?uuid=fc12522ae2f04394b021187ce17b23bb",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C431540.step?uuid=fc12522ae2f04394b021187ce17b23bb",
pcbRotationOffset: 180,
modelOriginPosition: { x: 0.000025400000026820635, y: -0.7060877499999378, z: -10000000000287557e-22 },
}, ...restProps }));
};
const pinLabels$3 = {
pin1: ["OUT"],
pin2: ["GND"],
pin3: ["ISET"],
pin4: ["EN"],
pin5: ["IN"]
};
const SY6280AAC = (props) => {
const { name = "SW1", ...restProps } = props;
return (jsx("switch", { name: name, pinLabels: pinLabels$3, supplierPartNumbers: {
"jlcpcb": [
"C55136"
]
}, manufacturerPartNumber: "SY6280AAC", footprint: "dfn6_missing(5)_p0.95mm_w3.47mm_pw0.49mm_pl1.16mm_pin1location(leftside,bottom)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C55136.obj?uuid=460193f9bf2d42e58cf3c2f675b07dc6",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C55136.step?uuid=460193f9bf2d42e58cf3c2f675b07dc6",
pcbRotationOffset: 90,
modelOriginPosition: { x: 0.004489450000050965, y: 0.000012700000070253736, z: -0.049083 },
}, ...restProps }));
};
const pinLabels$2 = {
pin1: ["SW"],
pin2: ["GND"],
pin3: ["FB"],
pin4: ["EN"],
pin5: ["IN"],
pin6: ["NC"]
};
const pinAttributes$1 = {
pin2: { requiresGround: true },
pin6: { doNotConnect: true }
};
const MT3608 = (props) => {
return (jsx("chip", { pinLabels: pinLabels$2, pinAttributes: pinAttributes$1, supplierPartNumbers: {
"jlcpcb": [
"C84817"
]
}, manufacturerPartNumber: "MT3608", footprint: "dfn6_p0.95mm_w3.3702mm_pw0.532mm_pl1.072mm_pin1location(leftside,bottom)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C84817.obj?uuid=229b69761e2c45dba6a83d8866dec72d",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C84817.step?uuid=229b69761e2c45dba6a83d8866dec72d",
pcbRotationOffset: 90,
modelOriginPosition: { x: -12700000070253736e-21, y: 0.000012700000070253736, z: -0.048939 },
}, ...props }));
};
const SWPA4030S220MT = (props) => {
return (jsx("inductor", { inductance: "22uH", supplierPartNumbers: {
"jlcpcb": [
"C83472"
]
}, manufacturerPartNumber: "SWPA4030S220MT", footprint: "smdpads2_p3.6002mm_pw1.9mm_ph3.7mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C83472.obj?uuid=17e6bc9de5ec4d44a160fa801e621a52",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C83472.step?uuid=17e6bc9de5ec4d44a160fa801e621a52",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 0.00004999999988641868, z: 0 },
}, ...props }));
};
const pinLabels$1 = {
pin1: ["A"],
pin2: ["B"],
pin3: ["C"],
pin4: ["D"]
};
const TS_1187A_B_A_B = (props) => {
const { name = "SW1", ...restProps } = props;
return (jsx("pushbutton", { name: name, pinLabels: pinLabels$1, supplierPartNumbers: {
"jlcpcb": [
"C318884"
]
}, manufacturerPartNumber: "TS-1187A-B-A-B", footprint: "smdpushbutton4_px6mm_py3.7mm_pw1mm_ph0.75mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C318884.obj?uuid=91b67c1735f643ffb2e7226c23dd3492",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C318884.step?uuid=91b67c1735f643ffb2e7226c23dd3492",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0.000012700000070253736, y: 0.0004999999999999449, z: -0.05 },
}, ...restProps }));
};
const pinLabels = {
pin1: ["pin1"],
pin2: ["GND"],
pin3: ["pin3"],
pin4: ["pin4"],
pin5: ["VBUS"],
pin6: ["pin6"]
};
const pinAttributes = {
pin2: { requiresGround: true }
};
const USBLC6_2SC6 = (props) => {
return (jsx("chip", { pinLabels: pinLabels, pinAttributes: pinAttributes, supplierPartNumbers: {
"jlcpcb": [
"C2687116"
]
}, manufacturerPartNumber: "USBLC6-2SC6", footprint: "dfn6_p0.95mm_w3.3702mm_pw0.532mm_pl1.072mm_pin1location(leftside,bottom)", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2687116.obj?uuid=229b69761e2c45dba6a83d8866dec72d",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2687116.step?uuid=229b69761e2c45dba6a83d8866dec72d",
pcbRotationOffset: 90,
modelOriginPosition: { x: -12700000070253736e-21, y: 0.000012700000070253736, z: -0.048939 },
}, ...props }));
};
/*
* FALCHION-65: a 65% wireless RGB keyboard, edge-to-edge.
*
* - 68-key 65% layout (16u x 5u), hot-swap MX sockets
* - per-key RGB: a WS2812C-2020 on the top copper under every switch's LED
* lens, daisy-chained in a serpentine, fed from a switched 5 V boost
* rail through a 74AHCT1G125 level shifter
* - nRF52840 (Ebyte E73-2G4M08S1C). One radio, two link modes: BLE for
* everyday use, Nordic 2.4 GHz to the companion dongle for gaming. No
* extra RF hardware is needed for either -- it is a firmware choice.
* - Li-Po: TP4056 charger, power slide switch, Schottky OR into VSYS,
* which feeds the nRF52840's VDDH so its on-chip REG0 makes the 3.3 V
* rail (no external LDO, as on the nice!nano)
* - Windows / macOS slide switch on a GPIO, read by the firmware to swap
* the modifier layout
*
* BOARD SIZE: 306 x 102 mm against a 304.8 x 95.25 mm key block, i.e. 0.6 mm
* of side margin and no dedicated component strips at all. Everything lives
* in space the key grid already wastes:
*
* top band y 43.0 .. 51.0 -- above the row-0 socket bodies and out to
* the back edge. USB-C, charger, level shifter, both slide
* switches. Top side only.
* inter-row y 24.0 .. 30.8 and y -33.3 .. -25.8 -- full-width bands
* bands between one row's LEDs and the next row's sockets, free on
* both layers. Mounting holes go here.
* under the the space bar is 6.25u wide but its socket is only 16 mm,
* space bar leaving two large bottom-side pockets: region A at
* x -85..-30 and region B at x -14..39, both y -27..-51.
* Region A holds the radio module, reset and SWD; region B
* holds the LED boost and the battery connector.
*
* Everything is placed with absolute board coordinates on purpose: nested
* <group>s were being auto-packed by tscircuit's board layout, which moved
* the key cells away from their intended positions.
*/
const U = 19.05; // key pitch (mm)
const BOARD = { width: 306, height: 102 };
const TOP_Y = BOARD.height / 2; // 51
const KB_X0 = -152.4; // left edge of the key block
const KB_Y0 = 46; // top edge of the key block
const TOP_BAND_Y = 47.8; // centre line for top-band parts
// Offsets inside one key cell, relative to the hot-swap socket origin. The
// seveibar KeyHotSocket footprint puts the MX stem at (0.635, -3.7) from its
// own origin (derived from the socket's two 3 mm locating holes), so every
// socket is shifted by the opposite amount to land the stem on the key's
// true centre.
const STEM = { x: 0.635, y: -3.7 };
const SHAFT_OFF = { x: 0, y: -0.52 }; // 4.2 mm stem hole, as in seveibar.Key
const LABEL_OFF = { x: 0, y: 5 };
// MX RGB switches carry their LED lens 5.08 mm "south" of the stem; the
// 2020 LED sits on the top copper under that lens.
const LED_OFF = { x: STEM.x, y: STEM.y - 5.08 };
// Bottom side, either side of the LED and clear of the socket pads: cap to
// the left, row diode to the right. Both stay inside the cell, so the cell
// pitch alone sets the board size.
const LED_CAP_OFF = { x: STEM.x - 6.2, y: LED_OFF.y };
const DIODE_OFF = { x: STEM.x + 6.0, y: STEM.y - 4.8 };
const k = (name, label, w = 1) => ({ name, label, w });
// Falchion-style 65% (ANSI): 15 / 15 / 14 / 14 / 10 keys, every row 16u.
const ROWS = [
[
k("ESC", "Esc"), k("N1", "1"), k("N2", "2"), k("N3", "3"), k("N4", "4"),
k("N5", "5"), k("N6", "6"), k("N7", "7"), k("N8", "8"), k("N9", "9"),
k("N0", "0"), k("MINUS", "-"), k("EQUAL", "="), k("BSPC", "Backspace", 2),
k("DEL", "Del"),
],
[
k("TAB", "Tab", 1.5), k("Q", "Q"), k("W", "W"), k("E", "E"), k("R", "R"),
k("T", "T"), k("Y", "Y"), k("U", "U"), k("I", "I"), k("O", "O"), k("P", "P"),
k("LBRC", "["), k("RBRC", "]"), k("BSLS", "\\", 1.5), k("PGUP", "PgUp"),
],
[
k("CAPS", "Caps", 1.75), k("A", "A"), k("S", "S"), k("D", "D"), k("F", "F"),
k("G", "G"), k("H", "H"), k("J", "J"), k("K", "K"), k("L", "L"),
k("SCLN", ";"), k("QUOT", "'"), k("ENT", "Enter", 2.25), k("PGDN", "PgDn"),
],
[
k("LSFT", "Shift", 2.25), k("Z", "Z"), k("X", "X"), k("C", "C"), k("V", "V"),
k("B", "B"), k("N", "N"), k("M", "M"), k("COMM", ","), k("DOT", "."),
k("SLSH", "/"), k("RSFT", "Shift", 1.75), k("UP", "Up"), k("END", "End"),
],
[
k("LCTL", "Ctrl", 1.25), k("LGUI", "Win", 1.25), k("LALT", "Alt", 1.25),
k("SPC", "Space", 6.25), k("RALT", "Alt"), k("FN", "Fn"), k("RCTL", "Ctrl"),
k("LEFT", "Left"), k("DOWN", "Down"), k("RGHT", "Right"),
],
];
// Resolve physical centres and matrix row/col. The LED chain snakes across
// the board (row 0 left->right, row 1 right->left, ...) so each DOUT->DIN
// hop is a single key pitch.
const KEYS = [];
{
let led = 0;
ROWS.forEach((row, r) => {
let xu = 0;
const placed = row.map((key, c) => {
const w = key.w ?? 1;
const p = {
...key,
row: r,
col: c,
x: KB_X0 + (xu + w / 2) * U,
y: KB_Y0 - (r + 0.5) * U,
led: -1,
};
xu += w;
return p;
});
const chain = r % 2 === 0 ? placed : [...placed].reverse();
chain.forEach((p) => {
p.led = led++;
});
KEYS.push(...placed);
});
}
const N_ROWS = ROWS.length;
const N_COLS = Math.max(...ROWS.map((r) => r.length));
/* Cherry PCB-mount stabilisers. Geometry from the daprice/keyswitches.pretty
Stabilizer_MX_2u footprint (KiCad, y-down, converted here to y-up): per
stem a 3.9878 mm non-plated hole 8.255 mm south of the key centre and a
3.048 mm one 6.985 mm north of it. Stems sit +/-11.9 mm from the key
centre for 2u / 2.25u keys and +/-50 mm for the 6.25u space bar. Every
per-cell part stays inside +/-8.2 mm of its key, so the 2u/2.25u holes
fall in copper-free space; the space-bar stems are the constraint on the
two bottom-side pockets. */
const STAB_STEM_OFFSET = { "2": 11.9, "2.25": 11.9, "6.25": 50 };
const STAB_HOLES = KEYS.flatMap((key) => {
const off = STAB_STEM_OFFSET[String(key.w ?? 1)];
if (!off)
return [];
return [-1, 1].flatMap((side) => [
{ key: key.name, side, x: key.x + side * off, y: key.y - 8.255, d: 3.9878 },
{ key: key.name, side, x: key.x + side * off, y: key.y + 6.985, d: 3.048 },
]);
});
const rowNet = (r) => `net.ROW${r}`;
const colNet = (c) => `net.COL${c}`;
/* nRF52840 pin plan (E73 module pin names). P0.02-P0.05 and P0.28-P0.31 are
the only ADC-capable pins, so P0.04 is reserved for battery sensing and the
rest are spread across the matrix. P0.00/P0.01 (32 kHz crystal) and
P0.09/P0.10 (NFC) are left unused so no special firmware configuration is
needed. Spare after this: P0.05, P1.06, P1.13, P0.00, P0.01, P0.09, P0.10. */
const COL_PINS = [
"P0_02", "P0_03", "P0_28", "P0_29", "P0_30", "P0_31", "P0_06", "P0_07",
"P0_08", "P0_12", "P0_13", "P0_15", "P0_17", "P1_09", "P1_11",
];
const ROW_PINS = ["P0_20", "P0_22", "P0_24", "P0_26", "P1_00"];
const LED_DATA_PIN = "P1_02";
const LED_EN_PIN = "P1_10"; // enables the LED power path (load switch + boost)
const OS_SEL_PIN = "P1_04"; // Windows / macOS slide switch, internal pull-up
const VBAT_SENSE_PIN = "P0_04"; // AIN2, via the R8/R9 divider
const mcuMatrixPins = {};
COL_PINS.slice(0, N_COLS).forEach((pin, c) => (mcuMatrixPins[pin] = colNet(c)));
ROW_PINS.slice(0, N_ROWS).forEach((pin, r) => (mcuMatrixPins[pin] = rowNet(r)));
// Schematic layout (units). Sections are clustered by hand.
const SCH = {
Usb: { x: -22, y: 8 },
Charger: { x: -22, y: -2 },
Battery: { x: -22, y: -12 },
Mcu: { x: 0, y: 0 },
LedDriver: { x: 12, y: 8 },
LedPower: { x: 24, y: 8 },
Debug: { x: 24, y: -6 },
Matrix: { x: -22, y: -24, dx: 4.5, dy: 4.5 },
Leds: { x: -22, y: -50, dx: 4.2, dy: 4, perRow: 17 },
};
/* Mounting holes live in the two full-width bands between key rows, where
one row's LEDs have ended and the next row's sockets have not started. */
const BAND_HI = 27.3; // between rows 0 and 1
const BAND_LO = -29.5; // between rows 3 and 4
const MOUNT_HOLES = [
[-149, BAND_HI], [-75, BAND_HI], [0, BAND_HI], [75, BAND_HI], [149, BAND_HI],
[-149, BAND_LO], [-110, BAND_LO], [60, BAND_LO], [110, BAND_LO], [149, BAND_LO],
];
// SWD / reset test points, a column on the bottom side beside the module.
const TESTPOINTS = [
{ name: "TP1", net: "net.SWDIO", y: -31 },
{ name: "TP2", net: "net.SWDCLK", y: -34 },
{ name: "TP3", net: "net.NRST", y: -37 },
{ name: "TP4", net: "net.V3V3", y: -40 },
{ name: "TP5", net: "net.GND", y: -43 },
];
var index_circuit = () => (jsxs("board", { width: `${BOARD.width}mm`, height: `${BOARD.height}mm`, thickness: "1.6mm", routingDisabled: true, children: [jsx("net", { name: "GND", isGroundNet: true }), jsx("net", { name: "VBUS", isPowerNet: true }), jsx("net", { name: "VBAT", isPowerNet: true }), jsx("net", { name: "VSYS", isPowerNet: true }), jsx("net", { name: "V3V3", isPowerNet: true }), jsx("net", { name: "LED_5V", isPowerNet: true }), jsx("schematicsection", { name: "Usb", displayName: "USB-C" }), jsx("schematicsection", { name: "Charger", displayName: "TP4056 Li-Po Charger" }), jsx("schematicsection", { name: "Battery", displayName: "Battery, Power Switch, Gauge" }), jsx("schematicsection", { name: "Mcu", displayName: "nRF52840 (E73-2G4M08S1C)" }), jsx("schematicsection", { name: "LedDriver", displayName: "RGB Data Level Shifter" }), jsx("schematicsection", { name: "LedPower", displayName: "Switched 5 V LED Boost" }), jsx("schematicsection", { name: "Debug", displayName: "Reset + SWD + OS Switch" }), jsx("schematicsection", { name: "Matrix", displayName: "Key Matrix (68 keys)" }), jsx("schematicsection", { name: "Leds", displayName: "Per-Key RGB (WS2812C-2020)" }), MOUNT_HOLES.map(([x, y]) => (jsx(Fragment, { children: jsx("hole", { diameter: "2.2mm", pcbX: x, pcbY: y }) }, `mh-${x}-${y}`))), STAB_HOLES.map((h) => (jsx(Fragment, { children: jsx("hole", { diameter: `${h.d}mm`, pcbX: h.x, pcbY: h.y }) }, `stab-${h.key}-${h.side}-${h.d}`))), jsx("silkscreentext", { text: "FALCHION-65 RGB \u00B7 nRF52840 / BLE + 2.4GHz", pcbX: 60, pcbY: TOP_Y - 2, fontSize: "1.8mm" }), jsx(TYPE_C_16PIN_2MD_073, { name: "J1", pcbX: -40, pcbY: TOP_Y - 4.1, pcbRotation: 180, schSectionName: "Usb", schX: SCH.Usb.x, schY: SCH.Usb.y }), jsx("resistor", { name: "R1", resistance: "5.1k", footprint: "0402", pcbX: -49, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Usb", schX: SCH.Usb.x + 5, schY: SCH.Usb.y + 1.5 }), jsx("resistor", { name: "R2", resistance: "5.1k", footprint: "0402", pcbX: -32, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Usb", schX: SCH.Usb.x + 5, schY: SCH.Usb.y - 1.5 }), jsx("trace", { from: "J1.VBUS1", to: "net.VBUS", thickness: "0.5mm" }), jsx("trace", { from: "J1.VBUS2", to: "net.VBUS", thickness: "0.5mm" }), jsx("trace", { from: "J1.GND1", to: "net.GND" }), jsx("trace", { from: "J1.GND2", to: "net.GND" }), jsx("trace", { from: "J1.SHELL1", to: "net.GND" }), jsx("trace", { from: "J1.SHELL2", to: "net.GND" }), jsx("trace", { from: "J1.SHELL3", to: "net.GND" }), jsx("trace", { from: "J1.SHELL4", to: "net.GND" }), jsx("trace", { from: "J1.CC1", to: "R1.pin1" }), jsx("trace", { from: "R1.pin2", to: "net.GND" }), jsx("trace", { from: "J1.CC2", to: "R2.pin1" }), jsx("trace", { from: "R2.pin2", to: "net.GND" }), jsx("trace", { from: "J1.DP1", to: "net.USB_DP" }), jsx("trace", { from: "J1.DP2", to: "net.USB_DP" }), jsx("trace", { from: "J1.DM1", to: "net.USB_DM" }), jsx("trace", { from: "J1.DM2", to: "net.USB_DM" }), jsx(USBLC6_2SC6, { name: "U9", pcbX: -26, pcbY: TOP_BAND_Y, schSectionName: "Usb", schX: SCH.Usb.x + 9, schY: SCH.Usb.y }), jsx("trace", { from: "U9.pin1", to: "net.USB_DP" }), jsx("trace", { from: "U9.pin6", to: "net.USB_DP" }), jsx("trace", { from: "U9.pin3", to: "net.USB_DM" }), jsx("trace", { from: "U9.pin4", to: "net.USB_DM" }), jsx("trace", { from: "U9.VBUS", to: "net.VBUS" }), jsx("trace", { from: "U9.GND", to: "net.GND" }), jsx(TP4056_42_ESOP8, { name: "U2", pcbX: -80, pcbY: TOP_BAND_Y - 0.6, pcbRotation: 90, schSectionName: "Charger", schX: SCH.Charger.x, schY: SCH.Charger.y }), jsx("capacitor", { name: "C1", capacitance: "10uF", footprint: "0805", maxDecouplingTraceLength: "30mm", pcbX: -88, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Charger", schX: SCH.Charger.x - 5, schY: SCH.Charger.y, schOrientation: "vertical" }), jsx("capacitor", { name: "C2", capacitance: "10uF", footprint: "0805", maxDecouplingTraceLength: "30mm", pcbX: -72, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Charger", schX: SCH.Charger.x + 5, schY: SCH.Charger.y, schOrientation: "vertical" }), jsx("resistor", { name: "R3", resistance: "2k", footprint: "0402", pcbX: -67, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Charger", schX: SCH.Charger.x, schY: SCH.Charger.y - 4 }), jsx("led", { name: "LED1", color: "red", footprint: "0603", pcbX: -62, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Charger", schX: SCH.Charger.x - 9, schY: SCH.Charger.y - 1, schRotation: 90 }), jsx("resistor", { name: "R4", resistance: "330", footprint: "0402", pcbX: -58, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "Charger", schX: SCH.Charger.x - 9, schY: SCH.Charger.y - 4, schOrientation: "vertical" }), jsx("trace", { from: "net.VBUS", to: "U2.VCC", thickness: "0.5mm" }), jsx("trace", { from: "U2.GND", to: "net.GND" }), jsx("trace", { from: "U2.EP", to: "net.GND" }), jsx("trace", { from: "U2.CE", to: "net.VBUS" }), jsx("trace", { from: "U2.TEMP", to: "net.GND" }), jsx("trace", { from: "U2.BAT", to: "net.VBAT", thickness: "0.6mm" }), jsx("trace", { from: "U2.PROG", to: "R3.pin1" }), jsx("trace", { from: "R3.pin2", to: "net.GND" }), jsx("trace", { from: "C1.pin1", to: "net.VBUS" }), jsx("trace", { from: "C1.pin2", to: "net.GND" }), jsx("trace", { from: "C2.pin1", to: "net.VBAT" }), jsx("trace", { from: "C2.pin2", to: "net.GND" }), jsx("trace", { from: "U2.N_CHRG", to: "LED1.cathode" }), jsx("trace", { from: "LED1.anode", to: "R4.pin1" }), jsx("trace", { from: "R4.pin2", to: "net.VBUS" }), jsx(MSK12C02, { name: "SW1", pcbX: -128, pcbY: TOP_BAND_Y, schSectionName: "Battery", schX: SCH.Battery.x + 4, schY: SCH.Battery.y }), jsx("silkscreentext", { text: "PWR", pcbX: -128, pcbY: TOP_Y - 1.5, fontSize: "1.2mm" }), jsx(MSK12C02, { name: "SW3", pcbX: -116, pcbY: TOP_BAND_Y, schSectionName: "Debug", schX: SCH.Debug.x, schY: SCH.Debug.y + 4 }), jsx("silkscreentext", { text: "WIN / MAC", pcbX: -116, pcbY: TOP_Y - 1.5, fontSize: "1.2mm" }), jsx("trace", { from: "SW1.pin2", to: "net.VBAT", thickness: "0.6mm" }), jsx("trace", { from: "SW1.pin1", to: "net.VBAT_SW", thickness: "0.6mm" }), jsx("trace", { from: "SW1.pin4", to: "net.GND" }), jsx("trace", { from: "SW3.pin2", to: "net.GND" }), jsx("trace", { from: "SW3.pin1", to: "net.OS_SEL" }), jsx("trace", { from: "SW3.pin4", to: "net.GND" }), jsx(SS14L, { name: "D1", pcbX: -106, pcbY: TOP_BAND_Y, schSectionName: "Battery", schX: SCH.Battery.x + 9, schY: SCH.Battery.y }), jsx(SS14L, { name: "D3", pcbX: -100, pcbY: TOP_BAND_Y, schSectionName: "Battery", schX: SCH.Battery.x + 9, schY: SCH.Battery.y + 3 }), jsx("trace", { from: "D1.anode", to: "net.VBAT_SW", thickness: "0.6mm" }), jsx("trace", { from: "D1.cathode", to: "net.VSYS", thickness: "0.6mm" }), jsx("trace", { from: "D3.anode", to: "net.VBUS", thickness: "0.6mm" }), jsx("trace", { from: "D3.cathode", to: "net.VSYS", thickness: "0.6mm" }), jsx(SN74AHCT1G125DBVR, { name: "U6", pcbX: -147, pcbY: TOP_BAND_Y, schSectionName: "LedDriver", schX: SCH.LedDriver.x, schY: SCH.LedDriver.y }), jsx("capacitor", { name: "C3", capacitance: "100nF", footprint: "0402", pcbX: -143, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "LedDriver", schX: SCH.LedDriver.x + 4, schY: SCH.LedDriver.y + 1, schOrientation: "vertical" }), jsx("capacitor", { name: "C4", capacitance: "22uF", footprint: "0805", pcbX: -138.5, pcbY: TOP_BAND_Y, pcbRotation: 90, schSectionName: "LedDriver", schX: SCH.LedDriver.x + 7, schY: SCH.LedDriver.y + 1, schOrientation: "vertical" }), jsx("trace", { from: "U6.A", to: "net.LED_DATA_3V3" }), jsx("trace", { from: "U6.Y", to: "net.LED_DIN0" }), jsx("trace", { from: "U6.N_OE", to: "net.GND" }), jsx("trace", { from: "U6.VCC", to: "net.LED_5V" }), jsx("trace", { from: "U6.GND", to: "net.GND" }), jsx("trace", { from: "C3.pin1", to: "net.LED_5V" }), jsx("trace", { from: "C3.pin2", to: "net.GND" }), jsx("trace", { from: "C4.pin1", to: "net.LED_5V", thickness: "0.6mm" }), jsx("trace", { from: "C4.pin2", to: "net.GND" }), jsx(E73_2G4M08S1C, { name: "U1", layer: "bottom", pcbX: -50, pcbY: -41, schSectionName: "Mcu", schX: SCH.Mcu.x, schY: SCH.Mcu.y, connections: {
...mcuMatrixPins,
[LED_DATA_PIN]: "net.LED_DATA_3V3",
[LED_EN_PIN]: "net.LED_EN",
[OS_SEL_PIN]: "net.OS_SEL",
[VBAT_SENSE_PIN]: "net.VBAT_SENSE",
VDDH: "net.VSYS",
VDD: "net.V3V3",
VBUS: "net.VBUS",
D_POS: "net.USB_DP",
D_NEG: "net.USB_DM",
RESET: "net.NRST",
SWDIO: "net.SWDIO",
SWDCLK: "net.SWDCLK",
GND1: "net.GND",
GND2: "net.GND",
GND3: "net.GND",
} }), jsx("silkscreentext", { text: "RF KEEPOUT - NO COPPER / NO METAL CASE", layer: "bottom", pcbX: -50, pcbY: -48, fontSize: "1.2mm" }), jsx("capacitor", { name: "C5", capacitance: "4.7uF", footprint: "0603", layer: "bottom", pcbX: -53, pcbY: -28.8, pcbRotation: 90, schSectionName: "Mcu", schX: SCH.Mcu.x + 6, schY: SCH.Mcu.y + 4, schOrientation: "vertical" }), jsx("capacitor", { name: "C6", capacitance: "10uF", footprint: "0805", layer: "bottom", pcbX: -48, pcbY: -28.8, pcbRotation: 90, schSectionName: "Mcu", schX: SCH.Mcu.x + 9, schY: SCH.Mcu.y + 4, schOrientation: "vertical" }), jsx("trace", { from: "C5.pin1", to: "net.V3V3" }), jsx("trace", { from: "C5.pin2", to: "net.GND" }), jsx("trace", { from: "C6.pin1", to: "net.VSYS" }), jsx("trace", { from: "C6.pin2", to: "net.GND" }), jsx("resistor", { name: "R8", resistance: "1M", footprint: "0402", layer: "bottom", pcbX: -41, pcbY: -30.5, pcbRotation: 90, schSectionName: "Battery", schX: SCH.Battery.x - 4, schY: SCH.Battery.y + 4, schOrientation: "vertical" }), jsx("resistor", { name: "R9", resistance: "1M", footprint: "0402", layer: "bottom", pcbX: -38.5, pcbY: -30.5, pcbRotation: 90, schSectionName: "Battery", schX: SCH.Battery.x - 4, schY: SCH.Battery.y, schOrientation: "vertical" }), jsx("capacitor", { name: "C7", capacitance: "100nF", footprint: "0402", layer: "bottom", pcbX: -36, pcbY: -30.5, pcbRotation: 90, schSectionName: "Battery", schX: SCH.Battery.x - 1, schY: SCH.Battery.y + 2, schOrientation: "vertical" }), jsx("trace", { from: "R8.pin1", to: "net.VBAT_SW" }), jsx("trace", { from: "R8.pin2", to: "net.VBAT_SENSE" }), jsx("trace", { from: "R9.pin1", to: "net.VBAT_SENSE" }), jsx("trace", { from: "R9.pin2", to: "net.GND" }), jsx("trace", { from: "C7.pin1", to: "net.VBAT_SENSE" }), jsx("trace", { from: "C7.pin2", to: "net.GND" }), jsx(TS_1187A_B_A_B, { name: "SW2", layer: "bottom", pcbX: -36, pcbY: -38, schSectionName: "Debug", schX: SCH.Debug.x, schY: SCH.Debug.y }), jsx("trace", { from: "SW2.pin1", to: "net.NRST" }), jsx("trace", { from: "SW2.pin2", to: "net.GND" }), TESTPOINTS.map((tp, i) => (jsxs(Fragment, { children: [jsx("testpoint", { name: tp.name, footprintVariant: "pad", padShape: "circle", padDiameter: "1.5mm", layer: "bottom", pcbX: -61, pcbY: tp.y, schSectionName: "Debug", schX: SCH.Debug.x + 4 + i * 1.5, schY: SCH.Debug.y }), jsx("trace", { from: `${tp.name}.pin1`, to: tp.net })] }, tp.name))), jsx(SY6280AAC, { name: "U7", layer: "bottom", pcbX: -10, pcbY: -31, schSectionName: "LedPower", schX: SCH.LedPower.x, schY: SCH.LedPower.y }), jsx("resistor", { name: "R7", resistance: "4.7k", footprint: "0402", layer: "bottom", pcbX: -10, pcbY: -35.5, pcbRotation: 90, schSectionName: "LedPower", schX: SCH.LedPower.x, schY: SCH.LedPower.y - 3, schOrientation: "vertical" }), jsx("capacitor", { name: "C8", capacitance: "22uF", footprint: "0805", layer: "bottom", pcbX: -5, pcbY: -31, pcbRotation: 90, schSectionName: "LedPower", schX: SCH.LedPower.x + 3, schY: SCH.LedPower.y - 2, schOrientation: "vertical" }), jsx(MT3608, { name: "U8", layer: "bottom", pcbX: -1, pcbY: -31, schSectionName: "LedPower", schX: SCH.LedPower.x + 6, schY: SCH.LedPower.y }), jsx("resistor", { name: "R5", resistance: "75k", footprint: "0402", layer: "bottom", pcbX: -1, pcbY: -35.5, pcbRotation: 90, schSectionName: "LedPower", schX: SCH.LedPower.x + 10, schY: SCH.LedPower.y, schOrientation: "vertical" }), jsx("resistor", { name: "R6", resistance: "10k", footprint: "0402", layer: "bottom", pcbX: 2.5, pcbY: -35.5, pcbRotation: 90, schSectionName: "LedPower", schX: SCH.LedPower.x + 10, schY: SCH.LedPower.y - 3, schOrientation: "vertical" }), jsx(SWPA4030S220MT, { name: "L1", layer: "bottom", pcbX: 4, pcbY: -31, schSectionName: "LedPower", schX: SCH.LedPower.x + 6, schY: SCH.LedPower.y + 3 }), jsx(SS14L, { name: "D2", layer: "bottom", pcbX: 10, pcbY: -31, schSectionName: "LedPower", schX: SCH.LedPower.x + 10, schY: SCH.LedPower.y + 3 }), jsx("capacitor", { name: "C9", capacitance: "22uF", footprint: "0805", layer: "bottom", pcbX: 14, pcbY: -31, pcbRotation: 90, schSectionName: "LedPower", schX: SCH.LedPower.x + 13, schY: SCH.LedPower.y - 2, schOrientation: "vertical" }), jsx("trace", { from: "U7.IN", to: "net.VSYS", thickness: "0.6mm" }), jsx("trace", { from: "U7.OUT", to: "net.LED_VIN", thickness: "0.6mm" }), jsx("trace", { from: "U7.EN", to: "net.LED_EN" }), jsx("trace", { from: "U7.GND", to: "net.GND" }), jsx("trace", { from: "U7.ISET", to: "R7.pin1" }), jsx("trace", { from: "R7.pin2", to: "net.GND" }), jsx("trace", { from: "C8.pin1", to: "net.LED_VIN" }), jsx("trace", { from: "C8.pin2", to: "net.GND" }), jsx("trace", { from: "U8.IN", to: "net.LED_VIN", thickness: "0.6mm" }), jsx("trace", { from: "U8.EN", to: "net.LED_VIN" }), jsx("trace", { from: "U8.GND", to: "net.GND" }), jsx("trace", { from: "L1.pin1", to: "net.LED_VIN", thickness: "0.6mm" }), jsx("trace", { from: "L1.pin2", to: "net.BOOST_SW", thickness: "0.6mm" }), jsx("trace", { from: "U8.SW", to: "net.BOOST_SW", thickness: "0.6mm" }), jsx("trace", { from: "D2.anode", to: "net.BOOST_SW", thickness: "0.6mm" }), jsx("trace", { from: "D2.cathode", to: "net.LED_5V", thickness: "0.6mm" }), jsx("trace", { from: "R5.pin1", to: "net.LED_5V" }), jsx("trace", { from: "R5.pin2", to: "net.BOOST_FB" }), jsx("trace", { from: "U8.FB", to: "net.BOOST_FB" }), jsx("trace", { from: "R6.pin1", to: "net.BOOST_FB" }), jsx("trace", { from: "R6.pin2", to: "net.GND" }), jsx("trace", { from: "C9.pin1", to: "net.LED_5V", thickness: "0.6mm" }), jsx("trace", { from: "C9.pin2", to: "net.GND" }), jsx(S2B_PH_SM4_TB_LF__SN_, { name: "J2", layer: "bottom", pcbX: 0, pcbY: -44.5, pcbRotation: 180, schSectionName: "Battery", schX: SCH.Battery.x, schY: SCH.Battery.y }), jsx("silkscreentext", { text: "BAT + -", layer: "bottom", pcbX: 0, pcbY: -35.5, fontSize: "1.2mm" }), jsx("trace", { from: "J2.pin1", to: "net.VBAT", thickness: "0.6mm" }), jsx("trace", { from: "J2.pin2", to: "net.GND" }), KEYS.map((key) => {
const gx = key.x - STEM.x;
const gy = key.y - STEM.y;
const sx = SCH.Matrix.x + key.col * SCH.Matrix.dx;
const sy = SCH.Matrix.y - key.row * SCH.Matrix.dy;
const lx = SCH.Leds.x + (key.led % SCH.Leds.perRow) * SCH.Leds.dx;
const ly = SCH.Leds.y - Math.floor(key.led / SCH.Leds.perRow) * SCH.Leds.dy;
const din = `net.LED_DIN${key.led}`;
const dout = key.led === KEYS.length - 1 ? "net.LED_DOUT_END" : `net.LED_DIN${key.led + 1}`;
return (jsxs(Fragment, { children: [jsx(KeyHotSocket, { name: `SW_${key.name}`, pcbX: gx, pcbY: gy, schX: sx, schY: sy, connections: { pin2: colNet(key.col) }, ...{ schSectionName: "Matrix" } }), jsx(KeyShaftForHotSocket, { name: `SW_${key.name}_STEM`, pcbX: gx + SHAFT_OFF.x, pcbY: gy + SHAFT_OFF.y, ...{ doNotPlace: true } }), jsx("silkscreentext", { text: key.label, pcbX: gx + LABEL_OFF.x, pcbY: gy + LABEL_OFF.y, fontSize: "1.2mm" }), jsx(A_1N4148WS, { name: `D_${key.name}`, layer: "bottom", pcbX: gx + DIODE_OFF.x, pcbY: gy + DIODE_OFF.y, schX: sx, schY: sy - 1.6, schRotation: 90, schSectionName: "Matrix", connections: { anode: `.SW_${key.name} .pin1`, cathode: rowNet(key.row) } }), jsx(WS2812C_2020_V1, { name: `LED_${key.name}`, pcbX: gx + LED_OFF.x, pcbY: gy + LED_OFF.y, schX: lx, schY: ly, schSectionName: "Leds", connections: { VDD: "net.LED_5V", GND: "net.GND", DI: din, DO: dout } }), jsx("capacitor", { name: `C_${key.name}`, capacitance: "100nF", footprint: "0402", layer: "bottom", pcbX: gx + LED_CAP_OFF.x, pcbY: gy + LED_CAP_OFF.y, schX: lx + 2, schY: ly, schOrientation: "vertical", schSectionName: "Leds", connections: { pin1: "net.LED_5V", pin2: "net.GND" } })] }, key.name));
})] }));
export { index_circuit as default };