pixalynx/pixal-gps

These files define two separate printed circuit boards: a small, two-layer battery cartridge with protection circuitry and contact pads for a pouch cell, and a larger, two-layer wireless charging dock featuring USB-C input, a resonant coil, and wireless power transmission components.

Version
0.1.2
License
unset
Stars
0

review/source-build/parts/UsbC.tsx

import type { ConnectorProps } from "@tscircuit/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 = {
  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"],
} as const

const wide = { width: "0.55mm", height: "1.1mm", shape: "rect" as const }
const narrow = { width: "0.3mm", height: "1.1mm", shape: "rect" as const }

export const TYPE_C_16PIN_2MD_073 = (props: ConnectorProps) => {
  return (
    <connector
      standard="usb_c"
      pinLabels={pinLabels}
      manufacturerPartNumber="TYPE-C 16PIN 2MD(073)"
      supplierPartNumbers={{ jlcpcb: ["C2765186"] }}
      footprint={
        <footprint>
          {/* Contact row (rear of the receptacle) */}
          <smtpad portHints={["pin1"]} pcbX="-3.2mm" pcbY="2.125mm" {...wide} />
          <smtpad portHints={["pin2"]} pcbX="-2.4mm" pcbY="2.125mm" {...wide} />
          <smtpad portHints={["pin7"]} pcbX="-1.75mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin3"]} pcbX="-1.25mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin8"]} pcbX="-0.75mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin4"]} pcbX="-0.25mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin5"]} pcbX="0.25mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin9"]} pcbX="0.75mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin6"]} pcbX="1.25mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin10"]} pcbX="1.75mm" pcbY="2.125mm" {...narrow} />
          <smtpad portHints={["pin11"]} pcbX="2.4mm" pcbY="2.125mm" {...wide} />
          <smtpad portHints={["pin12"]} pcbX="3.2mm" pcbY="2.125mm" {...wide} />
          {/* Shell legs: rear pair and front pair */}
          <platedhole portHints={["pin13"]} shape="pill" pcbX="-4.325mm" pcbY="1.575mm" outerWidth="1.1mm" outerHeight="1.9mm" holeWidth="0.6mm" holeHeight="1.4mm" />
          <platedhole portHints={["pin14"]} shape="pill" pcbX="4.325mm" pcbY="1.575mm" outerWidth="1.1mm" outerHeight="1.9mm" holeWidth="0.6mm" holeHeight="1.4mm" />
          <platedhole portHints={["pin15"]} shape="pill" pcbX="-4.325mm" pcbY="-2.625mm" outerWidth="1.2mm" outerHeight="1.6mm" holeWidth="0.6mm" holeHeight="1.0mm" />
          <platedhole portHints={["pin16"]} shape="pill" pcbX="4.325mm" pcbY="-2.625mm" outerWidth="1.2mm" outerHeight="1.6mm" holeWidth="0.6mm" holeHeight="1.0mm" />
          {/* Alignment pegs (non-plated) */}
          <hole pcbX="-2.89mm" pcbY="1.055mm" diameter="0.7mm" />
          <hole pcbX="2.89mm" pcbY="1.055mm" diameter="0.7mm" />
          {/* Body outline: 8.94mm wide, 7.35mm deep from the contact row */}
          <silkscreenpath route={[{ x: 4.572, y: -1.647 }, { x: 4.572, y: 0.347 }]} />
          <silkscreenpath route={[{ x: 4.572, y: -5.076 }, { x: 4.572, y: -3.603 }]} />
          <silkscreenpath route={[{ x: -4.5, y: -1.644 }, { x: -4.5, y: 0.344 }]} />
          <silkscreenpath route={[{ x: -4.5, y: -5.225 }, { x: -4.5, y: -3.606 }]} />
          <silkscreenpath route={[{ x: 4.5, y: -5.225 }, { x: -4.5, y: -5.225 }]} />
          <silkscreentext text="{NAME}" pcbX="0mm" pcbY="3.6mm" anchorAlignment="center" fontSize="1mm" />
          <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 }]} />
        </footprint>
      }
      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: -0.0000127, y: 1.57499705, z: -1.6800018 },
      }}
      {...props}
    />
  )
}