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

index.circuit.tsx

PCBPCB preview for index.circuit.tsx
SchematicSchematic preview for index.circuit.tsx
import { ControllerSheet } from "./lib/controller-sheet"
import { PowerAndUsbSheet } from "./lib/power-and-usb-sheet"
import { SensorsAndIoSheet } from "./lib/sensors-and-io-sheet"
import { SoilElectrodes } from "./lib/soil-electrodes"

const boardOutline = [
  { x: -22, y: 42 },
  { x: 22, y: 42 },
  { x: 22, y: 8 },
  { x: 7, y: 8 },
  { x: 7, y: -40 },
  { x: 5, y: -42 },
  { x: -5, y: -42 },
  { x: -7, y: -40 },
  { x: -7, y: 8 },
  { x: -22, y: 8 },
]

const electronicsCopperOutline = [
  { x: -21.7, y: 8.3 },
  { x: 21.7, y: 8.3 },
  { x: 21.7, y: 41.7 },
  { x: -21.7, y: 41.7 },
]

export default () => (
  <board
    title="MuseGrow V2.1"
    outline={boardOutline}
    layers={2}
    thickness="1.6mm"
    material="fr4"
    autorouter="auto"
    autorouterVersion="latest"
    autorouterEffortLevel="10x"
    defaultTraceWidth="0.2mm"
    schAutoLayoutEnabled
  >
    <PowerAndUsbSheet />
    <ControllerSheet />
    <SensorsAndIoSheet />
    <SoilElectrodes />

    <keepout
      shape="rect"
      pcbX={0}
      pcbY={38.5}
      width="20mm"
      height="7mm"
      excludeRefs={[".U1"]}
    />

    <copperpour
      name="GND_TOP"
      connectsTo="net.GND"
      layer="top"
      outline={electronicsCopperOutline}
      clearance="0.2mm"
      boardEdgeMargin="0.3mm"
    />
    <copperpour
      name="GND_BOTTOM"
      connectsTo="net.GND"
      layer="bottom"
      outline={electronicsCopperOutline}
      clearance="0.2mm"
      boardEdgeMargin="0.3mm"
    />

    <silkscreentext text="MUSEGROW V2.1" pcbX={0} pcbY={10} fontSize="1mm" />
    <silkscreentext text="RESET" pcbX={-18} pcbY={36.3} fontSize="0.8mm" />
    <silkscreentext text="BOOT" pcbX={-18} pcbY={29.5} fontSize="0.8mm" />
    <silkscreentext text="PAIR" pcbX={18} pcbY={29.5} fontSize="0.8mm" />
    <silkscreentext text="PWR" pcbX={10} pcbY={20.2} fontSize="0.8mm" />
    <silkscreentext text="STATUS" pcbX={15} pcbY={33.6} fontSize="0.8mm" />
    <silkscreentext text="MAX SOIL" pcbX={0} pcbY={3.2} fontSize="0.7mm" />
    <silkscreenpath route={[{ x: -6.5, y: 2 }, { x: 6.5, y: 2 }]} />
    <silkscreentext text="ANTENNA KEEP CLEAR" pcbX={0} pcbY={40.5} fontSize="0.7mm" />
  </board>
)