Skip to the content
2 layers59 × 83.5 mmApexIO Layer2, the printed circuit board in 3D

ApexIO to mój autorski projekt urządzenia do pomiaru parametrów jazdy i czasu okrążeń, inspirowany rozwiązaniami RaceBox i Racelogic. Pomysł powstał z połączenia zainteresowania elektroniką, programowaniem i kartingiem.

Size
59 × 83.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
15
Nets
30
Pads
75
Tracks, vias
237, 35
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
8 Oct 2026
Updated
8 Oct 2026

Overview

ApexIO Layer2 is an open-source printed circuit board by bartczechov205, from the bartczechov205/ApexIO_Firmware repository on GitHub, published under the MIT licence. It is a 2-layer board of 59 × 83.5 mm with 15 parts on 30 nets, routed with 237 tracks and 35 vias.

README

README.md

ApexIO - 23.09.2026

O projekcie

ApexIO to projekt przenośnego urządzenia do telemetrii pojazdu, pomiaru przyspieszenia i czasów okrążeń. Inspiracją były rozwiązania RaceBox i Racelogic, a celem było połączenie podobnych funkcji we własnym urządzeniu z ekranem i fizycznymi przyciskami. Projekt obejmuje oprogramowanie, własną płytkę PCB zaprojektowaną w KiCad oraz obudowę przygotowaną w Fusion 360.

Podstawą urządzenia jest ESP32-S3-WROOM. Dane o pozycji, prędkości i czasie dostarcza odbiornik GNSS NEO-F10N pracujący z częstotliwością 10 Hz, natomiast czujnik BNO085 mierzy przyspieszenie, prędkość kątową i pole magnetyczne. Wyniki są prezentowane na ekranie TFT o przekątnej 2,4 cala.

Oprogramowanie powstało w C++ z wykorzystaniem Arduino, PlatformIO i FreeRTOS. Sześć zadań rozdzielonych pomiędzy dwa rdzenie procesora odpowiada za odczyt czujników, przetwarzanie danych, obsługę przycisków i ekranu oraz zapis na kartę microSD. Zadania wymieniają dane przez kolejki, a dostęp do wspólnych zasobów jest zabezpieczony mutexami.

Do łączenia pomiarów GNSS i IMU wykorzystano bibliotekę z implementacją rozszerzonego filtra Kalmana (EKF). Dane z IMU pozwalają śledzić zmiany ruchu między odczytami GNSS, a pomiary satelitarne korygują narastające błędy oszacowania pozycji i prędkości. GeoLib przelicza współrzędne geograficzne na lokalny układ kartezjański, umożliwiając wykonywanie obliczeń odległości w metrach.

Funkcje

Live Telemetry

Tryb wyświetla aktualną prędkość, przeciążenia w osiach pojazdu, przebyty dystans, przybliżoną wysokość i kierunek ruchu. Prędkość jest wyznaczana na podstawie danych z filtra EKF i dodatkowo wygładzana filtrem medianowym. Zastosowano również ograniczenie wahań wskazania prędkości podczas postoju.

Drag Mode

Tryb mierzy czas przyspieszenia od 0 do 100 km/h oraz czas pokonania 60 stóp, 100 m, 200 m i 400 m. Wyświetla także prędkość maksymalną i aktualne przeciążenie. Po uzyskaniu gotowości pomiar rozpoczyna się automatycznie po wykryciu ruszenia, a po przejechaniu 400 m możliwy jest również pomiar drogi hamowania.

Lap Timer

Tryb mierzy czasy kolejnych okrążeń oraz pokazuje poprzedni i najlepszy wynik. Podczas okrążenia zapoznawczego tworzy wirtualne bramki, których kolejność przekraczania służy do sprawdzania poprawności kolejnych przejazdów. Funkcja live delta pokazuje bieżący zysk lub stratę czasu względem najlepszego prawidłowego okrążenia. Dane sesji są zapisywane na karcie microSD w formacie .vbo do późniejszej analizy w Circuit Tools 3.

Settings

Ustawienia pozwalają sprawdzić ustawienie urządzenia w osiach X i Y oraz wybrać przesunięcie czasu względem UTC. Można również zmieniać szerokość linii startu i mety oraz wirtualnych bramek. Dodatkowo dostępna jest regulacja zakresu paska pokazującego różnicę czasu okrążenia.

