codezonly/pt1

This design implements a compact embedded hardware module combining a Seeed XIAO ESP32-C6 microcontroller, a RushFPV GNSS Mini M10 GPS module, and an SX1262 LoRa transceiver, integrated with USB-C power/data, user interface LEDs and buttons, decoupling capacitors, and antenna connectors for GPS and LoRa communication.

Version
0.0.1
License
unset
Stars
0

index.tsx

PCBPCB preview for index.tsx
SchematicSchematic preview for index.tsx
// ============================================================
//  Unified FPV Tracker PCB
//  Combines: Seeed XIAO ESP32-C6 + RushFPV GNSS Mini M10 + LoRa SX1262
//  Paste this into: play.tscircuit.com
// ============================================================

export default () => (
  <board width="75mm" height="58mm">

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        POWER SECTION  (left edge)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}

    {/* USB-C connector  — power + data */}
    <chip
      name="USB1"
      footprint="usb_c_receptacle_gct_usb4135-gf-a-2uo"
      pcbX={-35}
      pcbY={0}
    />

    {/* AMS1117-3.3  5 V → 3.3 V LDO */}
    <chip
      name="U_LDO"
      footprint="sot223"
      pcbX={-25}
      pcbY={15}
      pinLabels={{
        "1": "GND_ADJ",
        "2": "OUT",
        "3": "IN",
        "4": "OUT_EP"
      }}
    />

    {/* LDO input bulk + bypass */}
    <capacitor name="C_IN1"  capacitance="10uF"  footprint="0805" pcbX={-31} pcbY={10} />
    <capacitor name="C_IN2"  capacitance="100nF" footprint="0402" pcbX={-31} pcbY={7}  />
    {/* LDO output bulk + bypass */}
    <capacitor name="C_OUT1" capacitance="10uF"  footprint="0805" pcbX={-25} pcbY={10} />
    <capacitor name="C_OUT2" capacitance="100nF" footprint="0402" pcbX={-25} pcbY={7}  />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        ESP32-C6 MCU  (centre)
        — WiFi 6 · BLE 5.3 · Zigbee · Thread
        — Dual RISC-V  160 MHz / 20 MHz LP
        — 512 KB SRAM · 4 MB Flash (on-chip)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <chip
      name="U_MCU"
      footprint="esp32-c6-wroom-1-n4"
      pcbX={-7}
      pcbY={0}
      pinLabels={{
        "1":  "GND",
        "2":  "3V3",
        "3":  "EN",
        "4":  "IO4_SPI_SCK",
        "5":  "IO5_SPI_MISO",
        "6":  "IO6_SPI_MOSI",
        "7":  "IO7_LORA_CS",
        "8":  "IO8_LORA_RST",
        "9":  "IO9_LORA_DIO1",
        "10": "IO10_LORA_BUSY",
        "11": "IO11_FLASH_CS",
        "12": "IO16_GPS_TX",
        "13": "IO17_GPS_RX",
        "14": "IO18_I2C_SDA",
        "15": "IO19_I2C_SCL",
        "16": "IO20_LED_R",
        "17": "IO21_LED_G",
        "18": "IO22_LED_B",
        "19": "IO0_USB_DN",
        "20": "IO1_USB_DP"
      }}
    />

    {/* MCU decoupling — 3× 100 nF + 1× 4.7 µF */}
    <capacitor name="C_MCU1" capacitance="100nF" footprint="0402" pcbX={-15} pcbY={8}  />
    <capacitor name="C_MCU2" capacitance="100nF" footprint="0402" pcbX={-15} pcbY={5}  />
    <capacitor name="C_MCU3" capacitance="100nF" footprint="0402" pcbX={-15} pcbY={2}  />
    <capacitor name="C_MCU4" capacitance="4.7uF" footprint="0805" pcbX={-15} pcbY={-2} />

    {/* EN pull-up */}
    <resistor name="R_EN"   resistance="10k"  footprint="0402" pcbX={-15} pcbY={-6} />

    {/* WiFi / BLE / Zigbee / Thread  UFL antenna */}
    <chip name="J_WIFI_ANT" footprint="u.fl" pcbX={-7} pcbY={27} />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        USER INTERFACE
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}

    {/* Tactile buttons */}
    <chip name="BTN_BOOT" footprint="sw_push_6mm" pcbX={-29} pcbY={-14} />
    <chip name="BTN_RST"  footprint="sw_push_6mm" pcbX={-29} pcbY={-22} />

    {/* RGB status LEDs (0402) */}
    <led name="LED_R" color="red"   footprint="0402" pcbX={-21} pcbY={-14} />
    <led name="LED_G" color="green" footprint="0402" pcbX={-21} pcbY={-18} />
    <led name="LED_B" color="blue"  footprint="0402" pcbX={-21} pcbY={-22} />

    {/* Current-limiting resistors for LEDs */}
    <resistor name="R_LEDR" resistance="330" footprint="0402" pcbX={-16} pcbY={-14} />
    <resistor name="R_LEDG" resistance="330" footprint="0402" pcbX={-16} pcbY={-18} />
    <resistor name="R_LEDB" resistance="330" footprint="0402" pcbX={-16} pcbY={-22} />

    {/* I²C pull-up resistors */}
    <resistor name="R_SDA" resistance="4.7k" footprint="0402" pcbX={2}  pcbY={-20} />
    <resistor name="R_SCL" resistance="4.7k" footprint="0402" pcbX={6}  pcbY={-20} />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        GNSS MODULE  — uBlox M10  (top-right)
        RushFPV GNSS Mini M10  18 × 18 mm
        GPS L1 · GLONASS L1 · BDS B1 · GAL E1
        72 channels · -162 dBm · 10 Hz · NMEA
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <chip
      name="U_GPS"
      footprint="ublox_max-m10s_lcc24"
      pcbX={22}
      pcbY={11}
      pinLabels={{
        "1":  "GND",
        "2":  "VCC",
        "3":  "GND2",
        "4":  "UART_TX",
        "5":  "UART_RX",
        "6":  "TIMEPULSE",
        "7":  "EXTINT",
        "8":  "SDA",
        "9":  "SCL",
        "10": "GND3",
        "11": "V_BCKP",
        "12": "GND4",
        "13": "RF_IN",
        "14": "GND5"
      }}
    />

    {/* GPS decoupling */}
    <capacitor name="C_GPS1" capacitance="100nF" footprint="0402" pcbX={16} pcbY={17} />
    <capacitor name="C_GPS2" capacitance="10uF"  footprint="0805" pcbX={16} pcbY={20} />
    <capacitor name="C_GPS3" capacitance="100nF" footprint="0402" pcbX={16} pcbY={14} />

    {/* GPS hot-start backup battery  CR1220 */}
    <chip name="BT_GPS" footprint="bat_smd_cr1220" pcbX={33} pcbY={5} />

    {/* 18 × 18 mm ceramic patch antenna (visual footprint) */}
    <chip name="ANT_GPS" footprint="ant_ceramic_patch_18x18mm" pcbX={28} pcbY={23} />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        LORA TRANSCEIVER  — SX1262  (bot-right)
        863 – 928 MHz  · +22 dBm PA
        FSK / LoRa / DSSS  ·  SPI interface
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <chip
      name="U_LORA"
      footprint="qfn-24-1ep_4x4mm_p0.5mm"
      pcbX={14}
      pcbY={-17}
      pinLabels={{
        "1":  "GND1",
        "2":  "VR_PA",
        "3":  "VDD",
        "4":  "RFIO",
        "5":  "VBAT",
        "6":  "DIO2",
        "7":  "DIO3",
        "8":  "GND2",
        "9":  "XTA",
        "10": "XTB",
        "11": "GND3",
        "12": "VDD2",
        "13": "DIO1",
        "14": "BUSY",
        "15": "NRESET",
        "16": "NSS",
        "17": "MOSI",
        "18": "MISO",
        "19": "SCK",
        "20": "GND4",
        "21": "GND5",
        "22": "GND6",
        "23": "GND7",
        "24": "GND8",
        "25": "EPAD"
      }}
    />

    {/* LoRa 32 MHz TCXO / Crystal */}
    <chip
      name="X_LORA"
      footprint="crystal_smd_3225-4pin_3.2x2.5mm"
      pcbX={7}
      pcbY={-23}
    />

    {/* LoRa RF matching network  (π-network) */}
    <inductor   name="L1"    inductance="15nH"  footprint="0402" pcbX={22} pcbY={-21} />
    <capacitor  name="C_RF1" capacitance="1pF"  footprint="0402" pcbX={26} pcbY={-19} />
    <capacitor  name="C_RF2" capacitance="1pF"  footprint="0402" pcbX={26} pcbY={-23} />
    <capacitor  name="C_RF3" capacitance="2.2pF" footprint="0402" pcbX={29} pcbY={-21} />

    {/* LoRa decoupling */}
    <capacitor name="C_LR1" capacitance="100nF" footprint="0402" pcbX={8}  pcbY={-17} />
    <capacitor name="C_LR2" capacitance="100nF" footprint="0402" pcbX={8}  pcbY={-14} />
    <capacitor name="C_LR3" capacitance="4.7uF" footprint="0805" pcbX={6}  pcbY={-10} />

    {/* LoRa UFL antenna connector */}
    <chip name="J_LORA_ANT" footprint="u.fl" pcbX={35} pcbY={-23} />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        EXTERNAL SPI NOR FLASH  — W25Q64JV
        8 MB  —  data logging / OTA staging
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <chip
      name="U_FLASH"
      footprint="soic-8_5.23x5.23mm_p1.27mm"
      pcbX={4}
      pcbY={-9}
      pinLabels={{
        "1": "CS",
        "2": "DO",
        "3": "WP",
        "4": "GND",
        "5": "DI",
        "6": "CLK",
        "7": "HOLD",
        "8": "VCC"
      }}
    />

    {/* Flash decoupling */}
    <capacitor name="C_FL1" capacitance="100nF" footprint="0402" pcbX={2} pcbY={-6} />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        TRACES  —  POWER RAILS
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}

    {/* 3.3 V rail: LDO → MCU */}
    <trace from=".U_LDO > .OUT"   to=".U_MCU > .3V3"    />
    <trace from=".U_LDO > .OUT"   to=".C_OUT1 > .pos"   />
    <trace from=".U_LDO > .OUT"   to=".C_OUT2 > .pos"   />

    {/* 3.3 V rail: MCU → GPS */}
    <trace from=".U_MCU > .3V3"   to=".U_GPS > .VCC"    />
    <trace from=".U_MCU > .3V3"   to=".C_GPS1 > .pos"   />
    <trace from=".U_MCU > .3V3"   to=".C_GPS2 > .pos"   />

    {/* 3.3 V rail: MCU → LoRa */}
    <trace from=".U_MCU > .3V3"   to=".U_LORA > .VDD"   />
    <trace from=".U_MCU > .3V3"   to=".C_LR1 > .pos"    />
    <trace from=".U_MCU > .3V3"   to=".C_LR2 > .pos"    />
    <trace from=".U_MCU > .3V3"   to=".C_LR3 > .pos"    />

    {/* 3.3 V rail: MCU → SPI Flash */}
    <trace from=".U_MCU > .3V3"   to=".U_FLASH > .VCC"  />
    <trace from=".U_MCU > .3V3"   to=".C_FL1 > .pos"    />

    {/* EN pull-up */}
    <trace from=".U_MCU > .3V3"   to=".R_EN > .pin1"    />
    <trace from=".R_EN > .pin2"    to=".U_MCU > .EN"     />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        TRACES  —  SPI BUS  (MCU ↔ LoRa + Flash)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <trace from=".U_MCU > .IO4_SPI_SCK"    to=".U_LORA > .SCK"    />
    <trace from=".U_MCU > .IO5_SPI_MISO"   to=".U_LORA > .MISO"   />
    <trace from=".U_MCU > .IO6_SPI_MOSI"   to=".U_LORA > .MOSI"   />
    <trace from=".U_MCU > .IO7_LORA_CS"    to=".U_LORA > .NSS"    />
    <trace from=".U_MCU > .IO8_LORA_RST"   to=".U_LORA > .NRESET" />
    <trace from=".U_MCU > .IO9_LORA_DIO1"  to=".U_LORA > .DIO1"   />
    <trace from=".U_MCU > .IO10_LORA_BUSY" to=".U_LORA > .BUSY"   />

    {/* Shared SPI SCK/MISO/MOSI also go to flash */}
    <trace from=".U_MCU > .IO4_SPI_SCK"  to=".U_FLASH > .CLK" />
    <trace from=".U_MCU > .IO5_SPI_MISO" to=".U_FLASH > .DO"  />
    <trace from=".U_MCU > .IO6_SPI_MOSI" to=".U_FLASH > .DI"  />
    <trace from=".U_MCU > .IO11_FLASH_CS" to=".U_FLASH > .CS" />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        TRACES  —  UART  (MCU ↔ GPS)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <trace from=".U_MCU > .IO16_GPS_TX" to=".U_GPS > .UART_RX" />
    <trace from=".U_MCU > .IO17_GPS_RX" to=".U_GPS > .UART_TX" />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        TRACES  —  I²C  (MCU ↔ GPS)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <trace from=".U_MCU > .IO18_I2C_SDA" to=".U_GPS > .SDA"    />
    <trace from=".U_MCU > .IO19_I2C_SCL" to=".U_GPS > .SCL"    />
    <trace from=".U_MCU > .IO18_I2C_SDA" to=".R_SDA > .pin1"   />
    <trace from=".U_MCU > .IO19_I2C_SCL" to=".R_SCL > .pin1"   />

    {/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        TRACES  —  RGB LEDs
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */}
    <trace from=".U_MCU > .IO20_LED_R" to=".R_LEDR > .pin1"  />
    <trace from=".R_LEDR > .pin2"       to=".LED_R > .anode"  />
    <trace from=".U_MCU > .IO21_LED_G" to=".R_LEDG > .pin1"  />
    <trace from=".R_LEDG > .pin2"       to=".LED_G > .anode"  />
    <trace from=".U_MCU > .IO22_LED_B" to=".R_LEDB > .pin1"  />
    <trace from=".R_LEDB > .pin2"       to=".LED_B > .anode"  />

  </board>
)