imrishabh18/microphone-board

This code defines a PCB connector component featuring six pins with associated footprint, silkscreen, and 3D model data for placement and visualization on a circuit board.

Version
1.0.0
License
unset
Stars
1

index.tsx

PCBPCB preview for index.tsx
SchematicSchematic preview for index.tsx
import { Fragment } from "react"
import { Connector } from "./imports/Connector"
import { Microphone } from "./imports/Microphone"

const boardOutline = [
  { x: -7.421, y: -39.592 },
  { x: -7.348, y: -39.75 },
  { x: -7.248, y: -39.893 },
  { x: -7.124, y: -40.016 },
  { x: -6.982, y: -40.116 },
  { x: -6.824, y: -40.19 },
  { x: -6.655, y: -40.235 },
  { x: -6.482, y: -40.25 },
  { x: -6.518, y: -40.25 },
  { x: -0.018, y: -40.25 },
  { x: 6.482, y: -40.25 },
  { x: 6.655, y: -40.235 },
  { x: 6.824, y: -40.19 },
  { x: 6.982, y: -40.116 },
  { x: 7.124, y: -40.016 },
  { x: 7.248, y: -39.893 },
  { x: 7.348, y: -39.75 },
  { x: 7.421, y: -39.592 },
  { x: 8.452, y: -34.554 },
  { x: 8.481, y: -34.175 },
  { x: 8.437, y: -33.798 },
  { x: 8.321, y: -33.436 },
  { x: 8.137, y: -33.103 },
  { x: 7.893, y: -32.812 },
  { x: 7.597, y: -32.573 },
  { x: 7.261, y: -32.396 },
  { x: 6.897, y: -32.287 },
  { x: 6.518, y: -32.25 },
  { x: 2.582, y: -32.25 },
  { x: 2.396, y: -32.233 },
  { x: 2.216, y: -32.181 },
  { x: 2.05, y: -32.097 },
  { x: 1.901, y: -31.983 },
  { x: 1.777, y: -31.844 },
  { x: 1.681, y: -31.684 },
  { x: 1.616, y: -31.509 },
  { x: 0.501, y: -25.746 },
  { x: 0.493, y: -25.698 },
  { x: 0.487, y: -25.649 },
  { x: 0.483, y: -25.599 },
  { x: 0.482, y: -25.55 },
  { x: 0.482, y: 30.25 },
  { x: 0.496, y: 30.396 },
  { x: 0.539, y: 30.537 },
  { x: 0.608, y: 30.667 },
  { x: 0.701, y: 30.78 },
  { x: 0.815, y: 30.874 },
  { x: 0.945, y: 30.943 },
  { x: 1.085, y: 30.986 },
  { x: 1.232, y: 31 },
  { x: 1.362, y: 31.011 },
  { x: 1.488, y: 31.045 },
  { x: 1.607, y: 31.1 },
  { x: 1.714, y: 31.175 },
  { x: 1.806, y: 31.268 },
  { x: 1.881, y: 31.375 },
  { x: 1.936, y: 31.493 },
  { x: 1.97, y: 31.62 },
  { x: 1.982, y: 31.75 },
  { x: 1.982, y: 38.25 },
  { x: 1.943, y: 38.64 },
  { x: 1.829, y: 39.015 },
  { x: 1.645, y: 39.361 },
  { x: 1.396, y: 39.664 },
  { x: 1.093, y: 39.913 },
  { x: 0.747, y: 40.098 },
  { x: 0.372, y: 40.212 },
  { x: -0.018, y: 40.25 },
  { x: -0.409, y: 40.212 },
  { x: -0.784, y: 40.098 },
  { x: -1.129, y: 39.913 },
  { x: -1.433, y: 39.664 },
  { x: -1.681, y: 39.361 },
  { x: -1.866, y: 39.015 },
  { x: -1.98, y: 38.64 },
  { x: -2.018, y: 38.25 },
  { x: -2.018, y: 31.75 },
  { x: -2.004, y: 31.604 },
  { x: -1.961, y: 31.463 },
  { x: -1.892, y: 31.333 },
  { x: -1.799, y: 31.22 },
  { x: -1.685, y: 31.126 },
  { x: -1.555, y: 31.057 },
  { x: -1.415, y: 31.014 },
  { x: -1.268, y: 31 },
  { x: -1.122, y: 30.986 },
  { x: -0.981, y: 30.943 },
  { x: -0.852, y: 30.874 },
  { x: -0.738, y: 30.78 },
  { x: -0.645, y: 30.667 },
  { x: -0.575, y: 30.537 },
  { x: -0.533, y: 30.396 },
  { x: -0.518, y: 30.25 },
  { x: -0.518, y: -25.55 },
  { x: -0.52, y: -25.599 },
  { x: -0.523, y: -25.649 },
  { x: -0.529, y: -25.698 },
  { x: -0.538, y: -25.746 },
  { x: -1.652, y: -31.509 },
  { x: -1.717, y: -31.684 },
  { x: -1.814, y: -31.844 },
  { x: -1.938, y: -31.983 },
  { x: -2.086, y: -32.097 },
  { x: -2.253, y: -32.181 },
  { x: -2.432, y: -32.233 },
  { x: -2.618, y: -32.25 },
  { x: -6.518, y: -32.25 },
  { x: -6.897, y: -32.287 },
  { x: -7.261, y: -32.396 },
  { x: -7.597, y: -32.573 },
  { x: -7.893, y: -32.812 },
  { x: -8.137, y: -33.103 },
  { x: -8.321, y: -33.436 },
  { x: -8.437, y: -33.798 },
  { x: -8.481, y: -34.175 },
  { x: -8.452, y: -34.554 },
  { x: -7.421, y: -39.592 },
]

