An open-source bike computer based on Raspberry Pi Zero (W, WH, 2 W) with GPS and ANT+.
https://github.com/hishizuka/pizero_bikecomputer
- 2026/1/30 Support for a groundbreaking dual-screen display is in progress.
- 2026/1/30 The MIP LCD methods will be fully deprecated, and a switch to a newly released DRM driver is planned.
- 2025/10/12 Supports Raspberry Pi OS Trixie. For new installations, it is highly recommended to install Trixie due to compatibility with asyncio and asynqt. The following will no longer be supported going forward:
- Raspberry Pi OS Bookworm and earlier
- PyQt5
- 2025/6/24 Now major packages can now be installed with a 1-line command.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/hishizuka/pizero_bikecomputer/refs/heads/master/install.sh)"
- Abstract
- Features
- Specs
- Comparison with other bike computers
- Hardware Installation
- Software Installation
- PCB Gallery (under development)
- Q&A
- License
- Author
- Link
Pi Zero Bikecomputer is a GPS and ANT+ bike computer based on Raspberry Pi Zero (W, WH, 2 W). This is the first DIY project in the world integrating the necessary hardware and software for a modern bike computer. It measures and records position (GPS), ANT+ sensors (speed / cadence / power), and I2C sensors (pressure / temperature / accelerometer, etc.). It also displays these values, maps, and courses in real time. In addition, it writes logs to .fit format files.
In this project, Pi Zero Bikecomputer has already got the basic functions needed for a bike computer. The next target is to add new functions that existing products do not have!
You will enjoy both cycling and the maker movement with Pi Zero Bikecomputer!
Here are detailed articles in Japanese. The original Japanese titles are kept below, with English translations for reference.
- サイクルコンピューターをガチで作ってみたら、割とできてしまったという話 (English: I tried to seriously build a bike computer, and it turned out surprisingly well)
- Raspberry Pi Zero (W, WH, 2 W)でサイクルコンピューターを作ってみよう (English: Let's build a bike computer with Raspberry Pi Zero (W, WH, 2 W))
Daily updates are posted on X (@pi0bikecomputer), and my riding activities are on STRAVA.
-
Easy to make
- Use modules available at famous Maker stores.
- Assemble in Raspberry Pi ecosystems.
- Install with basic commands such as
apt-get install,pipandgitcommand.
-
Customization
- Need only modules you want to use. Pi Zero Bikecomputer detects your modules.
-
Easy to develop
-
Good balance between battery life and performance
Some functions depend on your parts.
| Specs | Support | Detail |
|---|---|---|
| Logging | Yes | See below. |
| Sensors | Yes | ANT+ sensors and I2C sensors. See below. |
| Maps and navigations | Yes | A GPS module or the Android app GadgetBridge is required. See below. |
| Displays, controls and power | Yes | Multiple displays, hardware buttons, remote controls, and battery modules are supported. See below. |
| GUI | Yes | PyQt is the primary GUI. QML, Kivy, and headless modes are also available. |
| Wifi & Bluetooth | Yes | Using built-in modules. |
| Smartphone connections | Yes | Android only. GadgetBridge integration and route sharing from Google Maps via Bluetooth. |
| Battery life(Reference) | 18h | with 3100mAh mobile battery(Garmin Charge Power Pack) and MIP Reflective color LCD. |
| Specs | Support | Detail |
|---|---|---|
| Stopwatch | Yes | Timer, Lap, Lap timer |
| Average value | Yes | [Total, Lap ave, Pre lap ave] x [HR, Speed, Cadence, Power], [3s, 30s, 60s] x [HR, Power] |
| Cumulative value | Yes | [Total, Lap, Pre lap] x [Distance, Works, Ascent, Descent] |
| Gross | Yes | Elapsed time, gross average speed(=distance/elapsed time), gained time from average speed 15km/h(for brevet) |
| Auto stop | Yes | Automatic stop at speeds below 4km/h(configurable), or in the state of the acceleration sensor when calculating the speed by GPS alone |
| Recording insterval | 1s | Smart recording is not supported. |
| Resume | Yes | Recording continues even if the power is suddenly turned off and restored. |
| Output .fit log file | Yes | The standard format used by famous services as Strava and Garmin Connect. Also .csv format output is supported. |
| Upload | Yes | Strava, Garmin and Ride with GPS. |
| Live Track | Yes | Track data is uploaded in real time to ThingsBoard.io dashboard service, so you can share your activity with friends and family. |
USB dongle is required if using ANT+ sensors.
| Specs | Support | Detail |
|---|---|---|
| ANT+ Heartrate sensor | Yes | |
| ANT+ Speed sensor | Yes | |
| ANT+ Cadence sensor | Yes | |
| ANT+ Speed&Cadence sensor | Yes | |
| ANT+ Powermeter | Yes | Calibration is not supported. |
| ANT+ Light | Yes | Bontrager Flare RT only. |
| ANT+ Control | Yes | Garmin Edge Remote only. |
| ANT+ Environment | Yes | Garmin tempe (temperature sensor) |
| BLE peripherals | Partial | Zwift Click V2 remote and Fake Trainer for Zwift are supported. |
| Barometric altimeter | Yes | I2C sensor(pressure, temperature) |
| Accelerometer | Yes | I2C sensor |
| Gyroscope | Yes | I2C sensor |
| Magnetometer | Yes | I2C sensor |
| Light sensor | Yes | I2C sensor. Use for auto backlight and lighting. |
| Specs | Support | Detail |
|---|---|---|
| GPS module | Yes | UART GPS module(via GPSd) and I2C GPS are supported. |
| Positioning from smartphones | Yes | Using the Android app GadgetBridge. |
| Map | Yes | Support raster map tile format like OSM (z/x/y.png or jpg). So, offline map is available with local caches. Also, raster .mbtile format is supported. |
| Course on the map | Yes | Local .tcx files, cloud courses from Ride with GPS, and routes shared from Google Maps on Android via Bluetooth. |
| Search route | Yes | Google Directions API |
| Course profile | Yes | |
| Detect climbs | Yes | Like Garmin ClimbPro. Only climbs on the course, not detect nearby climbs. |
| Cuesheet | Yes | Use course points included in course files(.tcx). |
| Map overlay | Yes | Heatmap (Strava / Ride with GPS), weather (rain / wind), and configurable wind / DEM data sources. |
| DEM / wind data sources | Yes | External DEM tiles and wind data sources can be selected from the menu and settings. |
| Specs | Support | Detail |
|---|---|---|
| MIP reflective color LCD | Yes | JDI 2.7 / 4.4 inch and Azumo 3.4 inch modules are supported. |
| SHARP memory display | Yes | 2.7 / 4.4 inch monochrome MIP modules are supported. |
| TFT LCD | Yes | Pirate Audio, Display HAT Mini, generic ST7789 breakout, and PiTFT are supported. |
| E-paper | Yes | Papirus and DFRobot RPi Display are supported. |
| Touchscreen | Partial | Available on supported TFT displays. |
| Hardware buttons | Yes | Button SHIM, MCP23008 / MCP23009-based IO expanders, and display-attached buttons are supported. |
| Remote control | Yes | Garmin Edge Remote (ANT+) and Zwift Click V2 (BLE) are supported. |
| Battery modules | Partial | PiJuice HAT / Zero and PiSugar3 are supported. |
Strava heatmap.
RainViewer and openportguide are available worldwide.
In Japan, 気象庁降水ナウキャスト(rain) and SCW(wind) are available.
| Specs | Detail | Note |
|---|---|---|
| Basic page(values only) | Yes | |
| Graph | Yes | Altitude and performance(HR, PWR, W prime balance) |
| Customize data pages | Yes | With layout.yaml |
| ANT+ pairing | Yes | |
| Select course | Yes | local .tcx, Ride with GPS, and Android Google Maps via Bluetooth. |
| Upload activity | Yes | Strava, Garmin and Ride with GPS. |
| Select map | Yes | base maps, overlays, and external data sources |
| Adjust parameter | Yes | wheel size, altitude, CP and W prime balance |
| Network setting | Yes | Toggle Wi-Fi / Bluetooth, BT pairing / tethering, and GadgetBridge-related options. |
| Language localization | Yes | Font and translation file of items are required. |
| No GUI option | Yes | headless mode |
it displays three of the people around you in the order in which you caught sensors using ANT+ continuous scanning mode.
-
314km ride with GARMIN Edge Explore 2 and Pizero Bikecomputer (strava activity)
| Items | Edge830 | Pi Zero Bikecomputer |
|---|---|---|
| Distance | 313.7 km | 314.3 km |
| Work | 3,889 kJ | 3,926 kJ |
| Moving time | 12:03 | 12:04 |
| Total Ascent | 2,271 m | 1,958 m |
See hardware_installation.md for supported displays, GPS modules, I2C sensors, buttons, batteries, and assembly examples.
For a new Raspberry Pi OS Trixie setup, the recommended entry point is:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/hishizuka/pizero_bikecomputer/refs/heads/master/install.sh)"For macOS or Linux development, see the manual setup steps in software_installation.md.
This repository is available under the GNU General Public License v3.0
The code shown below is ported and modified from Azumo's code under the Apache License 2.0 (third_party/apache/LICENSE.Apache2). See the NOTICE file for details.
- modules/display/mip_display_base.py
- modules/display/cython/mip_display.cpp
This project also includes code ported and modified from the Apache NuttX RTOS project under the Apache License 2.0 (third_party/apache/LICENSE.Apache2). See the NOTICE file for details.
- modules/sensor/gps/cython/cxd5610_rpi.c
- modules/sensor/gps/cython/cxd5610_rpi.h
This project also includes code adapted from swiftcontrol under the GNU General Public License v3.0. See the NOTICE file for details.
- modules/sensor/ble/zwift_click_v2.py
This project also includes code ported and modified from Bosch Sensortec GmbH's code under the BSD 3-Clause License. See the NOTICE file for details.
- BHI360_SensorAPI
- modules/sensor/i2c/cython/bhi360_shuttle_board_3/common.c
- modules/sensor/i2c/cython/bhi360_shuttle_board_3/common.h
This project also includes code vendored from hishizuka/crdp, which is based on the original biran0079/crdp project by Ran Bi, under the MIT License. See the NOTICE file for details.
- hishizuka/crdp
- modules/utils/crdp.py
- modules/utils/_crdp.pyx
hishizuka (@pi0bikecomputer on X, pizero bikecomputer on STRAVA)


















