gokul/musegrow

USB‑C powered ESP32‑C3 controller board with regulated 3.3 V supply, USB ESD protection, buttons/status LEDs, ambient-light I²C sensing, and a 555-driven capacitive soil-moisture electrode.

Version
1.2.2
License
unset
Stars
1

lib/controller-sheet.tsx

import { ESP32_C3_WROOM_02_N4 } from "../imports/ESP32_C3_WROOM_02_N4"
import { TS_1187A_B_A_B } from "../imports/TS_1187A_B_A_B"
import { XL_1608UBC_04 } from "../imports/XL_1608UBC_04"
import { TestPoint } from "./test-point"

const resistor10kSupplierPartNumbers = { jlcpcb: ["C25804"] }
const resistor1kSupplierPartNumbers = { jlcpcb: ["C21190"] }

const ButtonToGround = (props: {
  name: string
  signalNet: string
  pcbX: number
  pcbY: number
}) => (
  <>
    <TS_1187A_B_A_B name={props.name} pcbX={props.pcbX} pcbY={props.pcbY} />
    <trace from={`${props.name}.A`} to={props.signalNet} />
    <trace from={`${props.name}.C`} to={props.signalNet} />
    <trace from={`${props.name}.B`} to="net.GND" />
    <trace from={`${props.name}.D`} to="net.GND" />
  </>
)

export const ControllerSheet = () => (
  <schematicsheet
    name="controller"
    displayName="Controller and Controls"
    sheetIndex={1}
    sheetSize="A4"
  >
    <ESP32_C3_WROOM_02_N4
      name="U1"
      pcbX={0}
      pcbY={28}
    />

    <capacitor
      name="C4"
      capacitance="100nF"
      footprint="0603"
      pcbX={-12.5}
      pcbY={35.8}
      supplierPartNumbers={{ jlcpcb: ["C14663"] }}
    />
    <capacitor
      name="C5"
      capacitance="10uF"
      footprint="0805"
      pcbX={-16}
      pcbY={38.5}
      pcbRotation={180}
      supplierPartNumbers={{ jlcpcb: ["C15850"] }}
    />

    <resistor
      name="R6"
      resistance="10k"
      footprint="0603"
      pcbX={-12.5}
      pcbY={32.5}
      supplierPartNumbers={resistor10kSupplierPartNumbers}
    />
    <capacitor
      name="C6"
      capacitance="1uF"
      footprint="0603"
      pcbX={-12.5}
      pcbY={29.75}
      pcbRotation={180}
      supplierPartNumbers={{ jlcpcb: ["C113807"] }}
    />
    <ButtonToGround name="SW1" signalNet="net.MCU_EN" pcbX={-18} pcbY={33} />

    <resistor
      name="R7"
      resistance="10k"
      footprint="0603"
      pcbX={-12.5}
      pcbY={26.5}
      supplierPartNumbers={resistor10kSupplierPartNumbers}
    />
    <ButtonToGround name="SW2" signalNet="net.MCU_BOOT" pcbX={-18} pcbY={26.5} />

    <resistor
      name="R8"
      resistance="10k"
      footprint="0603"
      pcbX={12.5}
      pcbY={25}
      supplierPartNumbers={resistor10kSupplierPartNumbers}
    />
    <ButtonToGround name="SW3" signalNet="net.USER_BUTTON" pcbX={18} pcbY={26.5} />

    <resistor
      name="R9"
      resistance="10k"
      footprint="0603"
      pcbX={-12.5}
      pcbY={23}
      supplierPartNumbers={resistor10kSupplierPartNumbers}
    />
    <resistor
      name="R10"
      resistance="10k"
      footprint="0603"
      pcbX={12.5}
      pcbY={27.5}
      supplierPartNumbers={resistor10kSupplierPartNumbers}
    />

    <resistor
      name="R11"
      resistance="1k"
      footprint="0603"
      pcbX={12}
      pcbY={32}
      supplierPartNumbers={resistor1kSupplierPartNumbers}
    />
    <XL_1608UBC_04
      name="LED2"
      color="blue"
      pcbX={15}
      pcbY={32}
    />

    <TestPoint name="TP4" pcbX={13} pcbY={22.5} />
    <TestPoint name="TP5" pcbX={16} pcbY={22.5} />
    <TestPoint name="TP6" pcbX={-12.5} pcbY={20} />

    <trace from="U1.3V3" to="net.V3_3" />
    <trace from="U1.GND" to="net.GND" />
    <trace from="U1.EP" to="net.GND" />
    <trace from="C4.pin1" to="net.V3_3" />
    <trace from="C4.pin2" to="net.GND" />
    <trace from="C5.pin1" to="net.V3_3" />
    <trace from="C5.pin2" to="net.GND" />

    <trace from="U1.EN" to="net.MCU_EN" />
    <trace from="R6.pin1" to="net.V3_3" />
    <trace from="R6.pin2" to="net.MCU_EN" />
    <trace from="C6.pin1" to="net.MCU_EN" />
    <trace from="C6.pin2" to="net.GND" />

    <trace from="U1.IO9" to="net.MCU_BOOT" />
    <trace from="R7.pin1" to="net.V3_3" />
    <trace from="R7.pin2" to="net.MCU_BOOT" />
    <trace from="U1.IO3" to="net.USER_BUTTON" />
    <trace from="R8.pin1" to="net.V3_3" />
    <trace from="R8.pin2" to="net.USER_BUTTON" />
    <trace from="U1.IO8" to="net.STRAP_IO8" />
    <trace from="R9.pin2" to="net.STRAP_IO8" />
    <trace from="R9.pin1" to="net.V3_3" />
    <trace name="IO2_PULL" from="U1.IO2" to="R10.pin2" />
    <trace from="R10.pin1" to="net.V3_3" />

    <trace from="U1.IO4" to="net.STATUS_LED_DRIVE" />
    <trace from="R11.pin1" to="net.STATUS_LED_DRIVE" />
    <trace from="R11.pin2" to="net.STATUS_LED_ANODE" />
    <trace from="LED2.pos" to="net.STATUS_LED_ANODE" />
    <trace from="LED2.neg" to="net.GND" />
    <trace from="U1.IO5" to="net.I2C_SDA" />
    <trace from="U1.IO6" to="net.I2C_SCL" />
    <trace from="U1.IO18" to="net.USB_DN" />
    <trace from="U1.IO19" to="net.USB_DP" />
    <trace from="U1.IO1" to="net.SOIL_FREQ" />
    <trace name="RX_TP" from="U1.RXD" to="TP4.pin1" />
    <trace name="TX_TP" from="U1.TXD" to="TP5.pin1" />
    <trace from="TP6.pin1" to="net.MCU_EN" />
  </schematicsheet>
)