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
PCB
Schematic
// ============================================================
// 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>
)