Wykorzystane biblioteki

  • TFT_eSPI – obsługuje wyświetlacz TFT. Służy do rysowania ekranów, tekstu, grafik i wskaźników oraz wyświetlania wyników pomiarów.

  • SparkFun u-blox GNSS v3 – odpowiada za komunikację z modułem GPS/GNSS. Umożliwia konfigurację odbiornika oraz odczyt pozycji, prędkości, czasu i liczby widocznych satelitów.

  • SparkFun BNO08x Cortex Based IMU – obsługuje czujnik IMU. Dostarcza odczyty z akcelerometru, żyroskopu i magnetometru wykorzystywane do obliczania ruchu i orientacji urządzenia.

  • Bolder Flight Systems Eigen – umożliwia wykonywanie obliczeń na macierzach i wektorach. W projekcie jest wykorzystywana w implementacji rozszerzonego filtra Kalmana, który łączy dane z czujników.

  • SdFat – odpowiada za obsługę karty SD i plików. Umożliwia tworzenie plików z danymi przejazdu oraz zapisywanie kolejnych próbek telemetrii.

  • Adafruit INA219 – obsługuje układ pomiaru napięcia i prądu. W projekcie służy do odczytu napięcia wykorzystywanego przez wskaźnik baterii.

  • GeoLib - zawiera obliczenia związane ze współrzędnymi geograficznymi. Ułatwia przeliczanie pozycji na lokalny układ współrzędnych wykorzystywany w pomiarach przejazdu.

  • Adafruit BusIO – zapewnia funkcje komunikacji przez magistrale I²C i SPI. Jest biblioteką pomocniczą wykorzystywaną przez sterowniki Adafruit, między innymi INA219.

  • Adafruit GFX Library – zawiera podstawowe funkcje rysowania tekstu i kształtów. Jest dołączona w zestawie bibliotek Adafruit; za interfejs wyświetlacza w ApexIO odpowiada TFT_eSPI.

Parts

15
QtyValueFootprintReferences
1BUTTON_BACKConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBT_BACK
1BUTTON_DOWNConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBT_OK
1BUTTON_OKConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBT_DOWN
1BUTTON_UPConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBT_UP
1GPS_GNSSConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ5
1IMU_R1Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1IMU_R2Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ4
1SD_WIRESConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalSD
1STACK_3Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalTFT
1STACK_AConnector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_VerticalJ1
1STACK_BConnector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_VerticalJ2

The 11 most common of 15 parts.

More from bartczechov205/ApexIO_Firmware

2
  • 2 layers59 × 83.5 mmApexIO Layer3, the printed circuit board in 3D

    ApexIO Layer3

    bartczechov205/ApexIO_Firmware

    ApexIO to mój autorski projekt urządzenia do pomiaru parametrów jazdy i czasu okrążeń, inspirowany rozwiązaniami RaceBox i Racelogic. Pomysł powstał z połączenia zainteresowania elektroniką, programowaniem i kartingiem.

    13 partsMIT
  • 2 layers59 × 83.5 mmApexIO Layer1, the printed circuit board in 3D

    ApexIO Layer1

    bartczechov205/ApexIO_Firmware

    ApexIO to mój autorski projekt urządzenia do pomiaru parametrów jazdy i czasu okrążeń, inspirowany rozwiązaniami RaceBox i Racelogic. Pomysł powstał z połączenia zainteresowania elektroniką, programowaniem i kartingiem.

    12 partsMIT

Similar boards

  • 2 layers19 × 76 mmSub, the printed circuit board in 3D

    Sub

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    15 parts3kApache-2.0
  • 2 layers26.7 × 62.2 mmDeniseadapter, the printed circuit board in 3D

    Deniseadapter

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    15 parts1kGPL-3.0
  • 2 layers100 × 44 mmVideoslot, the printed circuit board in 3D

    Videoslot

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    15 parts1k
  • 2 layers91 × 51 mmBusinessCard, the printed circuit board in 3D

    BusinessCard

    hackclub/OnBoard

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

    15 parts915
  • 2 layers24.3 × 57.9 mmFlosspods pro flex, the printed circuit board in 3D

    Flosspods pro flex

    kenp-io/not-for-airpods-repairs

    The content of this repository is licensed under the WTFPL License. Please have a close look at the terms before using this material.

    15 parts609WTFPL
  • 2 layers20.3 × 15.2 mmL0 Load, the printed circuit board in 3D

    L0 Load

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    15 parts546MIT
  • 2 layers68 × 50 mmEleLab v2 PowerFeed, the printed circuit board in 3D

    EleLab v2 PowerFeed

    Chrismettal/EleLab_v2

    Cheap DIY lab system for hobbyists and the tinkering folk

    15 parts531GPL-3.0
  • 2 layers50.8 × 35.6 mmInterface, the printed circuit board in 3D

    Interface

    harbaum/I2C-Tiny-USB

    Cheap and simple I²C to USB interface

    15 parts454

Questions

How big is the ApexIO Layer2 PCB?

It measures 59 × 83.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ApexIO Layer2 use?

15 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 ApexIO Layer2 KiCad files?

From the bartczechov205/ApexIO_Firmware repository on GitHub, at the commit this page was made from: the board is PCB/Layer2/ApexIO_Layer2.kicad_pcb and its schematic PCB/Layer1/ApexIO_Layer1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ApexIO Layer2 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).