Skip to the content
PCBKitNew board
2 layers60 × 50 mmBike Computer, the printed circuit board in 3D

Custom bike computer with speed tracking, GPS, environmental sensors, and OLED display, built on nRF52840 using PlatformIO.

Size
60 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
21
Pads
62
Tracks, vias
61, 6
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
25 Apr 2026
Updated
10 Sep 2026

Overview

Bike Computer is an open-source printed circuit board by KBieszczad, from the KBieszczad/Bike-Computer repository on GitHub, published under the MIT licence. It is a 2-layer board of 60 × 50 mm with 14 parts on 21 nets, routed with 61 tracks and 6 vias.

It is built around the BME280 and SS-12D00-G3. Its parts include 6 connectors, 3 switches and 1 IC. It belongs with the lEDs and displays and radio and wireless boards and the nRF52 and nRF5x boards of this library.

Main components

2

README

README.md

Custom IoT Bike Computer

A low-power custom bicycle computer featuring speed measurement, GPS tracking, environmental sensing, and an OLED display. The hardware is designed from scratch with a custom PCB created in KiCad.

Description

This project aims to build a standalone, power-efficient bike computer. At its core is the Seeed Studio XIAO nRF52840, a very energy efficient microcontroller with native Bluetooth Low Energy support.

The device combines data from a classic magnetic reed switch (for precise speed and distance tracking) with an external GPS module for recording traces. Additionally, it integrates a BME280 sensor to monitor environmental conditions (temperature, humidity, and barometric pressure).

Technical Features

  • Super-Loop Architecture: Runs on a non-blocking state machine utilizing hardware interrupts (ISR) and atomics for exact speed calculation and UI rendering, completely avoiding delay() functions.
  • Persistent Storage (LittleFS): Automatically saves user settings, wheel circumference, and route history to the internal non-volatile flash memory.
  • GPS Trace Recording: Caches GPS coordinates in the background while moving and writes directly to flash. Traces can be directly exported over USB Serial to a raw .gpx file compatible with for example Strava.
  • Dynamic Power Management: Implements multiple power modes (Normal, Eco, Ultra Eco). The device sends standard CASIC protocol sleep commands to the GPS module and hardware sleep flags to the BME280 sensor to drastically cut power consumption when full tracking is not needed.

Hardware Components

  • MCU: Seeed Studio XIAO nRF52840
  • GPS Module: ATGM336H
  • Environment Sensor: BME280
  • Display: 1.54" I2C OLED (SSD1309)
  • Sensors: Magnetic Reed Switch (Normally Open)
  • Power: 470mAh Li-Pol Battery with hardware switch

Project Structure

text
.
├── hardware/
│   ├── project.kicad_sch        # KiCad Schematic file
│   ├── project.kicad_pcb        # KiCad PCB layout file
│   └── img/                     # Schematic and PCB layout images
├── software/                    # PlatformIO Firmware files
└── README.md

Visuals

Schematic

Schematics

PCB

Front Back

Installation & Build

Prerequisites

  • Visual Studio Code with the PlatformIO extension installed.
  • Required libraries are automatically managed by platformio.ini

Installing & Flashing

  1. Clone the repository:
bash
git clone https://github.com/KBieszczad/Bike-Computer.git
  1. Open the software folder in VS Code (PlatformIO).
  2. Connect your XIAO nRF52840 via USB-C.
  3. Build and Upload the firmware using the PlatformIO build tools.

Usage & Configuration

  1. Navigation:
    • Button 1 (Left): Short press to cycle through the available screens (Main, Environment, History, GPS, Wheel Setup, Power Mode).
    • Button 2 (Right): Used to interact with the current screen (e.g., scroll menus, change settings).
  2. Recording a Trip:
    • Ensure GPS is toggled ON in the GPS Settings screen. The device will automatically start tracking your route once satellites are locked and movement is detected.
    • To finish and save the trip into the device's history, navigate to the Main Screen, press and hold Button 2 for 2 seconds. The trip history will update and distance will reset.
  3. Exporting GPX Track:
    • Connect the bike computer to a PC via USB.
    • Open a Serial Monitor tool (e.g., in PlatformIO) set to 115200 baud.
    • Navigate to the GPS SETTINGS screen on the device, select EXPORT ROUTE, and hold Button 2.
    • The device will output raw XML data. Copy this text, save it as a .gpx file, and upload it directly to Strava or GPX Studio.

Authors

Krzysztof Bieszczad @KBieszczad

Parts

14
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
2SW_Pushlicznik_lbr:tact_switchSW4, SW5
1BME280Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1BatteryConnector_PinHeader_2.00mm:PinHeader_1x02_P2.00mm_VerticalJ7
1Batterylicznik_lbr:jst_2mmJ5
1GPS ATGM336HConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3
1OLED 1,54'Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Reed switchlicznik_lbr:reed_switchJ6
1SS12D00licznik_lbr:SS12D00SW1
1XIAO-nRF52840-DIPSeeed_Studio_XIAO_Series:XIAO-nRF52840-DIPU2

Questions

How big is the Bike Computer PCB?

It measures 60 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Bike Computer use?

14 parts, built around the BME280 and SS-12D00-G3. 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 Bike Computer KiCad files?

From the KBieszczad/Bike-Computer repository on GitHub, at the commit this page was made from: the board is hardware/project.kicad_pcb and its schematic hardware/project.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bike Computer 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).

Similar boards

  • 2 layers97 × 77.5 mmESPlant, the printed circuit board in 3D

    ESPlant

    CCHS-Melbourne/ESPlant

    Environmental Sensor Plant - solar WiFi gardening/meteorological sensor using ESP8266

    77 parts37
  • 2 layers309.9 × 119.8 mmCockpit, the printed circuit board in 3D

    Cockpit

    ozkan/Cockpit-Keyboard

    A hot swap system column staggered mechanical keyboard, running QMK Firmware on Pro Micro controllers.

    144 parts43MIT
  • 2 layers285 × 94.2 mmWoodpecker, the printed circuit board in 3D

    Woodpecker

    Ardakilic/woodpecker-keyboard

    5 row ortholinear keyboard, based on Lumberelite and Lumberjack

    145 parts18MIT
  • 2 layers56.1 × 89.5 mmChristmas tree pcb, the printed circuit board in 3D

    Christmas tree pcb

    IamPhytan/christmas-tree-pcb

    Christmas Tree PCB, made with FOSS

    17 parts4CERN-OHL-P-2.0
  • 2 layers139.1 × 114.3 mmPacino flat, the printed circuit board in 3D

    Pacino flat

    Pacane/pacino

    Hand-wired wireless split keyboard: printable OpenSCAD case/plate with STEP output for Fusion 360. Cheapino-descended layout, nRF52840 + ZMK, Amoeba-King hot-swap.

    49 parts3MIT
  • 4 layers82 × 100 mmPCB Kicad, the printed circuit board in 3D

    PCB Kicad

    ChristopherAwomolo/Nova-Micromouse

    Newer version based off the Futura Micromouse

    121 partsMIT
  • 2 layers136.1 × 135.4 mmMinicopter, the printed circuit board in 3D

    Minicopter

    darshg321/Minicopter

    Compact and precise ESP-32 based drone capable of autonomous pathing, built from scratch

    57 parts