uwb tag

Public

@kerlos

Download board files

Files for version 3. Pick what you came for.

Share uwb tag

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading…

README

UWB tag carrier, rev A

The badge the cleaner wears. A Seeed XIAO ESP32S3 Plus is reflowed onto a carrier board. The carrier holds a Qorvo DWM3000 UWB module (antenna at the board edge), an ST LSM6DSO motion sensor, a side-press shift button and a vibration-motor driver. A 1S LiPo on the underside is charged by the XIAO from its USB-C, in a dock.

Board58 × 26 mm, 2 layers, 1.6 mm FR-4, 1 mm corner radius
Rules0.25 mm tracks, 0.15 mm clearance (needed for the IMU's 0.5 mm-pitch pads), 0.7/0.3 mm vias (0.2 mm annular ring; rule minimum 0.18 mm), 0.5 mm hole-to-hole, 0.3 mm copper-to-edge. All inside JLCPCB/PCBWay standard capability.
ToolKiCad 7 (opens in 7, 8 or 9). Self-contained: kicad/libs/ holds the stock parts used.
ChecksKiCad DRC, run locally: 0 violations, 0 unconnected pads, 0 footprint errors. Closest drill-to-drill gap: 0.64 mm. ERC: run in KiCad or via BoardRepo (KiCad 7's CLI has no ERC).

Pin use (XIAO ESP32S3 Plus)

XIAO pinGPIONetWhy this pin
D01BTN (shift button, 100k pull-up, 100 nF debounce)RTC GPIO: wakes from deep sleep
D12IMU_INT1RTC GPIO: wake on motion
D23VIB_EN (motor FET gate)100k gate pull-down keeps the strap pin low at boot
D34UWB_IRQ (100k pull-down)
D4 / D55 / 6I2C SDA / SCL (4.7k pull-ups)XIAO default I2C
D744 (UART0 RX)UWB_RSTnAn input during boot, so the DWM3000's reset is never driven high (Qorvo)
D8 / D9 / D107 / 8 / 9UWB SCK / MISO / MOSIXIAO default SPI
D1713UWB_CS (also wakes the DW3000)Plus edge pad
D1911UWB_WAKEUPPlus edge pad
D1610Not connectedThe Plus measures battery voltage itself on GPIO10 (ADC_BAT)
VBAT pad (underside)–VBAT, to J1The XIAO charges the cell at 100 mA
D14 / D15 / D641 / 42 / 43LED_R / LED_G / LED_B (external RGB LED, via 1 kΩ)D6 is UART TX, so blue flickers at boot
D11–D13, D18–FreeConsole runs over USB

Other parts

  • U2, DWM3000: wiring and decoupling identical to the anchor (C1–C3, R1).
  • U3, LSM6DSO: in I2C mode (CS high) at address 0x6A (SA0 low). Auxiliary I2C pins SDx/SCx are tied to GND; OCS_Aux, SDO_Aux and INT2 are left open.
  • Motor: Q1 (AO3400A) low-side switch, D1 (B5819WS) flyback diode, C6 10 µF bulk, R5 100 Ω gate series, R6 100k gate pull-down. The motor's wire leads go to J2 (bottom).
  • Battery: 1S LiPo, which must have its own protection PCM. Wire leads go to J1 (bottom); + is marked.
  • External RGB status LED, J3: 5-pin 2.54 mm through-hole connector at the bottom edge: 1 R, 2 G, 3 B, 4 +3V3, 5 GND. The 1 kΩ resistors (R7–R9, 0402) give about 1 mA per colour, to save battery. For a common-anode LED, use pin 4 and drive the pins low; for a common-cathode LED, use pin 5 and drive them high.
  • No test pads: DWM3000 GPIO0–7 are unused on the tag. The anchor board carries the GPIO0–3 debug pads.

Layout

  • The XIAO's USB-C is flush with the left edge for the charging dock. The DWM3000 antenna is at the right edge, with Qorvo's copper keep-out on both layers. The XIAO's Wi-Fi uses its own U.FL antenna, so no keep-out is needed under it.
  • Signals run mostly on top (about 560 mm) against about 220 mm of short crossovers on the bottom. The bottom is a near-solid ground plane, stitched with about 60 vias.
  • UWB_RSTn is hand-routed along the top edge. Everything else was autorouted with Freerouting.

Building it

  1. PCB + assembly: fab/ Gerbers + drill, fab/uwb_tag-bom-jlc.csv, fab/uwb_tag-cpl-jlc.csv. D1, SW1 and U3 have no LCSC number filled in, so pick stock or consign them.
  2. XIAO: paste on all U1 pads, including the underside VBAT/GND pads. Seat the XIAO with its USB-C at the edge marked USB-C, then reflow (hot plate or hot air). An iron alone can't reach the battery pads.
  3. By hand: LiPo leads to J1 and motor leads to J2, on the bottom. Stick the XIAO's U.FL antenna to the enclosure lid, away from the UWB end. See fab/hand-fit-parts.csv.

Before ordering: verify

  • XIAO footprint: copied from Seeed's official KiCad library (XIAO-ESP32-S3-Plus-SMD, CC BY-SA 4.0). Print the top layer 1:1 and check it against a module.
  • LSM6DSO unused-pin handling (SDx/SCx to GND, OCS_Aux/SDO_Aux open): check against ST's datasheet.
  • DWM3000 footprint: KiCad's DWM1000 land pattern (Qorvo: pin- and pitch-compatible). Not compared against the DWM3000 drawing.
  • LCSC numbers: confirm stock.
  • Thickness: the cell sits under the XIAO end. Allow board + battery + about 3 mm for the XIAO when sizing the enclosure.

Regenerating

Run tools/run_all.sh. It builds the libraries and the schematic, then places parts, hand-routes RSTn and autoroutes the rest. It finishes with ground stitching and island bridging, DRC, and the fab outputs. It needs KiCad 7, Java, Xvfb and Freerouting 1.9.

Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.