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

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/.
Firmware focus
web_server— local HTTP on port 80gateway_client— registration, heartbeat, profile/configurationuart_bridge— ESP32-C6 ↔ DWM3001Cota_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.
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-C6 | DWM3001C | nRF |
|---|---|---|
| TX GPIO 23 | pin 32 UWB RX | P0.15 |
| RX GPIO 22 | pin 34 UWB TX | P0.19 |
| GND | GND | — |
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.
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.