LaserWand
Current BMI270 / TTP223 wand, UWB tag and stored LED/laser hardware profiles.

Wand hardware — current prototypes and review designs
Checked 2026-11-14. DE54 and DF18 are working physical prototypes with Prokyber ESP32-C6-Bug + DWM3001C + BMI270 + TTP223. Firmware source, an installed image and a proposed PCB are separate evidence.
| Function | DE54 · ws2811 | DF18 · ky016 |
|---|---|---|
| DWM UART / reset | ESP TX23 → pad32, RX22 ← pad34; reset21 | Same, 115200 8N1 |
| BMI270 | SDA6 / SCL7, 100 kHz; 0x68/0x69 | Same; fitted and functioning |
| TTP223 OUT | GPIO20, momentary active HIGH at 3V3 | Same |
| LED | WS2811 DIN5, GRB / 800 kbit/s | KY-016 R18 / G17 / B16, PWM |
| Laser | Absent; GPIO19 input | KY-008 SIGNAL19, separate supply |
| Haptic output | Unassigned | Unassigned; GPIO6 is IMU SDA |
Select the fitted profile explicitly in the portal, then restart; it is stored separately from Wi-Fi. No module auto-detection. Native USB Serial/JTAG uses GPIO12/13; RGB GPIO16/17 can still see ROM boot pulses. GPIO3 belongs to the Bug battery divider, not current touch wiring.
Hardware reference · Current physical profilesCurrent firmware
Source and latest verified installed ESP 2.3.23-imu, DWM v1.7.1, model bmi270-200hz-2026-10-29-v1 (10 classes). One IMU sampler runs orientation/gestures at 200 Hz, tracking samples at 100 Hz, UDP transport at 30 frames/s. These are not UWB cycle rates. The 13 November rollout confirms readback and preserved settings. Optional IMU scale/temperature profiles exist, but both tested profiles are identity.
Relative aim and RF limits
BMI270 is six-axis; no absolute yaw reference. Current frame is +Y up / +Z toward the tip. Keep both ESP Wi-Fi and DWM antennas clear. DF18's cutout is under DWM, not ESP; battery/charger interference has not been proven. Evidence and open questions.
Haptic candidate · DRV2605L / PIM452 not integrated
Small LRA module for distinct grip clicks, casts and hit feedback. I²C 0x5A can share SDA6/SCL7 with BMI270 using synchronized access. Start prototype evaluation on regulated 3V3 and measure current peaks, mounting and vibration effects on IMU/gesture recognition. It requires a new ESP-IDF driver; the LRA does not connect to the old ERM MOSFET output. Assessment and minimum test.
Future optical markers
Passive retroreflective bands + camera-side 850 nm illumination are a future yaw-correction path. Today's prototype is camera-free. Historical placement and circuit figures below are not wiring instructions for current prototypes.

DWM3001C — pinout, J-Link, UART
Same Qorvo module on the wand and every anchor. The ESP32-C6 talks to it over UART (115200 8N1, CRLF). The on-module nRF52833 is programmed over SWD from a SEGGER J-Link 10-pin socket. Canonical write-up: HARDWARE.md.
J-Link 10-pin socket · pin face
The programmer cable is a 10-pin header in two rows of five. Only five wires are used; unused holes stay open. The figure documents the project harness, not every connector called “10-pin”; confirm the actual cable and orientation before connecting.
Wand UART — Prokyber ESP32-C6-Bug ↔ DWM
Cross-wired. Firmware: custom_board.h RX_PIN_NUMBER=15, TX_PIN_NUMBER=19.
| 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 TX23 / RX22 — Prokyber H2.12 / H2.11, not DWM pad numbers. The October review schematic has the opposite ESP TX22/RX23 assignment; it needs a matching profile.
Why those pads
Pins 32 and 34 sit on the right edge of the figure, just above the bottom corner — generic P0.15 / P0.19 labels, not “TX/RX”.
The DW3000 radio is driven inside the module firmware; the ESP never speaks SPI to it.
Current physical wand UART is TX23/RX22. Anchors have a separate configurable pin map; never infer their wiring from the wand. DWM UART pads remain 32/34.
Circuit schematic hw pending
Hierarchical KiCad design under hw_schematics/laserwand/v1/.
Four sheets: root hierarchy, POWER, SENSORS, DRIVERS. The exports below are historical,
have obsolete pin assignments, and have not yet been updated to the target above.
Historical schematic exports — not current wiring instructions
Wand assembly and service
Checked 2026-11-14. Start with the physical target and its pin map. Detailed assembly guidance: Wand best practices.
Mounting and repeatable motion
Keep the battery/control mass near the grip and the IMU rigidly mounted. Preserve the registered frame: +Y up, +Z toward the tip. Changing mounting changes both aim and gesture data; retrain with representative users/units when necessary.
Two antenna regions
Respect the actual DWM module/adapter clearance above, below and beside the antenna; the cited carrier review records at least 10 mm laterally, not a generic 5 mm allowance. Check the ESP Wi-Fi antenna separately. DF18's carrier cutout is under DWM, not ESP. Battery/copper/charging-board effects remain unproven.
Power depends on the actual board
The Prokyber integrates charging/protection/3V3 regulation. DF18 also has an owner-reported external power/charging board whose exact circuit is unconfirmed. Identify it before applying a power recipe. The review carrier's raw GBAT and protected GND must remain distinct; do not substitute historical TP4056 instructions for the assembled circuit.
Harnesses and joints
Use flexible stranded wire, insulation, service loops and strain relief at each module. Keep UART short and cross-wired; keep I²C local. Avoid routing power or signals through either antenna volume. Choose keyed, labelled connectors for service.
Outputs differ by profile
WS2811 is a 5V module with an appropriate data-level buffer. KY-008 SIGNAL19 is separate from its supply. GPIO16/17 also serve UART0 defaults; native USB avoids application-log contention, but ROM boot pulses remain possible. GPIO6 is BMI270 SDA.
Future optical and haptic additions
Retro bands/camera QA apply to the future optical revision. DRV2605L/PIM452 requires new I²C control and tests for current peaks, grip feel and false IMU/gesture events. Neither is a fitted production capability. Haptic assessment.
Bring-up and verification
- Identify the revision and trace the real supply/return paths; inspect polarity and insulation before power.
- Use a current-limited source for a new board/harness; verify rails and transients before the cell. Use a holder or factory-welded cell leads.
- Test outside the enclosure: BMI270 identity/configuration, stable mounted samples, DWM UART/ranges, touch polarity and the fitted LED/laser profile.
- Check both antenna regions, mechanical attachment, strain relief and access to USB/SWD before closing.
- Repeat IMU, ranging, touch/effects, charging and thermal checks after closing. Record wand ID, profile, firmware/model version and results.
For an existing configured wand, identify/back up the device and update its verified app slot while preserving NVS, Wi-Fi, profile, DWM settings and OTA/partition metadata. After reset, restore physical heading alignment before testing aim; saved calibration and RAM heading are separate. Opening USB Serial/JTAG can reset these test units, so keep USB state fixed during passive recording.