mohan-bee/stm32-mini-dev-board-v1-a-2
A diagnostic STM32G031 development board with USB‑C 3.3V power, SWD/GPIO/UART/SPI headers, reset, potentiometer, buttons, LEDs, buzzer, I²C EEPROM, MCP23008 GPIO expansion, filtered inputs, and multiple I²C sensor ports.
- Version
- 1.0.1
- License
- unset
- Stars
- 0
complex.circuit.tsx
const usbFp = <footprint insertionDirection="from_bottom">{[-3.75,-2.25,-.75,.75,2.25,3.75].map((x,i)=><smtpad shape="rect" width="1.2mm" height="2.4mm" pcbX={x} layer="top" portHints={[`pin${i+1}`]}/>)}</footprint>
const buzzFp = <footprint><platedhole shape="circle" holeDiameter="0.8mm" outerDiameter="1.6mm" pcbX={-3.75} portHints={["pin1"]}/><platedhole shape="circle" holeDiameter="0.8mm" outerDiameter="1.6mm" pcbX={3.75} portHints={["pin2"]}/></footprint>
const mcuPins = {pin1:"PB9",pin2:"PC14",pin3:"PC15",pin4:["VDD","VDDA"],pin5:["VSS","VSSA"],pin6:"NRST",pin7:"PA0",pin8:"PA1",pin9:"PA2",pin10:"PA3",pin11:"PA4",pin12:"PA5",pin13:"PA6",pin14:"PA7",pin15:"PB0",pin16:"PB1",pin17:"PB2",pin18:"PA8",pin19:"PA9",pin20:"PC6",pin21:"PA10",pin22:"PA11",pin23:"PA12",pin24:["PA13","SWDIO"],pin25:["PA14","SWCLK","BOOT0"],pin26:"PA15",pin27:"PB3",pin28:"PB4",pin29:"PB5",pin30:"PB6",pin31:"PB7",pin32:"PB8"} as const
export default function Board(){return <board title="STM32 Expansion Lab V3 - PROTOTYPE" width="80mm" height="60mm" layers={2} solderMaskColor="green" autorouter="auto_local" autorouterVersion="beta_pipeline7" minTraceWidth="0.2mm" minViaHoleDiameter="0.3mm" minViaPadDiameter="0.6mm">
<schematicsection name="power" displayName="USB-C POWER + 3V3"/><schematicsection name="mcu" displayName="MCU + RESET"/><schematicsection name="io" displayName="USER I/O"/><schematicsection name="headers" displayName="SWD + EXPANSION"/>
{["POT_ADC","USER_BUTTON","LED_GREEN","LED_BLUE","BUZZER_BASE","BUZZER_LOW","NRST","SWDIO","SWCLK"].map(n=><net name={n}/>)}<net name="VBUS" isPowerNet nominalTraceWidth="0.4mm"/><net name="VCC_3V3" isPowerNet nominalTraceWidth="0.4mm"/><net name="GND" isGroundNet nominalTraceWidth="0.3mm"/>
<connector name="J1" displayName="USB-C POWER ONLY" standard="usb_c" manufacturerPartNumber="USB-C-POWER-ONLY-6P" pinLabels={{pin1:"VBUS",pin2:"GND",pin3:"CC1",pin4:"CC2",pin5:"D_PLUS",pin6:"D_MINUS"}} noConnect={["D_PLUS","D_MINUS"]} footprint={usbFp} schHeight={0.45} schSectionName="power" schX={-13} schY={8} pcbX={-8} pcbY={-13}/>
<resistor name="RF1" displayName="500mA PTC" resistance="0.3" footprint="1206" schRotation={90} schSectionName="power" schX={-9} schY={9} pcbX={-15} pcbY={-10}/>
<resistor name="RCC1" resistance="5.1k" footprint="0603" schRotation={-90} schSectionName="power" schX={-10.759} schY={5} pcbX={-9} pcbY={-9}/><resistor name="RCC2" resistance="5.1k" footprint="0603" schRotation={-90} schSectionName="power" schX={-8} schY={5} pcbX={-5.5} pcbY={-9}/>
<diode name="D1" displayName="VBUS TVS" footprint="sod323" schRotation={90} schSectionName="power" schX={-5} schY={7} pcbX={-16} pcbY={-7.5}/>
<chip name="U2" displayName="AP2112K-3.3" manufacturerPartNumber="AP2112K-3.3" footprint="sot23_5" pinLabels={{pin1:"VIN",pin2:"GND",pin3:"EN",pin4:"NC",pin5:"VOUT"}} noConnect={["NC"]} schPinArrangement={{leftSide:["VIN","EN","GND"],rightSide:["VOUT","NC"]}} schWidth={1.2} schHeight={0.6} schSectionName="power" schX={3.72} schY={8} pcbX={-8} pcbY={-5.5}/>
<capacitor name="C1" displayName="LDO IN" capacitance="1uF" footprint="0603" schRotation={-90} schSectionName="power" schX={-3} schY={5} pcbX={-12} pcbY={-5.5}/><capacitor name="C2" displayName="LDO OUT" capacitance="1uF" footprint="0603" schRotation={-90} schSectionName="power" schX={-5} schY={3} pcbX={-4} pcbY={-6.5}/>
<led name="LED_PWR" displayName="POWER" color="red" footprint="0603" schRotation={-90} schSectionName="power" schX={6} schY={7} pcbX={-1} pcbY={-11}/><resistor name="R1" resistance="1k" footprint="0603" schRotation={-90} schSectionName="power" schX={6} schY={5} pcbX={1} pcbY={-9}/>
<chip name="U1" displayName="STM32G031K8T6" manufacturerPartNumber="STM32G031K8T6" datasheetUrl="https://www.st.com/resource/en/datasheet/stm32g031k8.pdf" footprint="lqfp32_w7_h7" pinLabels={mcuPins} schPinArrangement={{leftSide:["VDD","VSS","NRST","PA0","PA1","PA2","PA3","PA4"],rightSide:["PA5","PA6","PA7","PB0","PB1","PA8","PA9","PA10"],topSide:["SWDIO","SWCLK","PB6","PB7","PB8","PB9"],bottomSide:["PC14","PC15","PB2","PC6","PA11","PA12","PA15","PB3","PB4","PB5"]}} noConnect={["PC14","PC15","PB2","PC6","PA11","PA12","PA15","PB3","PB4","PB5"]} schWidth={1.96} schHeight={2.36} schSectionName="mcu" schX={0} schY={0} pcbX={0} pcbY={0}/>
<capacitor name="C3" displayName="VDD 100nF" capacitance="100nF" footprint="0603" schRotation={-90} schSectionName="mcu" schX={-5} schY={1} pcbX={-7} pcbY={2}/><capacitor name="C4" displayName="VDD 4.7uF" capacitance="4.7uF" footprint="0603" schRotation={-90} schSectionName="mcu" schX={-5} schY={-1} pcbX={-7} pcbY={0}/>
<resistor name="R2" displayName="NRST PULL-UP" resistance="10k" footprint="0603" schRotation={-90} schSectionName="mcu" schX={-7} schY={-3} pcbX={-7} pcbY={-2}/><capacitor name="C5" displayName="NRST FILTER" capacitance="100nF" footprint="0603" schRotation={-90} schSectionName="mcu" schX={-5} schY={-4.5} pcbX={0} pcbY={-7}/><pushbutton name="SW_RST" displayName="RESET" footprint="pushbutton_4pin" schSectionName="mcu" schX={-8} schY={-5} pcbX={-15} pcbY={0}/>
<potentiometer name="RV1" displayName="ADC POT 10K" maxResistance="10k" footprint="pinrow3_p2.54" schSectionName="io" schX={-12} schY={-6} pcbX={1} pcbY={12}/><pushbutton name="SW_USER" displayName="USER" footprint="pushbutton_4pin" schSectionName="io" schX={-7} schY={-7} pcbX={-7} pcbY={10}/><resistor name="R3" displayName="BUTTON PULL-UP" resistance="10k" footprint="0603" schRotation={-90} schSectionName="io" schX={-7.67} schY={-6} pcbX={-12} pcbY={10}/>
<led name="LED1" displayName="GREEN" color="green" footprint="0603" schRotation={-90} schSectionName="io" schX={4} schY={-5} pcbX={-16} pcbY={13}/><resistor name="R4" resistance="1k" footprint="0603" schRotation={-90} schSectionName="io" schX={4} schY={-3.5} pcbX={-16} pcbY={11}/><led name="LED2" displayName="BLUE" color="blue" footprint="0603" schRotation={-90} schSectionName="io" schX={4.5} schY={-8} pcbX={7} pcbY={-6.5}/><resistor name="R5" resistance="1k" footprint="0603" schRotation={-90} schSectionName="io" schX={4.5} schY={-6.5} pcbX={7} pcbY={-4.5}/>
<resistor name="R6" displayName="BUZZER BASE" resistance="1k" footprint="0603" schSectionName="io" schX={10} schY={-4} pcbX={7} pcbY={-2}/><transistor name="Q1" displayName="BUZZER DRIVER" type="npn" footprint="sot23" schSectionName="io" schX={12} schY={-6} pcbX={10.5} pcbY={1}/><chip name="BZ1" displayName="PASSIVE BUZZER" footprint={buzzFp} pinLabels={{pin1:"POS",pin2:"NEG"}} schPinArrangement={{topSide:["POS"],bottomSide:["NEG"]}} schWidth={0.4} schSectionName="io" schX={12} schY={-9} pcbX={8} pcbY={9}/><diode name="D2" displayName="FLYBACK" footprint="sod323" schRotation={90} schSectionName="io" schX={15} schY={-8} pcbX={10} pcbY={6}/>
<pinheader name="J2" displayName="SWD" pinCount={5} pitch="2.54mm" gender="male" schWidth={0.675} pinLabels={["VREF","SWDIO","SWCLK","GND","NRST"]} schSectionName="headers" schX={11} schY={3} pcbX={8} pcbY={-12}/>
<pinheader name="J3" displayName="GPIO / SERIAL" pinCount={16} doubleRow pitch="2.54mm" gender="female" schWidth={0.865} pinLabels={["VCC_3V3","GND","PA2","PA3","PA5","PA6","PA7","PB6","PB7","PB8","PB9","PA8","PA9","PA10","VBUS","NRST"]} schSectionName="headers" schX={16} schY={2} pcbX={16} pcbY={1} pcbRotation={90}/>
<trace from=".J1 > .VBUS" to=".RF1 > .pin1"/><trace thickness="0.4mm" from=".RF1 > .pin2" to="net.VBUS"/><trace thickness="0.3mm" from=".J1 > .GND" to="net.GND"/><trace from=".J1 > .CC1" to=".RCC1 > .pin1"/><trace thickness="0.3mm" from=".RCC1 > .pin2" to="net.GND"/><trace from=".J1 > .CC2" to=".RCC2 > .pin1"/><trace thickness="0.3mm" from=".RCC2 > .pin2" to="net.GND"/>
<trace thickness="0.4mm" from="net.VBUS" to=".D1 > .cathode"/><trace thickness="0.3mm" from=".D1 > .anode" to="net.GND"/><trace thickness="0.4mm" from="net.VBUS" to=".U2 > .VIN"/><trace thickness="0.4mm" from="net.VBUS" to=".U2 > .EN"/><trace thickness="0.3mm" from=".U2 > .GND" to="net.GND"/><trace thickness="0.4mm" from=".U2 > .VOUT" to="net.VCC_3V3"/>
<trace thickness="0.4mm" from="net.VBUS" to=".C1 > .pin1"/><trace thickness="0.3mm" from=".C1 > .pin2" to="net.GND"/><trace thickness="0.4mm" from="net.VCC_3V3" to=".C2 > .pin1"/><trace thickness="0.3mm" from=".C2 > .pin2" to="net.GND"/><trace thickness="0.4mm" from="net.VCC_3V3" to=".LED_PWR > .anode"/><trace from=".LED_PWR > .cathode" to=".R1 > .pin1"/><trace thickness="0.3mm" from=".R1 > .pin2" to="net.GND"/>
<trace thickness="0.4mm" from="net.VCC_3V3" to=".U1 > .VDD"/><trace thickness="0.3mm" from=".U1 > .VSS" to="net.GND"/>{["C3","C4"].map(n=><trace thickness="0.4mm" key={n+"p"} from="net.VCC_3V3" to={`.${n} > .pin1`}/>) }{["C3","C4"].map(n=><trace thickness="0.3mm" key={n+"g"} from={`.${n} > .pin2`} to="net.GND"/>)}
<trace thickness="0.4mm" from="net.VCC_3V3" to=".R2 > .pin1"/><trace from=".R2 > .pin2" to="net.NRST"/><trace from="net.NRST" to=".C5 > .pin1"/><trace thickness="0.3mm" from=".C5 > .pin2" to="net.GND"/><trace from="net.NRST" to=".SW_RST > .pin1"/><trace thickness="0.3mm" from=".SW_RST > .pin2" to="net.GND"/><trace from="net.NRST" to=".U1 > .NRST"/>
<trace thickness="0.4mm" from="net.VCC_3V3" to=".RV1 > .pin1"/><trace from=".RV1 > .pin2" to="net.POT_ADC"/><trace thickness="0.3mm" from=".RV1 > .pin3" to="net.GND"/><trace from="net.POT_ADC" to=".U1 > .PA0"/><trace thickness="0.4mm" from="net.VCC_3V3" to=".R3 > .pin1"/><trace from=".R3 > .pin2" to="net.USER_BUTTON"/><trace from="net.USER_BUTTON" to=".SW_USER > .pin1"/><trace thickness="0.3mm" from=".SW_USER > .pin2" to="net.GND"/><trace from="net.USER_BUTTON" to=".U1 > .PA1"/>
<trace from=".U1 > .PB0" to="net.LED_GREEN"/><trace from="net.LED_GREEN" to=".R4 > .pin1"/><trace from=".R4 > .pin2" to=".LED1 > .anode"/><trace thickness="0.3mm" from=".LED1 > .cathode" to="net.GND"/><trace from=".U1 > .PB1" to="net.LED_BLUE"/><trace from="net.LED_BLUE" to=".R5 > .pin1"/><trace from=".R5 > .pin2" to=".LED2 > .anode"/><trace thickness="0.3mm" from=".LED2 > .cathode" to="net.GND"/>
<trace from=".U1 > .PA4" to=".R6 > .pin1"/><trace from=".R6 > .pin2" to="net.BUZZER_BASE"/><trace from="net.BUZZER_BASE" to=".Q1 > .base"/><trace thickness="0.3mm" from=".Q1 > .emitter" to="net.GND"/><trace from=".Q1 > .collector" to="net.BUZZER_LOW"/><trace thickness="0.4mm" from="net.VCC_3V3" to=".BZ1 > .POS"/><trace from=".BZ1 > .NEG" to="net.BUZZER_LOW"/><trace from="net.BUZZER_LOW" to=".D2 > .anode"/><trace thickness="0.4mm" from=".D2 > .cathode" to="net.VCC_3V3"/>
<trace from=".U1 > .SWDIO" to="net.SWDIO"/><trace from=".U1 > .SWCLK" to="net.SWCLK"/><trace thickness="0.4mm" from=".J2 > .VREF" to="net.VCC_3V3"/><trace from=".J2 > .SWDIO" to="net.SWDIO"/><trace from=".J2 > .SWCLK" to="net.SWCLK"/><trace thickness="0.3mm" from=".J2 > .GND" to="net.GND"/><trace from=".J2 > .NRST" to="net.NRST"/>
<trace thickness="0.4mm" from=".J3 > .VCC_3V3" to="net.VCC_3V3"/><trace thickness="0.3mm" from=".J3 > .GND" to="net.GND"/><trace thickness="0.4mm" from=".J3 > .VBUS" to="net.VBUS"/><trace from=".J3 > .NRST" to="net.NRST"/>{(["PA2","PA3","PA5","PA6","PA7","PB6","PB7","PB8","PB9","PA8","PA9","PA10"] as const).map(p=><trace key={p} from={`.U1 > .${p}`} to={`.J3 > .${p}`}/>)}
<schematicsection name="peripherals" displayName="EEPROM + EXPANDED INTERFACES"/>
<net name="I2C_SCL"/><net name="I2C_SDA"/>
<chip name="U3" displayName="24LC256-I/SN" manufacturerPartNumber="24LC256-I/SN" footprint="soic8" pinLabels={{pin1:"A0",pin2:"A1",pin3:"A2",pin4:"VSS",pin5:"SDA",pin6:"SCL",pin7:"WP",pin8:"VCC"}} schSectionName="peripherals" schX={0} schY={-17} pcbX={19} pcbY={-14}/>
<capacitor name="C6" capacitance="100nF" footprint="0603" schRotation={-90} schSectionName="peripherals" schX={-4} schY={-17} pcbX={19} pcbY={-18}/>
<capacitor name="C7" capacitance="1uF" footprint="0603" schRotation={-90} schSectionName="peripherals" schX={-7} schY={-17} pcbX={-20} pcbY={13.5}/>
<capacitor name="C8" capacitance="10uF" footprint="0805" schRotation={-90} schSectionName="peripherals" schX={-10} schY={-17} pcbX={-8} pcbY={-17}/>
<resistor name="R7" resistance="4.7k" footprint="0603" schRotation={-90} schSectionName="peripherals" schX={4} schY={-14} pcbX={22} pcbY={1}/>
<resistor name="R8" resistance="4.7k" footprint="0603" schRotation={-90} schSectionName="peripherals" schX={7} schY={-14} pcbX={22} pcbY={4}/>
<pinheader name="J4" displayName="I2C OLED / SENSOR" pinCount={4} pitch="2.54mm" pinLabels={["VCC","GND","SCL","SDA"]} schSectionName="peripherals" schX={5} schY={-18} pcbX={-17} pcbY={17}/>
<pinheader name="J5" displayName="3V3 UART" pinCount={4} pitch="2.54mm" pinLabels={["VCC","GND","TX","RX"]} schSectionName="peripherals" schX={10} schY={-18} pcbX={-5} pcbY={17}/>
<pinheader name="J6" displayName="SPI1" pinCount={6} pitch="2.54mm" pinLabels={["VCC","GND","SCK","MISO","MOSI","CS"]} schSectionName="peripherals" schX={15} schY={-18} pcbX={12} pcbY={17}/>
<testpoint name="TP1" footprintVariant="pad" padDiameter="1.5mm" schSectionName="peripherals" schX={-10} schY={-21} pcbX={-22} pcbY={8}/>
<testpoint name="TP2" footprintVariant="pad" padDiameter="1.5mm" schSectionName="peripherals" schX={-6} schY={-21} pcbX={-22} pcbY={11}/>
<testpoint name="TP3" footprintVariant="pad" padDiameter="1.5mm" schSectionName="peripherals" schX={-2} schY={-21} pcbX={22} pcbY={10}/>
<testpoint name="TP4" footprintVariant="pad" padDiameter="1.5mm" schSectionName="peripherals" schX={2} schY={-21} pcbX={22} pcbY={13}/>
<trace from=".U1 > .PB6" to="net.I2C_SCL"/><trace from=".U1 > .PB7" to="net.I2C_SDA"/>
<trace from=".U3 > .SCL" to="net.I2C_SCL"/><trace from=".U3 > .SDA" to="net.I2C_SDA"/>
<trace from=".R7 > .pin2" to="net.I2C_SCL"/><trace from=".R8 > .pin2" to="net.I2C_SDA"/>
<trace thickness="0.4mm" from=".R7 > .pin1" to="net.VCC_3V3"/><trace thickness="0.4mm" from=".R8 > .pin1" to="net.VCC_3V3"/>
<trace thickness="0.4mm" from=".U3 > .VCC" to="net.VCC_3V3"/>
{["VSS","A0","A1","A2","WP"].map(pin=><trace from={`.U3 > .${pin}`} to="net.GND" thickness="0.3mm"/>)}
{["C6","C7","C8"].map(name=><trace from={`.${name} > .pin1`} to="net.VCC_3V3" thickness="0.4mm"/>)}
{["C6","C7","C8"].map(name=><trace from={`.${name} > .pin2`} to="net.GND" thickness="0.3mm"/>)}
{["J4","J5","J6"].map(name=><trace from={`.${name} > .VCC`} to="net.VCC_3V3" thickness="0.4mm"/>)}
{["J4","J5","J6"].map(name=><trace from={`.${name} > .GND`} to="net.GND" thickness="0.3mm"/>)}
<trace from=".J4 > .SCL" to="net.I2C_SCL"/><trace from=".J4 > .SDA" to="net.I2C_SDA"/>
<trace from=".J5 > .TX" to=".U1 > .PA2"/><trace from=".J5 > .RX" to=".U1 > .PA3"/>
<trace from=".J6 > .SCK" to=".U1 > .PA5"/><trace from=".J6 > .MISO" to=".U1 > .PA6"/><trace from=".J6 > .MOSI" to=".U1 > .PA7"/><trace from=".J6 > .CS" to=".U1 > .PA8"/>
<trace from=".TP1 > .pin1" to="net.VCC_3V3" thickness="0.4mm"/><trace from=".TP2 > .pin1" to="net.GND" thickness="0.3mm"/>
<trace from=".TP3 > .pin1" to="net.I2C_SCL"/><trace from=".TP4 > .pin1" to="net.I2C_SDA"/>
<schematicsection name="expander" displayName="I2C GPIO EXPANDER + LED BANK"/>
{/* MCP23008 SOIC-18 mapping from Microchip DS20001919. Address 0x20. */}
<chip name="U4" manufacturerPartNumber="MCP23008-I/SO" footprint="soic18_w7.5" pinLabels={{pin1:"SCL",pin2:"SDA",pin3:"A2",pin4:"A1",pin5:"A0",pin6:"RESET",pin7:"NC",pin8:"INT",pin9:"VSS",pin10:"GP0",pin11:"GP1",pin12:"GP2",pin13:"GP3",pin14:"GP4",pin15:"GP5",pin16:"GP6",pin17:"GP7",pin18:"VDD"}} noConnect={["NC"]} schWidth={3} schHeight={4} schSectionName="expander" schX={-20} schY={-29} pcbX={-29} pcbY={-5}/>
<capacitor name="C9" capacitance="100nF" footprint="0603" schRotation={-90} schSectionName="expander" schX={-25} schY={-27} pcbX={-29} pcbY={2}/>
<resistor name="R9" resistance="10k" footprint="0603" schRotation={-90} schSectionName="expander" schX={-25} schY={-30} pcbX={-35} pcbY={-4}/>
<resistor name="R10" resistance="10k" footprint="0603" schRotation={-90} schSectionName="expander" schX={-25} schY={-33} pcbX={-35} pcbY={-7}/>
<pinheader name="J7" displayName="EXPANDER GPIO" pinCount={10} pitch="2.54mm" pinLabels={["VCC","GND","GP0","GP1","GP2","GP3","GP4","GP5","GP6","GP7"]} schSectionName="expander" schX={-14} schY={-29} pcbX={0} pcbY={-25}/>
<net name="EXP_INT"/><net name="EXP_RESET"/>
<trace from=".U4 > .SCL" to="net.I2C_SCL"/><trace from=".U4 > .SDA" to="net.I2C_SDA"/>
{["A0","A1","A2","VSS"].map(pin=><trace key={pin} from={`.U4 > .${pin}`} to="net.GND" thickness="0.3mm"/>)}
<trace from=".U4 > .VDD" to="net.VCC_3V3" thickness="0.4mm"/>
<trace from=".C9 > .pin1" to="net.VCC_3V3" thickness="0.4mm"/><trace from=".C9 > .pin2" to="net.GND" thickness="0.3mm"/>
<trace from=".R9 > .pin1" to="net.VCC_3V3" thickness="0.4mm"/><trace from=".R9 > .pin2" to="net.EXP_RESET"/><trace from="net.EXP_RESET" to=".U4 > .RESET"/>
<trace from=".R10 > .pin1" to="net.VCC_3V3" thickness="0.4mm"/><trace from=".R10 > .pin2" to="net.EXP_INT"/><trace from="net.EXP_INT" to=".U4 > .INT"/><trace from="net.EXP_INT" to=".U1 > .PB8"/>
<trace from=".J7 > .VCC" to="net.VCC_3V3" thickness="0.4mm"/><trace from=".J7 > .GND" to="net.GND" thickness="0.3mm"/>
{/* Active-low LEDs: GPIO outputs sink through 2.2k; header pins share these loads. */}
{Array.from({length:8},(_,i)=>[
<net name={`EXP_GP${i}`}/>,
<resistor name={`R${11+i}`} resistance="2.2k" footprint="0603" layer="bottom" schRotation={-90} schSectionName="expander" schX={-9+i*3} schY={-25} pcbX={-21+i*6} pcbY={22}/>,
<led name={`LED${3+i}`} color="green" footprint="0603" schRotation={-90} schSectionName="expander" schX={-9+i*3} schY={-28} pcbX={-21+i*6} pcbY={25}/>,
<trace from={`.R${11+i} > .pin1`} to="net.VCC_3V3" thickness="0.4mm"/>,
<trace from={`.R${11+i} > .pin2`} to={`.LED${3+i} > .anode`}/>,
<trace from={`.LED${3+i} > .cathode`} to={`net.EXP_GP${i}`}/>,
<trace from={`.U4 > .GP${i}`} to={`net.EXP_GP${i}`}/>,
<trace from={`.J7 > .GP${i}`} to={`net.EXP_GP${i}`}/>,
])}
<hole name="mount_tl" diameter="3.2mm" pcbX={-36} pcbY={26}/>
<hole name="mount_tr" diameter="3.2mm" pcbX={36} pcbY={26}/>
<hole name="mount_bl" diameter="3.2mm" pcbX={-36} pcbY={-26}/>
<hole name="mount_br" diameter="3.2mm" pcbX={36} pcbY={-26}/>
<copperpour name="GND_BOTTOM" layer="bottom" connectsTo="net.GND" clearance="0.3mm" boardEdgeMargin="0.5mm"/>
</board>}