SkillAgentSearch skills...

Bonogps

A GPS setup to log your track lap times, based on ESP32, with the ability to interface with several mobile phone apps that log your speed and position via Bluetooth Low Energy, Bluetooth or WiFi

Install / Use

/learn @renatobo/Bonogps
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

What is BonoGPS?

For the track day enthusiast

The main goal of this device is to make GPS data (speed, location) available to mobile apps that can record data up to 25 Hz, for example for track riding. While there are many good (and not even too expensive) solutions out there, building one for yourself is a great experience.

Map of Buttonwillow lateral acceleration

Currently these apps are supported

  1. Harry's Lap Timer >> details here
  2. TrackAddict >> details here
  3. RaceChrono >> details here
  4. RaceTime >> details here

If you are not into the maker thing or if you don't know anyone who might be, look into RaceBox products like mini/miniS and even a 25Hz kit, or a XGPS160.

For the SW Engineer / maker

This repo contains software, a list of hardware, and (simple) schematics to build an ESP32 device that reads NMEA sentences from a GPS receiver compatible with u-blox M10 and M8 series, for example:

| GPS Module | Chipset | Max Refresh | Antenna Type | Recommended | Link | | ---------- | ------- | ----------- | ------------ | ----------- | ---- | | BK880 | M10 | 25 Hz | Active | ✓ Best | Store | | BK280 | M10 | 25 Hz | Passive | ✓ Best | Store | | BN880 | M8 | 10 Hz | Active | Good | Store | | BN220 | M8 | 10 Hz | Passive | Budget | Store | | DIYmall NEO-M8N | M8N | 10 Hz | Active | Compatible | Amazon |

Note: Active antennas provide better signal quality. M10 modules (BK880/BK280) offer 25Hz refresh rate which is ideal for track use. See GPS setup guide for detailed configuration.

and repeats them back to a logger device, either

  1. a Bluetooth Low Energy (BLE) service
  2. a BT Classic (BT-SPP) stream
  3. a TCP-IP socket

The logger device is likely going to be one of the Track Lap time apps listed above running on your phone.

Examples of actual devices are in hardware/assembled, at a cost of 25$ and 40$ (GPS receivers with active antennas are a little bit more expensive but worth it, and a larger battery helps as well)

Prototype picture

A web configuration (basic responsive HTML) panel allows changing configuration and selecting GPS parameters on the fly: access it via http://bonogps.local (when in WiFi AP mode, this becomes http://10.0.0.1 on Android without mDNS resolution).

The settings required by each app are available as presets that you can load for your device (iOS, Android). More information on what version, features, and connections of each app are in software/connecting.

You can also interface your GPS to uBlox u-center via TCP-IP. In this case, be aware that the UART speed is fixed.

Diagram of project components

Project diagram

Quick Start Guide

New to BonoGPS? Get started in 5 steps:

Step 1: Get the Hardware (Budget: $30-60)

Minimum setup (~$30):

  • ESP32 DevKit board (~$8-12) - Amazon
  • BN220 GPS module (~$15-20) - Beitian Store
  • USB cable for programming/power
  • Basic jumper wires

Recommended setup (~$45):

  • ESP32 DevKit or LOLIN D32 PRO (~$12-20)
  • BN880 GPS with active antenna (~$25) - Beitian Store
  • Li-Ion battery (650-2000mAh, ~$5-10)
  • Case or 3D printed enclosure

Best performance (~$60):

  • LOLIN D32 PRO with built-in battery charger (~$15-20)
  • BK880 or BK280 GPS (M10, 25Hz) (~$35-45) - Beitian Store
  • 2000mAh Li-Ion battery (~$8-12)
  • Custom 3D printed mount

Step 2: Wire It Up (15 minutes)

Connect GPS to ESP32 - only 4 wires needed:

  • GPS VCC → ESP32 3.3V (power)
  • GPS GND → ESP32 GND (ground)
  • GPS TX → ESP32 RX (GPIO 16 on DevKit, GPIO 4 on LOLIN D32 PRO)
  • GPS RX → ESP32 TX (GPIO 17 on DevKit, GPIO 2 on LOLIN D32 PRO)

See detailed wiring diagrams: Generic ESP32 | LOLIN D32 PRO

Step 3: Configure GPS Module (30 minutes)

Critical: GPS must be configured before first use.

  1. Download u-blox u-center
  2. Connect GPS to computer via USB-to-serial adapter
  3. Follow the GPS configuration guide
  4. Set baudrate to 115200
  5. Enable required NMEA messages
  6. Save configuration to GPS flash memory

Step 4: Build and Upload Software (20-45 minutes)

Option A: Arduino IDE (easier for beginners)

  1. Install Arduino IDE 2.x
  2. Add ESP32 board support
  3. Install required libraries (see library list)
  4. Open bonogps.ino
  5. Select "ESP32 Dev Module" or "LOLIN D32 PRO"
  6. Select "Minimal SPIFFS (1.9MB)" partition scheme
  7. Upload to ESP32

Option B: PlatformIO (recommended for developers)

  1. Install VS Code + PlatformIO
  2. Clone this repository: git clone https://github.com/renatobo/bonogps.git
  3. Open project folder in VS Code
  4. Select build target for your board
  5. Build and upload

See detailed instructions: Software build guide

Step 5: Connect to Your App (10 minutes)

  1. Power on BonoGPS - wait for GPS fix (LED blinks once/second)
  2. Connect phone to BonoGPS-XXXX WiFi network
  3. Open browser to http://10.0.0.1
  4. Go to Device > Load Preset - select your app and platform
  5. Enable appropriate connection (BLE/BT-SPP/TCP-IP)
  6. Open your lap timer app and connect

Supported apps: Harry's Lap Timer | TrackAddict | RaceChrono | RaceTime

Need help? See Troubleshooting FAQ below.


Known Good Configurations

These hardware and app combinations have been tested and confirmed working. Use these as reference if you want a guaranteed-to-work setup.

Budget Build - iOS ($45)

Hardware:

  • ESP32 DevKit (~$10)
  • BN880 GPS with active antenna (~$25)
  • 1000mAh Li-Ion battery (~$6)
  • Micro USB cable for programming
  • Basic transparent case

Software & Connection:

  • Harry's Lap Timer (iOS)
  • Connection: BLE
  • Preset: "Harry's Lap Timer iOS BLE"
  • Expected performance: 10Hz, good accuracy (2-3m)

Why this works: BN880 active antenna provides reliable signal, BLE is native to iOS, Harry's Lap Timer has best BLE support.

Best Performance - iOS ($65)

Hardware:

  • LOLIN D32 PRO (~$18)
  • BK880 GPS M10 with active antenna (~$40)
  • 2000mAh Li-Ion battery (~$10)
  • Custom 3D printed mount

Software & Connection:

  • Harry's Lap Timer (iOS)
  • Connection: BLE
  • Preset: "Harry's Lap Timer iOS BLE"
  • Expected performance: 20Hz over BLE, excellent accuracy (<2m)

Why this works: M10 chipset supports 25Hz, LOLIN has battery management, BLE optimized for iOS. Best overall iOS solution.

Budget Build - Android ($35)

Hardware:

  • ESP32 DevKit (~$8)
  • BN220 GPS with passive antenna (~$18)
  • Powered via USB (no battery)
  • Velcro mounting

Software & Connection:

  • RaceChrono (Android)
  • Connection: BT-SPP
  • Preset: "RaceChrono Android BT-SPP"
  • Expected performance: 10Hz, good accuracy in open areas

Why this works: BT-SPP is most reliable on Android, RaceCh

Related Skills

View on GitHub
GitHub Stars104
CategoryDevelopment
Updated6d ago
Forks25

Languages

C++

Security Score

100/100

Audited on Mar 21, 2026

No findings