Hub / Hardware / UWB Anchor

hardware in progress

UWB Anchor

ESP32-C6 + DWM3001C SS-TWR responders; TDoA is a future redesign.

UWB Anchor concept
Concept illustration — not a wiring reference

Engineering

UWB Anchor — fixed ranging node prototype running, TDoA planned

Fixed ESP32-C6 + Qorvo DWM3001C nodes provide the UWB infrastructure that locates every wand (and later every smart obstacle / prop). Future full-arena design: 8–12 anchors around a ~450 m² arena; firmware lives in anchor_sw/.

ESP32-C6
MCU + Wi‑Fi HTTP :80
DWM3001C
UWB ranging (UART)
8–12
future design quantity

Firmware focus

  • web_server — local HTTP on port 80
  • gateway_client — registration, heartbeat, profile/configuration
  • uart_bridge — ESP32-C6 ↔ DWM3001C
  • ota_manager — field updates

Current tested anchor kits use ESP TX23/RX22; source defaults TX4/RX5 are legacy. Match the build to the physical kit (see HARDWARE.md and the pinout / J-Link below).

Role in the system

Current ranging is SS-TWR with multi-poll: one wand poll, scheduled anchor replies, distances computed on the wand, then gateway multilateration. Gateway TDMA schedules tag cycle starts; CSMA can additionally guard transmission. Neither mechanism is TDoA. Obstacle/prop auto-mapping is future work.

See TDMA for slotting and collision avoidance.

DWM3001C — pinout, J-Link, UART

Same module as the wand. Program the nRF52833 over SWD from a J-Link 10-pin socket; the ESP32-C6 talks UART (115200 8N1, CRLF). Full write-up: HARDWARE.md.

DWM3001C module pin diagram: 48 castellations, antenna at the top, pins 1–48 counter-clockwise
Figure 1 — DWM3001C pin diagram (Qorvo datasheet). J-Link: SWD_CLK pin 2, SWD_DIO pin 3, VDD pin 12, RESET pin 47. UART (not labeled TX/RX): right-side 32 (P0.15 RX) and 34 (P0.19 TX).

J-Link 10-pin socket · pin face

Two rows of five. Five wires only; unused holes stay open. Socket pin 1 is top-left.

UART — ESP32-C6 ↔ DWM

ESP32-C6DWM3001CnRF
TX GPIO 23pin 32 UWB RXP0.15
RX GPIO 22pin 34 UWB TXP0.19
GNDGND—

ESP GPIO 23 / 22 on current kits; legacy Kconfig defaults are TX4/RX5. These are GPIO numbers, not header positions. Reset: GPIO21 → DWM pad47.

Flash

Same UWB image on every wand and anchor. Mode (tag vs anchor) is set later over UART, not by a second hex.

Existing devices: use the signed UART DFU procedure; verify the target, installed bootloader and image layout before SWD recovery.

RUNBOOK A2 · same diagram on the wand page

Reviewed 2026-11-14: the 12 November rollout verified all five anchors on DWM v1.7.1, channel 9, with saved settings preserved. Anchor ESP versions were 2.3.2, except DEF4 2.3.3. This is dated readback, not a live inventory or accuracy acceptance. Current scheduling defaults: 200 ms frame, eight 25 ms start slots, sync every second; player capacity is not proven by slot count. USB or PoE splitter supplies 5 V; management remains Wi-Fi, not Ethernet data. Anchor reference · Tracking / TDoA migration.

Future TDoA redesign

Requires synchronized anchor clocks, tag blinks, anchor receive timestamps and transport, plus a TDoA solver/calibration path. Wi-Fi management sync and RJ45 power do not provide that clock reference. DWM3001C reuse must be evaluated; the current anchor is a TWR responder.