AnasSarkiz/ESP32_module

This circuit implements an ESP32-based wireless communication module with integrated crystal oscillator, decoupling capacitors, antenna, and multiple serial flash and RAM chips for storage.

Usage: To import and use the ESP32 module component: 1. Import the component: ```tsx import { ESP32Module } from "@tsci/AnasSarkiz.ESP32_module" ``` 2. Use in a circuit: ```tsx <board> <ESP32Module name="ESP32_1" /> </board> ``` The component includes a pre-configured ESP32 module with associated capacitors, resistors, and other supporting components. It can be directly added to a circuit board design.

Version
0.0.1
License
unset
Stars
5

index.ts

PCBPCB preview for index.ts
SchematicSchematic preview for index.ts
import { useESP32_D0WD } from "@tsci/AnasSarkiz.ESP32_D0WD"
import { useResistor, useCapacitor } from "@tscircuit/core"
export const ESP32Module = (props: { name: string }) => {
  const ESP32 = useESP32_D0WD("U2")

  // Capacitors
  const C1 = useCapacitor("C1", { capacitance: "0F" }) //TDB
  const C2 = useCapacitor("C2", { capacitance: "0F" }) //TDB
  const C3 = useCapacitor("C3", { capacitance: "100pF" })
  const C4 = useCapacitor("C4", { capacitance: "0.1uF" })
  const C5 = useCapacitor("C5", { capacitance: "10nF" }) // 10nF/6.3V (10%)
  const C6 = useCapacitor("C6", { capacitance: "3.3nF" }) // 3.3nf/6.3V (10%)
  const C9 = useCapacitor("C9", { capacitance: "1nF" })
  const C10 = useCapacitor("C10", { capacitance: "0.1uF" })
  const C11 = useCapacitor("C11", { capacitance: "1uF" })
  const C13 = useCapacitor("C13", { capacitance: "10uF" })
  const C14 = useCapacitor("C14", { capacitance: "0" }) // TBD
  const C15 = useCapacitor("C15", { capacitance: "0" }) // TBD
  const C19 = useCapacitor("C19", { capacitance: "0.1uF" })
  const C20 = useCapacitor("C20", { capacitance: "1uF" })
  const C21 = useCapacitor("C21", { capacitance: "0" }) // NC
  const C24 = useCapacitor("C24", { capacitance: "1uF" })

  // Resistors
  const R1 = useResistor("R1", { resistance: "20k" })
  const R2 = useResistor("R2", { resistance: "0Ω" }) //TDB
  const R3 = useResistor("R3", { resistance: "499Ω" })
  const R4 = useResistor("R4", { resistance: "2k" })
  const R9 = useResistor("R9", { resistance: "10k" })
  const R10 = useResistor("R10", { resistance: "1k" })

  return (
    <group subcircuit routingDisabled>
      <ESP32 />

      {/* Capacitors */}
      <C1
        pos=".U1 .XIN"
        neg="net.GND"
        schX={0.5}
        schY={9}
        schRotation="270deg"
      />
      <C2
        neg="net.GND"
        pos={ESP32.XTAL_N}
        schX={4.5}
        schY={9}
        schRotation="270deg"
      />
      <C3
        neg="net.GND"
        pos=".C20 .pos"
        schX={-10}
        schY={9.1}
        schRotation="90deg"
      />
      <C4
        neg="net.GND"
        pos={ESP32.VDD3P3_CPU}
        schX={4.8}
        schY={3}
        schRotation="270deg"
      />
      <C5
        neg="net.GND"
        pos=".C6 .pos"
        schX={-4}
        schY={5.7}
        schRotation="270deg"
      />
      <C6 neg={ESP32.CAP1} pos={ESP32.CAP2} schX={-1.5} schY={5} />
      <C9
        neg="net.GND"
        pos={ESP32.VDDA}
        schX={-7.8}
        schY={5.5}
        schRotation="90deg"
      />
      <C10
        neg="net.GND"
        pos=".L4 .pin1"
        schX={-10}
        schY={3}
        schRotation="90deg"
      />
      <C11
        neg="net.GND"
        pos=".C10 .pos"
        schX={-12}
        schY={3}
        schRotation="90deg"
      />
      <C13
        neg="net.GND"
        pos=".C11 .pos"
        schX={-14}
        schY={3}
        schRotation="90deg"
      />
      <C14
        neg="net.GND"
        pos={ESP32.pin2}
        schX={-8}
        schY={1.1}
        schRotation="90deg"
      />
      <C15
        neg="net.GND"
        pos=".L5 .pin1"
        schX={-10}
        schY={1.1}
        schRotation="90deg"
      />
      <C19
        neg="net.GND"
        pos={ESP32.VDD3P3_RTC}
        schX={5}
        schY={-6}
        schRotation="90deg"
      />
      <C20
        neg="net.GND"
        pos={ESP32.pin46}
        schX={-8}
        schY={9.5}
        schRotation="90deg"
      />
      <C21 neg="net.GND" schX={-8} schY={3} schRotation="90deg" />
      <C24
        neg="net.GND"
        pos=".R4 .pin2"
        schX={7}
        schY={-3}
        schRotation="90deg"
      />

      {/* Resistors */}
      <R1 pin1=".C6 .pos" pin2=".C6 .neg" schX={-1.3} schY={6} />
      <R2
        pin1={ESP32.XTAL_P}
        pin2=".C1 .pos"
        schX={0.5}
        schY={5}
        schRotation="90deg"
      />
      <R3 pin1={ESP32.U0TXD} pin2="net.U0TXD" schX={4} schY={6} />
      <R4
        pin1="net.GND"
        pin2={ESP32.VDD_SDIO}
        schX={5}
        schY={-3}
        schRotation="90deg"
      />
      <R9 pin1="net.VDD33" pin2={ESP32.MTDI} schX={-3} schY={-5.58} />
      <R10
        pin1=".U4 .pin1"
        pin2="net.VDD_SDIO"
        schX={10.5}
        schY={-1.2}
        schRotation="90deg"
      />
      <inductor name="L4" inductance="2.0nH" schX={-9} schY={3.5} />
      <inductor name="L5" inductance="TBD" schX={-9} schY={1.58} />
      <chip
        name="ANT1"
        manufacturerPartNumber="ANT-2.4-CW-RCL"
        schPortArrangement={{
          rightSide: {
            pins: ["pin2", "pin1"],
            direction: "top-to-bottom",
          },
        }}
        schX={-14}
        schY={1.1}
      />
      <chip
        name="U1"
        manufacturerPartNumber="ATS400B"
        schPortArrangement={{
          topSide: {
            pins: ["pin1", "pin2"],
            direction: "top-to-bottom",
          },
          bottomSide: {
            pins: ["pin3", "pin4"],
            direction: "top-to-bottom",
          },
        }}
        pinLabels={{
          pin1: "XIN",
          pin2: "GND",
          pin3: "XOUT",
          pin4: "GND",
        }}
        schPinSpacing={0.35}
        schHeight={1}
        schWidth={1}
        schX={2.2}
        schY={9}
      />
      <chip
        name="U3"
        manufacturerPartNumber="W25Q32JVSSIQ"
        schPortArrangement={{
          leftSide: {
            pins: ["pin1", "pin6", "pin7"],
            direction: "top-to-bottom",
          },
          bottomSide: {
            pins: ["pin4"],
            direction: "top-to-bottom",
          },
          rightSide: {
            pins: ["pin5", "pin2", "pin3"],
            direction: "top-to-bottom",
          },
          topSide: {
            pins: ["pin8"],
            direction: "top-to-bottom",
          },
        }}
        pinLabels={{
          pin1: "/CS",
          pin2: "DO",
          pin3: "/WP",
          pin4: "GND",
          pin5: "DI",
          pin6: "CLK",
          pin7: "/HOLD",
          pin8: "VDD_SDIO",
        }}
        schPinSpacing={0.35}
        schHeight={1.5}
        schWidth={1}
        schX={12}
        schY={2}
      />
      <chip
        name="U4"
        manufacturerPartNumber="LY68L6400SLIT"
        schPortArrangement={{
          leftSide: {
            pins: ["pin1", "pin6", "pin7"],
            direction: "top-to-bottom",
          },
          bottomSide: {
            pins: ["pin4"],
            direction: "top-to-bottom",
          },
          rightSide: {
            pins: ["pin5", "pin2", "pin3"],
            direction: "top-to-bottom",
          },
          topSide: {
            pins: ["pin8"],
            direction: "top-to-bottom",
          },
        }}
        pinLabels={{
          pin1: "CS",
          pin2: "SO/SIO1",
          pin3: "SIO2",
          pin4: "VSS",
          pin5: "SI/SIOO",
          pin6: "SCLK",
          pin7: "SIO3",
          pin8: "VDD_SDIO",
        }}
        schPinSpacing={0.35}
        schHeight={1.5}
        schWidth={1}
        schX={12}
        schY={-3}
      />

      <trace from=".C21 .pos" to=".L4 .pin2" />
      <trace from=".C14 .pos" to=".L5 .pin2" />
      <trace from=".C3 .pos" to="net.VDD33" />
      <trace from=".C13 .pos" to="net.VDD33" />
      <trace from=".C9 .pos" to="net.VDD33" />
      <trace from=".C19 .pos" to="net.VDD33" />
      <trace from=".C4 .pos" to="net.VDD33" />
      <trace from=".C24 .pos" to="net.VDD_SDIO" />

      <trace from={ESP32.pin3} to={ESP32.pin4} />
      <trace from={ESP32.pin3} to=".C21 .pos" />
      <trace from={ESP32.SENSOR_VP} to="net.SENSOR_VP" />
      <trace from={ESP32.SENSOR_CAPP} to="net.SENSOR_CAPP" />
      <trace from={ESP32.SENSOR_CAPN} to="net.SENSOR_CAPN" />
      <trace from={ESP32.SENSOR_CAPN} to="net.SENSOR_CAPN" />
      <trace from={ESP32.SENSOR_VN} to="net.SENSOR_VN" />
      <trace from={ESP32.CHIP_PU} to="net.EN" />
      <trace from={ESP32.VDET_1} to="net.GPIO34" />
      <trace from={ESP32.VDET_2} to="net.GPIO35" />
      <trace from={ESP32.pin12} to="net.GPIO32" />
      <trace from={ESP32.pin13} to="net.GPIO33" />
      <trace from={ESP32.GPIO25} to="net.GPIO25" />
      <trace from={ESP32.GPIO26} to="net.GPIO26" />
      <trace from={ESP32.GPIO27} to="net.GPIO27" />
      <trace from={ESP32.MTMS} to="net.GPIO14" />
      <trace from={ESP32.MTDI} to="net.GPIO12" />
      <trace from={ESP32.MTCK} to="net.GPIO13" />
      <trace from={ESP32.MTDO} to="net.GPIO15" />
      <trace from={ESP32.GPIO2} to="net.GPIO2" />
      <trace from={ESP32.GPIO0} to="net.GPIO0" />
      <trace from={ESP32.GPIO4} to="net.GPIO4" />
      <trace from={ESP32.GPIO16} to="net.GPIO16" />
      <trace from={ESP32.GPIO17} to="net.GPIO17" />
      <trace from={ESP32.SD_DATA_2} to="net.SHD/SD2" />
      <trace from={ESP32.SD_DATA_3} to="net.SWP/SD3" />
      <trace from={ESP32.SD_CMD} to="net.SCS/SMD" />
      <trace from={ESP32.SD_CLK} to="net.SCK/CLK" />
      <trace from={ESP32.SD_DATA_0} to="net.SDO/SD0" />
      <trace from={ESP32.SD_DATA_1} to="net.SDI/SD1" />
      <trace from={ESP32.GPIO5} to="net.GPIO51" />
      <trace from={ESP32.GPIO18} to="net.GPIO18" />
      <trace from={ESP32.GPIO23} to="net.GPIO23" />
      <trace from={ESP32.GPIO19} to="net.GPIO19" />
      <trace from={ESP32.GPIO19} to={ESP32.VDD3P3_CPU} />
      <trace from={ESP32.GPIO22} to="net.GPIO22" />
      <trace from={ESP32.U0RXD} to="net.U0RXD" />
      <trace from={ESP32.GPIO21} to="net.GPIO21" />
      <trace from={ESP32.pin43} to={ESP32.pin46} />
      <trace from={ESP32.GND} to="net.GND" />

      <trace from=".ANT1 .pin1" to=".C15 .pos" />
      <trace from=".ANT1 .pin2" to="net.GND" />

      <trace from=".U1 .pin3" to=".C2 .pos" />
      <trace from=".U1 .pin2" to="net.GND" />
      <trace from=".U1 .pin4" to="net.GND" />

      <trace from=".U3 .pin1" to="net.SCS/CMD" />
      <trace from=".U3 .pin2" to="net.SDO/SDO" />
      <trace from=".U3 .pin3" to="net.SWP/SD3" />
      <trace from=".U3 .pin4" to="net.GND" />
      <trace from=".U3 .pin5" to="net.SDI/SD1" />
      <trace from=".U3 .pin6" to="net.SCK/CLK" />
      <trace from=".U3 .pin7" to="net.SHD/SD2" />
      <trace from=".U3 .pin8" to="net.VDD_SDIO" />

      <trace from=".U4 .pin1" to="net.GPIO16" />
      <trace from=".U4 .pin2" to="net.SDO/SDO" />
      <trace from=".U4 .pin3" to="net.SWP/SD3" />
      <trace from=".U4 .pin4" to="net.GND" />
      <trace from=".U4 .pin5" to="net.SDI/SD1" />
      <trace from=".U4 .pin6" to="net.PSRAM_CLK" />
      <trace from=".U4 .pin7" to="net.SHD/SD2" />
      <trace from=".U4 .pin8" to="net.VDD_SDIO" />
    </group>
  )
}