Raspberry Pi model Pi Zero W based

up to 8h of battery life (*)

bluetooth low energy (BLE)

equipped with high precision GPS MTK3339 (**)

high precision barometer, thermometer and altimeter Bosch BMP280

PiTFT 2.8" colour touch screen

easily editable layouts in YAML

(*) 8h21m without wifi on 2500mAh battery

(**) Work in progress.

Designed in FreeCAD. Coded in python3.

Open hardware and open software.

OCC screen 1 OCC screen 2 OCC screen 3

OCC screen 4 OCC screen 5 OCC screen 6

OCC screen 7 OCC screen 8 OCC screen 9

OCC screen 10 OCC screen 11 OCC screen 12

This is work in progress, so currently most of the info is hosted under other addresses:


Buy me a coffeeBuy me a coffee, no pressure :-)



Software documentation is here

Changelog v0.14:

- Add ds18b20 1-wire thermometer plugin

- One-page-per-file layouts.

- Add rel_origin option, abs_origin option in page definition. Allows more consistent definition or repeated elements

- Add kalman filtered heart rate

- Add BLE services/characteristics scanning & logging

- Filter for devices providing required service, so user looking for heart rate BLE device won't see neighbour's TV set

- Add text alignment on point. Text aligned "on point" will keep the point (comma or any rightmost non-digit) fixed

- Code cleaning, formatting, typos, and hardening

Changelog v0.13:

- More formats, units and layouts

- BLE scanning and device selection

- More flexibility in layout/plugin design with long_click and short_click calls

- Updated documentation [WIP]

- Approximate gear ratio calculation in bicycle plugin

- Graphical overlays to show messages to the user. Used for BLE scanning and battery status

- Pimoroni LiPo shim plugin to show battery status

- Split data dumping and writing to file to avoid file corruption

- Fixed problem with finger on the screen, but not moving (long click)

- Code cleaning and hardening

Changelog v0.12:

- plugin methods can be linked to layout buttons, i.e short click on button runs method "do_something_awesome" from plugin "my_plugin"

- page text colour is now used

- list editor (select item from list) added. Used for wheel size. Allowed values are stored in config file

- Code cleaning, refactoring, decoupling and hardening

- documentation

- initial version of demo code how tu use pyplum (PYthon PLUgin Manager) to make simple weather station. See weather.sh (WORK IN PROGRESS)

Changelog v0.11:

- added draft of plugins and layout API description

- added simple example of sensor monitoring (weather.py) with independent config and layout

- ride log defined in config file

- added plugins system, cadence resetting session distance

- fixed average heart rate calcs, added pounds to weight units

- use Gidole font, bug fixes, code cleaning and hardening

Changelog v0.10:

- Odometer editable from Statistics, editors use zoom & colour, pressure sensor bmp183 replaced with bmp280 (kernel driver), bug fixes & code cleaning

Changelog v0.09:

- Change to notification system, code hardening and lot, lot of code cleaning

Changelog v0.08:

- Added slope calculation, new stats page, lot of code cleaning

Changelog v0.07:

- Added altitude calculation, BLE icon now shows number of connected bluetooth devices

Changelog v0.06:

- Added schematic (KiCad), multpile layout changes, code cleaning, fixed ghost click, bmp183 sensor activated

Changelog v0.05:

- pygame replaced with cairo and python-evdev, python3 migration, BLE connection hardening

Changelog v0.04:

- Convert config and layout files to yaml

Changelog v0.03:

- Add working BLE scanner / selector

Changelog v0.02:

- Lot of BLE changes, (heart rate sensor, icon showing connection states)

Changelog v0.01:

- BLE connectivity to speed & cadence sensor (initial version, hardcoded address)

- various bug fixes & code cleaning