const profileCutouts = [
  { name: "CUTOUT_LEFT", x: -6.518, y: -34.25 },
  { name: "CUTOUT_RIGHT", x: 6.482, y: -34.25 },
  { name: "CUTOUT_TOP", x: -0.018, y: 38.25 },
]

export default () => (
  <board
    width="16.963mm"
    height="80.5mm"
    outline={boardOutline}
    pcbStyle={{
      silkscreenFontSize: "0.8mm",
      viaPadDiameter: "0.6mm",
      viaHoleDiameter: "0.3mm",
    }}
  >
    {profileCutouts.map((cutout) => (
      <Fragment key={cutout.name}>
        <cutout
          name={cutout.name}
          shape="circle"
          radius="1mm"
          pcbX={cutout.x}
          pcbY={cutout.y}
        />
      </Fragment>
    ))}

    <Connector name="J1" pcbX={0} pcbY={-37.25} schX={0} schY={-2} />

    <Microphone
      name="U1"
      pcbX={-0.018}
      pcbY={34.672}
      pcbRotation={180}
      schX={0}
      schY={2}
    />

    <capacitor
      name="C1"
      capacitance="100nF"
      footprint="0402"
      supplierPartNumbers={{
        jlcpcb: ["C1525"],
      }}
      pcbX={-0.018}
      pcbY={31.75}
      pcbRotation={0}
      schX={2.5}
      schY={2}
    />

    <trace from=".J1 > .pin1" to="net.GND" />
    <trace from=".J1 > .pin2" to="net.VDD" />
    <trace from=".J1 > .pin3" to="net.PDM_CLK" />
    <trace from=".J1 > .pin4" to="net.PDM_DATA" />
    <trace from=".J1 > .pin5" to="net.GND" />
    <trace from=".J1 > .pin6" to="net.GND" />

    <trace from=".U1 > .GND1" to="net.GND" />
    <trace from=".U1 > .pin3_alt1" to="net.GND" />
    <trace from=".U1 > .VDD" to="net.VDD" />
    <trace from=".U1 > .CLK" to="net.PDM_CLK" />
    <trace from=".U1 > .DATA" to="net.PDM_DATA" />
    <trace from=".U1 > .SELECT" to="net.GND" />

    <trace from=".C1 > .pin1" to="net.VDD" />
    <trace from=".C1 > .pin2" to="net.GND" />
  </board>
)