Skip to the content
PCBKitNew board
4 layers55 × 45 mmSensor Board, the printed circuit board in 3D

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…

Size
55 × 45 mm
Copper layers
4
Thickness
1.61 mm
Parts
50
Nets
44
Pads
168
Tracks, vias
469, 118
Pours
74
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
29 Sep 2024
Updated
5 Nov 2026

Overview

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.

Main components

4

README

README.md

vehicle-daq

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:

ComponentLocationRole
rpi_rx_rustsw/tools/rpi_rx_rust/Pi-side: COBS decoder, CSV logging, AHRS, track capture (GPIO or interactive).
sensor_board_rev1_testsw/sensor_board/sensor_board_rev1_test/Firmware for Rev1 DAQ nodes (sensor + floating) and for the bridge (devkit).

System overview

mermaid
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)"| R
  • Sensor nodes (rev1_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.
  • Bridge (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.
  • Floating node (sensorboard_floating): GPS-only; on RequestGpsCapture it replies with the next 5 GPS samples for waypoint logging.
  • Pi (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.

Raspberry Pi (rpi_rx_rust)

  • Binaries: rpi_rx_rust (CLI + serial), rpi_rx_rust_gpio (GPIO-only service), rpi_rx_rust_track_test (interactive track capture), ahrs_postprocess, gps_extract.
  • Default serial: /dev/ttyACM0, 115200 baud (set RPI_RX_SERIAL_PORT if the bridge is on another port).
  • Logs: ~/daq/logs/<date>/ (raw and AHRS); track files: ~/daq/tracks/<date>/.
  • Track capture: Arm → take location (request 5 GPS from floating node, average, append one row) → end. Heartbeat from bridge (0xFE) every 500 ms; 3 s without heartbeat or 2 s without USB from Pi triggers auto-end.

Full build and usage: sw/tools/rpi_rx_rust/README.md.


Sensor board & bridge (sensor_board_rev1_test)

  • Binaries: rev1_board (sensor node), devkit_c (bridge), sensorboard_floating (GPS-only for track capture).
  • Build (from sw/sensor_board/sensor_board_rev1_test/):
    • Sensor: cargo build --bin rev1_board (optional --features pos_center etc.).
    • Bridge: cargo build --bin devkit_c --no-default-features --features bridge.
    • Floating: cargo build --bin sensorboard_floating --no-default-features --features floating.
  • HMI: User LED (1 Hz) + NeoPixel (state/feedback). Bridge: 4× blink when armed; orange when sending request; green/rainbow on success/timeout. Floating: green breathing when idle with fix; orange when acquiring.

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.

Parts

50
QtyValueFootprintReferences
8Conn_01x01Connector_Wire:SolderWirePad_1x01_SMD_1x2mm3.3, 5V, GND, GND, H, L, RX, TX
7100nFCapacitor_SMD:C_0603_1608MetricC3, C4, C5, C6, C9, C10, C11
4LEDLED_SMD:LED_0603_1608Metric3.3V, 5V, D1, D2
4MountingHoleMountingHole:MountingHole_4.3mm_M4_PadH1, H2, H3, H4
31KResistor_SMD:R_0603_1608MetricR6, R7, R8
3Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ12, J13, J15
21kResistor_SMD:R_0603_1608MetricR4, R5
25.1KResistor_SMD:R_0603_1608MetricR1, R9
2Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ10, J16
2Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ14, J17
1100uFCapacitor_SMD:C_0603_1608MetricC1
110kResistor_SMD:R_0603_1608MetricR3
110nFCapacitor_SMD:C_0603_1608MetricC7
110uFCapacitor_SMD:C_0603_1608MetricC2
1120RResistor_SMD:R_0603_1608MetricR2
11uFCapacitor_SMD:C_0603_1608MetricC12
1ASDDV-8.000MHZ-LR-TOscillator:Oscillator_SMD_Abracon_ASDMB-4Pin_2.5x2.0mmY1
1ASM330LHHXTRASM330LHHXTR:XDCR_ASM330LHHXTRU3
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ11
1STM32F042K6TxPackage_QFP:LQFP-32_7x7mm_P0.8mmU2
1TJA1051T-3Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1TLV1117-33TLV1117_33IDCYR:SOT230P700X180-4NU4
1USB_C_Receptacle_PowerOnly_6PConnector_USB:USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_HorizontalJ9

Questions

How big is the Sensor Board PCB?

It measures 55 × 45 mm and has 4 copper layers, 1.61 mm thick.

What parts does the Sensor Board use?

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.

Where can I download the Sensor Board KiCad files?

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.

Can I use the Sensor Board design in my own project?

Its repository states no licence, so its author keeps all rights: ask antholuo before reusing the design.

Similar boards

  • 2 layers50 × 35 mmController module, the printed circuit board in 3D

    Controller module

    InputBlackBoxOutput/INGAME

    Virtual reality controller for playing FPS games

    73 partsMIT
  • 4 layers75 × 75 mmOnboarding, the printed circuit board in 3D

    Onboarding

    Pandas020/Onboarding

    56 parts
  • 4 layers66.7 × 37.6 mmL0destar, the printed circuit board in 3D

    L0destar

    m4rkw/l0destar

    l0destar open-source tracker project

    88 parts43
  • 4 layers58.9 × 58.9 mmNavPoTS Bridge, the printed circuit board in 3D

    NavPoTS Bridge

    RuberDuck9/NavPoTS

    74 partsAGPL-3.0
  • 2 layers124 × 112 mmOpenDropV3, the printed circuit board in 3D

    OpenDropV3

    GaudiLabs/OpenDrop

    Open Source Digital Microfluidics Bio Lab

    318 parts492GPL-3.0
  • 2 layers393.5 × 153.7 mmBoston keyboard V08J, the printed circuit board in 3D

    Boston keyboard V08J

    bluepylons/Boston

    A 120% mechanical keyboard

    613 parts240
  • 2 layers105 × 33 mmRocketPCR, the printed circuit board in 3D

    RocketPCR

    GaudiLabs/PocketPCR

    Pocket size USB powered PCR Thermo Cycler

    50 parts202GPL-3.0
  • 2 layers155 × 80 mmESP32Controller, the printed circuit board in 3D

    ESP32Controller

    simon-jouet/ESP32Controller

    ESP32-based 3D printer controller

    171 parts134