Skip to the content
2 layers150 × 100 mmSensor board, the printed circuit board in 3D

High-speed STM32F407 sensor telemetry board and Python dashboard for real-time data acquisition and observer system validation

Size
150 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
64
Nets
59
Pads
288
Tracks, vias
756, 104
Pours
3
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
4 Aug 2026
Updated
14 Sep 2026

Overview

Sensor board is an open-source printed circuit board by CK20000, from the CK20000/STM32-High-Speed-Sensor-Telemetry-Board repository on GitHub. It is a 2-layer board of 150 × 100 mm with 64 parts on 59 nets, routed with 756 tracks and 104 vias.

Its parts include 17 connectors, 12 resistors, 9 diodes, 5 ICs and 2 capacitors. It belongs with the sensors and measurement boards and the STM32 boards of this library.

README

README.md

High-Speed Sensor Telemetry & Observer System Validation Board

Hardware: STM32F407VGT Firmware: C++ Software: Python (PySide/PyQt) Data Rate: 200Hz [blocked]

Project Overview

This repository contains the full hardware, firmware, and software stack for a custom sensor data acquisition board designed around the STM32F407VGT microcontroller. The system is engineered to capture, process, and stream multi-sensor data to validate a high-speed observer system framework.

The architecture bridges custom PCB design, non-blocking C++ embedded firmware, and a modular Python dashboard to provide real-time telemetry, enabling precise tracking of stable motor rotation and load variables at high velocities.

WhatsApp Image 2026-08-07 at 17 46 26

System Architecture

1. Hardware Integration (/hardware)

The custom-designed PCB acts as the central node for sensor fusion and motor state estimation. The board integrates the following components:

  • MCU: STM32F407VGT (ARM Cortex-M4).
  • IMU: MPU6050 (6-axis accelerometer and gyroscope) for inertial tracking.
  • Magnetometer: HMC5883L for heading reference.
  • Time-of-Flight: VL53L0X for precise distance measurements.
  • Mechanical Sensors: Direct interfaces for load cells and quadrature/optical encoders to track torque and rotation.
  • Design Files: KiCAD schematics, BOM, and mechanical CAD models are included.

2. Embedded Firmware (/firmware)

Written in C++, the firmware focuses on deterministic execution and high-speed data throughput:

  • Non-Blocking I/O: Ensures the sensor polling loop is not bottlenecked by communication delays.
  • Telemetry Pipeline: Constructs and streams an 84-byte binary payload containing timestamped sensor data and state variables.
  • Virtual COM Port (VCP): Utilizes USB CDC to achieve a stable 200Hz data transmission rate to the host PC.

3. Telemetry Dashboard (/software)

A custom graphical interface developed in Python (PySide/PyQt) to visualize the observer system's performance in real-time.

  • Serial Parsing (comms.py): Efficiently unpacks the 84-byte binary stream at 200Hz.
  • Real-Time Visualization (gauges.py / ui/): Dynamic plotting of motor rotation, current readings, IMU data, and load metrics.
  • Architecture: Highly modular layout utilizing custom .qss stylesheets for a clean, industrial UI.

Getting Started

Prerequisites

  • Hardware: STM32 ST-LINK Utility or OpenOCD.
  • Firmware: ARM GCC Toolchain and CMake (or your preferred STM32 IDE like STM32CubeIDE).
  • Software: Python 3.8+ with pyserial, PySide6 (or PyQt6), and pyqtgraph.

Installation & Execution

  1. Clone the Repository:
    bash
    git clone [https://github.com/yourusername/stm32-telemetry-board.git](https://github.com/yourusername/stm32-telemetry-board.git)
    cd stm32-telemetry-board
  2. Flash the Firmware: Compile the C++ source in the /firmware directory and flash the STM32F407 via ST-LINK.
  3. Launch the Dashboard:
    bash
    cd software
    pip install -r requirements.txt
    python main.py

Current Development Status

  • Custom PCB schematic and layout finalized.
  • Virtual COM port pipeline validated (84-byte payload @ 200Hz).
  • Python GUI rendering stable high-speed sensor plots.
  • Full observer system implementation in firmware (In Progress).

License

This project is licensed under the MIT License - see the LICENSE file for details.

Parts

64
QtyValueFootprintReferences
13SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP1, JP2, JP3, JP4, JP5, JP6, JP7, JP8, JP9, JP10, JP11, JP12, JP13
12330Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12
9LEDLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD1, D2, D3, D4, D5, D6, D7, D8, D9
7Screw_Terminal_01x04TerminalBlock:TerminalBlock_Xinya_XY308-2.54-4P_1x04_P2.54mm_HorizontalJ3, J5, J6, J11, J12, J15, J16
5Screw_Terminal_01x03TerminalBlock:TerminalBlock_Xinya_XY308-2.54-3P_1x03_P2.54mm_HorizontalJ9, J10, J13, J14, J17
3Optocoupler_DC_PhotoNPN_AKECPackage_DIP:DIP-4_W7.62mmU2, U3, U4
3Screw_Terminal_01x05TerminalBlock:TerminalBlock_Xinya_XY308-2.54-5P_1x05_P2.54mm_HorizontalJ4, J7, J8
2,
2470UCapacitor_THT:CP_Radial_D10.0mm_P2.50mmC1, C2
2Screw_Terminal_01x02TerminalBlock:TerminalBlock_Xinya_XY308-2.54-2P_1x02_P2.54mm_HorizontalJ1, J2
2~MP1584:MP1584MP1_5, MP2_3.3
1~ESP32_SHIELDS:ESP32_WROOM_32U1
1~STM32-sheilds:STM32_F407VGTU5

The 62 most common of 64 parts.

Similar boards

  • 2 layers76.5 × 120 mmNumpad project, the printed circuit board in 3D

    Numpad project

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    64 parts915
  • 2 layers160 × 99.1 mmFlat hierarchy, the printed circuit board in 3D

    Flat hierarchy

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    64 parts744MIT
  • 2 layers49 × 53.2 mmDB25 External, the printed circuit board in 3D

    DB25 External

    BlueSCSI/BlueSCSI-v2

    BlueSCSI v2/Ultra - an open source, open hardware, SCSI emulator using the Pi Pico PR2040 and Pico 2 RP2350

    64 parts459GPL-3.0
  • 2 layers90 × 71 mmTd hv, the printed circuit board in 3D

    Td hv

    tdaede/td-crt

    tubes

    64 parts373
  • 2 layers28 × 30 mmOtterIron Devkit, the printed circuit board in 3D

    OtterIron Devkit

    Jana-Marie/Otter-Iron-PRO

    USB-PD soldering station for JBC C245 handles.

    64 parts321
  • 2 layers192.9 × 59.5 mmAlpha pro micro, the printed circuit board in 3D

    Alpha pro micro

    PyrooL/Alpha

    A 28-key semi-ortholinear mechanical keyboard designed by PyroL

    64 parts298MIT
  • 2 layers128 × 88 mmFireball revD, the printed circuit board in 3D

    Fireball revD

    ugcs/ddc

    Drone Show Software is software designed for drone shows, allowing flight path planning as well as control of dozens of drones simultaneously in a synchronized manner.

    64 parts223
  • 2 layers78 × 81 mmEncoder, the printed circuit board in 3D

    Encoder

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    64 parts208

Questions

How big is the Sensor board PCB?

It measures 150 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Sensor board use?

64 parts. 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 CK20000/STM32-High-Speed-Sensor-Telemetry-Board repository on GitHub, at the commit this page was made from: the board is hardware/kicad/sensor_board.kicad_pcb and its schematic hardware/kicad/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 CK20000 before reusing the design.