AnasSarkiz/VoltPeek

This code defines a PCB layout featuring a voltage probe module with key components including an RP2040 microcontroller, resistors, LEDs, connectors, and a custom probe interface, along with their physical footprints and routing details.

Version
1.0.0
License
unset
Stars
0

index.circuit.tsx

PCBPCB preview for index.circuit.tsx
SchematicSchematic preview for index.circuit.tsx
import { PJ_320D } from "./imports/PJ_320D"
import { TAC_32N_Q_T_R } from "./imports/TAC_32N_Q_T_R"

const xiaoPinLabels = {
  pin1: ["D0", "A0", "ADC_SENSE"],
  pin2: ["D1", "A1"],
  pin3: ["D2", "A2"],
  pin4: ["D3", "A3"],
  pin5: ["D4", "SDA", "OLED_SDA"],
  pin6: ["D5", "SCL", "OLED_SCL"],
  pin7: ["D6", "LED_STATUS"],
  pin8: ["D7", "BUTTON_MODE"],
  pin9: ["5V"],
  pin10: ["GND"],
  pin11: ["VCC_3V3", "3V3"],
  pin12: ["D10", "MOSI"],
  pin13: ["D9", "MISO"],
  pin14: ["D8", "SCK"],
} as const

const XiaoRp2040Module = (props: {
  name: string
  pcbX?: number
  pcbY?: number
  pcbRotation?: number
  layer?: "top" | "bottom"
}) => (
  <chip
    {...props}
    manufacturerPartNumber="Seeed Studio XIAO RP2040 module, hand-soldered"
    pinLabels={xiaoPinLabels}
    showPinAliases
    footprint={
      <footprint>
        <platedhole portHints={["pin1"]} pcbX="-8.89mm" pcbY="7.62mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin2"]} pcbX="-8.89mm" pcbY="5.08mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin3"]} pcbX="-8.89mm" pcbY="2.54mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin4"]} pcbX="-8.89mm" pcbY="0mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin5"]} pcbX="-8.89mm" pcbY="-2.54mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin6"]} pcbX="-8.89mm" pcbY="-5.08mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin7"]} pcbX="-8.89mm" pcbY="-7.62mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin8"]} pcbX="8.89mm" pcbY="-7.62mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin9"]} pcbX="8.89mm" pcbY="-5.08mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin10"]} pcbX="8.89mm" pcbY="-2.54mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin11"]} pcbX="8.89mm" pcbY="0mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin12"]} pcbX="8.89mm" pcbY="2.54mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin13"]} pcbX="8.89mm" pcbY="5.08mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <platedhole portHints={["pin14"]} pcbX="8.89mm" pcbY="7.62mm" outerDiameter="1.6mm" holeDiameter="0.9mm" shape="circle" />
        <silkscreenrect pcbX="0mm" pcbY="0mm" width="21mm" height="18mm" />
        <silkscreentext text="XIAO RP2040" pcbX="0mm" pcbY="0mm" fontSize="1mm" anchorAlignment="center" />
        <silkscreentext text="USB ->" pcbX="0mm" pcbY="7.2mm" fontSize="0.8mm" anchorAlignment="center" />
      </footprint>
    }
  />
)

