Skip to content

Repository files navigation

Pedal Guru

⚠️ This project is under active development. The documentation is growing along the project as it's a work-in-progress. If interested, please check the development board and the reference diagram.

An open-source DIY project to bring useful resources that are appreciated by cyclists to easy-to-work platforms like RP2040 (Raspberry Pi Pico) and ESP32-S3, in a more organized manner than usual. The intention is to include integration with some popular services.

Currently supports RP2040 (Raspberry Pi Pico), ESP32 and desktop simulator (Windows+WSL) from a single codebase. 🦖 Provided by dot-ll-collection


🖥️ Supported Platforms

Platform RP2040 ESP32
Pinout RP2040 LCD 1.28 ESP32-S3 LCD 1.28
Device RP2040-LCD-1.28 ESP32-S3-LCD-1.28
Toolchain arm-none-eabi-gcc + Pico SDK xtensa-esp32-elf-gcc + ESP-IDF
Output .uf2 .bin

🛒 B.O.M. (Bill Of Materials)

  • One of the target devices:
  • MicroSD to SD card adapter (for easy soldering): SDCARD
  • MicroSD card
  • 2 x 10K resistors (for pull-up): R1, R2
  • 1 x 10uF capacitor (for decoupling): C1
  • 2 x 49E hall sensor (for navigation): HS1, HS2
  • 2 x 1.27mm 2x10Pin header (for connecting components to target device)

If the choosen target is RP2040, additional hardware is required:

  • 1 x RM2 (CYW43 based) radio: CYW43
  • 1 x 10K resistor (for gSPI multiplex): R3
  • 1 x 470ohms resistor (for gSPI multiplex): R4

Optional for prototyping:

  • Some nice silicone wires (28 AWG recommended)

🔌 Wiring

The below table shows connections in a way that you can create a header connector/shield board to swap between the target devices.
⚠️ Connect it to the RP2040 or to the ESP32. You're NOT supposed to wire RP2040 and ESP32 together.

RP2040 ESP32 R1 R2 C1 SDCARD LCD** GPS HS1 HS2 R3* R4* CYW43*
GP0 GP46 MISO pin7 (DAT0/MISO)
GP1 GP45 CS pin1 (DAT3/CS)
GP2 GP42 pin5 (CLK/SCK)
GP3 GP41 pin2 (CMD/MOSI)
GP5 GP39 pin3 (VSS1/GND)
GND GND GND pin6 (VSS2/GND) GND GND GND pin1 (GND)
3V3 3V3 3V 3V3 3V3 pin4 (VDD/3V3) VCC/3V3 3V3 3V3 pin14+pin16
GP8 GP8 DC
GP9 GP9 CS
GP10 GP10 CLK
GP11 GP11 DIN/MOSI
GP12 GP12 RST
GP25 GP40 BL
GP16 GP13 TX
GP13 GP18 RX
GP14 GP17 OUT
GP15 GP16 OUT
IRQ pin10 (IRQ)
DOUT pin6 (DOUT)
GP19 pin12 (ON)
GP19 pin13 (ON)
GP20 DIN DIN pin5 (DIN)
GP21 pin3 (SCK)
GP22 pin9 (CS)

* Required only for RP2040. ** The LCD connection is internally made on these devices, GP pins just for reference.


📋 Software Requirements

  • Host: Linux or Windows 10 PC with WSL 2 (Windows Subsystem Linux) - Ubuntu is recommended — code edited on Windows, compiled inside WSL
  • IDE: Kiro or VSCode
  • RP2040: arm-none-eabi-gcc, Pico SDK (installed via Setup: RP2040 toolchain)
  • ESP32: ESP-IDF ≥ 5.x, xtensa toolchain, espflash (installed via Setup: ESP32 toolchain)
  • CMake ≥ 3.16

The preferred IDE is Kiro, which provides agent-assisted development with project-aware context via AGENTS.md. The project also works fully with VS Code — all tasks and settings are configured in .vscode/.


🚀 Getting Started

1. Clone with submodules

git clone --recurse-submodules --shallow-submodules -b feature/RP2040-migration https://github.com/juliannojungle/pedal.guru

This single command clones the repository and all bundled dependencies (gui.ll and it's dependencies) in one step. No separate dependency installation needed.

2. Set up the toolchain

Before building for the first time, install the required toolchain for your target platform. The recommended way is via the built-in tasks.

In Kiro or VS Code — open the Command Palette (Ctrl+Shift+P) and select Tasks: Run Task, then choose:

  • Setup: RP2040 toolchain in WSL — installs arm-none-eabi-gcc and Pico SDK
  • Setup: ESP32 toolchain in WSL — installs ESP-IDF, xtensa toolchain, Rust, and espflash

These scripts are idempotent — safe to run again if you need to repair an installation.

3. Build

Once the toolchain is ready, build using the tasks:

In Kiro or VS Code — open the Command Palette (Ctrl+Shift+P) → Tasks: Run Task:

Task Description
Build: Full RP2040 Clean CMake configure + make for RP2040
Build: Full ESP32 Clean idf.py build for ESP32
Build: Incremental Auto-detects platform, runs make or ninja

Alternatively, trigger the default build task directly with Ctrl+Shift+B (runs Build: Incremental).


📄 License

See LICENSE.


@juliannojungle, 2022

About

Pedal Guru is an open-source software for bicycle computers based on Raspberry Pi Pico and ESP32.

Topics

Resources

Stars

25 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages