Bike Computer & Tracker
Velo is a small screen with a built in GPS chip, powered by an ESP-12F.


Ai-Thinker ESP-12F

The heart of most ESP8266 Huzzah breakouts, it has on board WiFi and 4MB storage for user programs. It can be programmed with the Arduino IDE.

Quectel L80-M39 GPS Module

A low-power, surface mountable GPS module. It is capable of polling satellites at 10Hz but this project only requests the bikes position once every 10 seconds.


The Li-Po charging IC, used in conjunction with an over-drain protection IC to safely charge and use the battery.

Generic ST7789 IPS Screen

A small 240x240 pixel IPS display, I'd prefer OLED for power reasons but there is a dedicated BLK pin on the breakout so it is trivial to power it off when not in use.

All of these components are mounted on a custom PCB and housed in a 3D printed case. The device then sits in the middle of the handlebars.


On Device

All on device code is C++, uploaded via the Arduino IDE. The code is light and boots in seconds, GPS lock takes around a minute due to the lack of an external antenna.

Base Station

When the device is on charge the WiFi activates, searches for the Base Station which is a Raspberry Pi W running an HTTP server, and dumps it's logs in JSON format to a file ready to be processed. A route map is constructed with the GPS data and displayed using OpenStreetMaps. Stats such as average/top speed and estimated calories burned are also shown.