export default () => (
  <board width="66mm" height="28mm" layers={2} borderRadius="3mm" title="VoltPeek Probe">
    <PJ_320D name="J1" pcbX={-23.6} pcbY={-0.8} layer="top" />

    <resistor
      name="R1"
      resistance="100k"
      footprint="0603"
      pcbX={-12.5}
      pcbY={4.8}
      pcbRotation={90}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C25803"] }}
    />
    <resistor
      name="R2"
      resistance="33k"
      footprint="0603"
      pcbX={-9.5}
      pcbY={4.8}
      pcbRotation={90}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C4216"] }}
    />
    <resistor
      name="R3"
      resistance="1k"
      footprint="0603"
      pcbX={-6.5}
      pcbY={4.8}
      pcbRotation={90}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C21190"] }}
    />

    <XiaoRp2040Module name="U1" pcbX={5.4} pcbY={-0.8} layer="top" />

    <pinheader
      name="J2"
      pinCount={4}
      gender="female"
      pitch="2.54mm"
      footprint="pinrow4"
      showSilkscreenPinLabels
      pinLabels={["VCC", "GND", "SDA", "SCL"]}
      pcbX={9.5}
      pcbY={10.5}
      pcbRotation={0}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C5144876"] }}
    />

    <TAC_32N_Q_T_R name="SW1" pcbX={24.5} pcbY={-6.5} layer="top" />
    <resistor
      name="R5"
      resistance="10k"
      footprint="0603"
      pcbX={24.5}
      pcbY={-1.8}
      pcbRotation={90}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C25804"] }}
    />

    <resistor
      name="R4"
      resistance="330"
      footprint="0603"
      pcbX={23.6}
      pcbY={6.4}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C23138"] }}
    />
    <led
      name="D1"
      color="green"
      footprint="0603"
      pcbX={28}
      pcbY={6.4}
      layer="top"
      supplierPartNumbers={{ jlcpcb: ["C965805"] }}
    />

    <hole name="H1" diameter="2.2mm" pcbX={-28.5} pcbY={10.5} />
    <hole name="H2" diameter="2.2mm" pcbX={29.2} pcbY={10.5} />

    <trace from=".J1 > .pin2" to="net.VIN_PROBE" />
    <trace from=".R1 > .pin1" to="net.VIN_PROBE" />
    <trace from=".J1 > .pin1" to="net.GND" />
    <trace from=".J1 > .pin4" to="net.GND" />

    <trace from=".R1 > .pin2" to="net.ADC_DIV" />
    <trace from=".R2 > .pin1" to="net.ADC_DIV" />
    <trace from=".R3 > .pin1" to="net.ADC_DIV" />
    <trace from=".R2 > .pin2" to="net.GND" />
    <trace from=".R3 > .pin2" to="net.ADC_SENSE" />
    <trace from=".U1 > .ADC_SENSE" to="net.ADC_SENSE" />

    <trace from=".U1 > .VCC_3V3" to="net.VCC_3V3" />
    <trace from=".U1 > .GND" to="net.GND" />
    <trace from=".J2 > .pin1" to="net.VCC_3V3" />
    <trace from=".J2 > .pin2" to="net.GND" />
    <trace from=".J2 > .pin3" to="net.OLED_SDA" />
    <trace from=".J2 > .pin4" to="net.OLED_SCL" />
    <trace from=".U1 > .OLED_SDA" to="net.OLED_SDA" />
    <trace from=".U1 > .OLED_SCL" to="net.OLED_SCL" />

    <trace from=".U1 > .BUTTON_MODE" to="net.BUTTON_MODE" />
    <trace from=".R5 > .pin1" to="net.VCC_3V3" />
    <trace from=".R5 > .pin2" to="net.BUTTON_MODE" />
    <trace from=".SW1 > .pin1" to="net.BUTTON_MODE" />
    <trace from=".SW1 > .pin3" to="net.BUTTON_MODE" />
    <trace from=".SW1 > .pin5" to="net.BUTTON_MODE" />
    <trace from=".SW1 > .pin2" to="net.GND" />
    <trace from=".SW1 > .pin4" to="net.GND" />
    <trace from=".SW1 > .pin6" to="net.GND" />

    <trace from=".U1 > .LED_STATUS" to="net.LED_STATUS" />
    <trace from=".R4 > .pin1" to="net.LED_STATUS" />
    <trace from=".R4 > .pin2" to=".D1 > .pin1" />
    <trace from=".D1 > .pin2" to="net.GND" />

    <copperpour name="GND_TOP" connectsTo="net.GND" layer="top" clearance="0.2mm" />
    <copperpour name="GND_BOTTOM" connectsTo="net.GND" layer="bottom" clearance="0.2mm" />

    <silkscreentext text="VOLTPEEK PROBE" pcbX={0} pcbY={-12.2} fontSize="1.2mm" anchorAlignment="center" />
    <silkscreentext text="0-12V DC MAX" pcbX={-17} pcbY={-12.2} fontSize="0.8mm" anchorAlignment="center" />
    <silkscreentext text="TOP ASSEMBLY ONLY" pcbX={20.2} pcbY={-12.2} fontSize="0.75mm" anchorAlignment="center" />
    <silkscreentext text="PROBE JACK" pcbX={-22.5} pcbY={12} fontSize="0.8mm" anchorAlignment="center" />
    <silkscreentext text="TIP=VIN" pcbX={-21.6} pcbY={10.2} fontSize="0.7mm" anchorAlignment="center" />
    <silkscreentext text="SLEEVE=GND" pcbX={-21.6} pcbY={8.5} fontSize="0.7mm" anchorAlignment="center" />
    <silkscreentext text="OLED V G D C" pcbX={9.5} pcbY={7.6} fontSize="0.7mm" anchorAlignment="center" />
    <silkscreentext text="HOLD" pcbX={24.5} pcbY={-11.1} fontSize="0.8mm" anchorAlignment="center" />
    <silkscreentext text="STATUS" pcbX={26.1} pcbY={3.8} fontSize="0.75mm" anchorAlignment="center" />
    <silkscreentext text="BOTTOM: ROUTES/POUR ONLY" pcbX={0} pcbY={0} fontSize="0.8mm" anchorAlignment="center" layer="bottom" />
  </board>
)