
Controller module
InputBlackBoxOutput/INGAME
Virtual reality controller for playing FPS games

Vehicle data-acquisition system: ESP32-C6 sensor nodes stream IMU and GPS over ESP-NOW to a bridge; the bridge forwards data over USB to a Raspberry Pi, which logs CSV, runs optional AHRS, and supports track capture…
Sensor Board is an open-source printed circuit board by antholuo, from the antholuo/vehicle-daq repository on GitHub. It is a 4-layer board of 55 × 45 mm with 50 parts on 44 nets, routed with 469 tracks and 118 vias.
It is built around the TJA1051T/3/1, ASM330LHHXTR and TLV1117-33DCY, with the ASDDV-8.000MHZ-LR-T among its other parts. Its parts include 11 capacitors, 9 resistors, 9 connectors, 4 ICs and 1 crystal. It belongs with the sensors and measurement boards and the STM32 boards of this library.
Vehicle data-acquisition system: ESP32-C6 sensor nodes stream IMU and GPS over ESP-NOW to a bridge; the bridge forwards data over USB to a Raspberry Pi, which logs CSV, runs optional AHRS, and supports track capture (waypoint logging via a GPS-only “floating” node).
note: Correspondent REPLAY system is hosted here: https://github.com/Trotyl15/vehicle-replay
The two main software pieces are:
| Component | Location | Role |
|---|---|---|
| rpi_rx_rust | sw/tools/rpi_rx_rust/ | Pi-side: COBS decoder, CSV logging, AHRS, track capture (GPIO or interactive). |
| sensor_board_rev1_test | sw/sensor_board/sensor_board_rev1_test/ | Firmware for Rev1 DAQ nodes (sensor + floating) and for the bridge (devkit). |
flowchart TB
subgraph sensors["Sensor nodes"]
SN["rev1_board<br/>IMU + GPS"]
end
subgraph bridge["Bridge (devkit)"]
B["devkit_c<br/>Forward, TimeSync<br/>track heartbeats"]
end
subgraph host["Raspberry Pi"]
R["rpi_rx_rust<br/>Logs, AHRS<br/>track capture"]
end
subgraph floating["Floating node"]
F["sensorboard_floating<br/>GPS only"]
end
SN -->|"ESP-NOW (IMU, GPS, heartbeat)"| B
B -->|"USB COBS (forwarded messages)"| R
R -->|"TimeSync, Arm/End, RequestFloatingGps"| B
B -->|"TrackCaptureArmed/Ended (pause TX)"| SN
B -->|"RequestGpsCapture"| F
F -->|"5× GPS reply"| B
B -->|"heartbeat 0xFE (when armed)"| Rrev1_board): Read IMU and GPS, send over ESP-NOW. When track capture is armed, they pause so the floating node’s packets aren’t dropped.devkit_c): Receives ESP-NOW, assigns node IDs by MAC, forwards messages to the Pi over USB (COBS). Sends TimeSync to nodes; handles Arm/End track and RequestFloatingGps; when armed, sends a track-capture heartbeat (0xFE) to the Pi every 500 ms.sensorboard_floating): GPS-only; on RequestGpsCapture it replies with the next 5 GPS samples for waypoint logging.rpi_rx_rust): Decodes COBS stream, writes raw CSV (and optional AHRS CSV). Can arm track capture, request floating GPS per waypoint, and write track files (~/daq/tracks/<date>/<time>.csv). Uses track heartbeats to auto-end capture if the bridge disappears; bridge auto-ends if the Pi disappears.rpi_rx_rust (CLI + serial), rpi_rx_rust_gpio (GPIO-only service), rpi_rx_rust_track_test (interactive track capture), ahrs_postprocess, gps_extract./dev/ttyACM0, 115200 baud (set RPI_RX_SERIAL_PORT if the bridge is on another port).~/daq/logs/<date>/ (raw and AHRS); track files: ~/daq/tracks/<date>/.Full build and usage: sw/tools/rpi_rx_rust/README.md.
rev1_board (sensor node), devkit_c (bridge), sensorboard_floating (GPS-only for track capture).sw/sensor_board/sensor_board_rev1_test/):
cargo build --bin rev1_board (optional --features pos_center etc.).cargo build --bin devkit_c --no-default-features --features bridge.cargo build --bin sensorboard_floating --no-default-features --features floating.Full build, features, task model, and hardware init: sw/sensor_board/sensor_board_rev1_test/README.md.
Other repos under sw/, ee/, and vision/ may have their own READMEs.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | Conn_01x01 | Connector_Wire:SolderWirePad_1x01_SMD_1x2mm | 3.3, 5V, GND, GND, H, L, RX, TX |
| 7 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5, C6, C9, C10, C11 |
| 4 | LED | LED_SMD:LED_0603_1608Metric | 3.3V, 5V, D1, D2 |
| 4 | MountingHole | MountingHole:MountingHole_4.3mm_M4_Pad | H1, H2, H3, H4 |
| 3 | 1K | Resistor_SMD:R_0603_1608Metric | R6, R7, R8 |
| 3 | Conn_01x04 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J12, J13, J15 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R4, R5 |
| 2 | 5.1K | Resistor_SMD:R_0603_1608Metric | R1, R9 |
| 2 | Conn_01x05 | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J10, J16 |
| 2 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J14, J17 |
| 1 | 100uF | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 10nF | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | 10uF | Capacitor_SMD:C_0603_1608Metric | C2 |
| 1 | 120R | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric | C12 |
| 1 | ASDDV-8.000MHZ-LR-T | Oscillator:Oscillator_SMD_Abracon_ASDMB-4Pin_2.5x2.0mm | Y1 |
| 1 | ASM330LHHXTR | ASM330LHHXTR:XDCR_ASM330LHHXTR | U3 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J11 |
| 1 | STM32F042K6Tx | Package_QFP:LQFP-32_7x7mm_P0.8mm | U2 |
| 1 | TJA1051T-3 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | TLV1117-33 | TLV1117_33IDCYR:SOT230P700X180-4N | U4 |
| 1 | USB_C_Receptacle_PowerOnly_6P | Connector_USB:USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_Horizontal | J9 |
It measures 55 × 45 mm and has 4 copper layers, 1.61 mm thick.
50 parts, built around the TJA1051T/3/1, ASM330LHHXTR, TLV1117-33DCY and ASDDV-8.000MHZ-LR-T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the antholuo/vehicle-daq repository on GitHub, at the commit this page was made from: the board is ee/sensor_board/rev0/Sensor_Board/Sensor_Board.kicad_pcb and its schematic ee/sensor_board/rev0/Sensor_Board/Sensor_Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask antholuo before reusing the design.

InputBlackBoxOutput/INGAME
Virtual reality controller for playing FPS games






