Skip to content

j0b333/ESP32RowingMachine

Repository files navigation

ESP32 Rowing Monitor

A smart rowing machine monitor firmware for ESP32-S3 that transforms a rowing machine into a connected fitness device with Bluetooth FTMS support and a real-time web interface.

Features

  • Bluetooth FTMS - Works with Kinomap, EXR, MyHomeFit, and other fitness apps
  • Web Interface - Real-time metrics via WiFi on any browser
  • Heart Rate Support - Connects to BLE heart rate monitors
  • Accurate Metrics - Physics-based power, pace, and distance calculations
  • Session Storage - Saves workouts with full data for later sync

Quick Start

Hardware

Component Connection
ESP32-S3 DevKitC-1 USB-C for power
Flywheel reed switch GPIO 15 + GND
Seat reed switch GPIO 16 + GND

Build & Flash

Requires ESP-IDF v6.0+.

git clone https://github.com/j0b333/ESP32RowingMachine.git
cd ESP32RowingMachine
idf.py set-target esp32s3
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor

Connect

  1. Connect to WiFi: CrivitRower (open network, no password)
  2. Open browser: http://192.168.4.1
  3. Connect it to your local wireless network or use it directly using http://rower.local
  4. Start rowing!

Note: ESP32-S3 has known issues with WPA2 softAP. Using an open network is more reliable. Once connected to your home WiFi, the device uses your router's security.

Documentation

Full Documentation - Complete guides and references

Guide Description
Setup Guide Hardware wiring, building, configuration
API Reference REST endpoints and WebSocket interface
Architecture System design and modules
Physics Model How metrics are calculated

Screenshots

Row Tab

Real-time rowing metrics display with power, distance, pace, and heart rate.

Row Tab

Graph Tab

Live graphs showing pace, power, and heart rate over time.

Graph Tab

History Tab

View and manage your saved workout sessions.

History Tab

Settings Tab

Configure weight, heart rate zones, units, and advanced options.

Settings Tab

Companion App

Sync workouts to Samsung Health / Google Fit: ESP32RowingMachineCompanionApp

Troubleshooting

WiFi Connection Issues

If clients cannot connect to the "CrivitRower" WiFi network:

  1. Verify the password - Default is 12345678 (8 characters required for WPA2)
  2. Check the logs - Look for disconnect reason codes in the serial output
  3. Try different devices - If only some devices fail, it may be client-specific
  4. Test WiFi hardware - Access http://192.168.4.1/api/wifi/status from a connected device to see diagnostics:
    {
      "diagnostics": {
        "wifiHardwareOk": true,
        "nearbyNetworks": 5,
        "hardwareHint": "WiFi hardware appears functional"
      }
    }
  5. If diagnostics show hardware issues - The ESP32's antenna may be damaged. Try a different ESP32 board.

Common log messages and their meanings:

  • removing station after unsuccessful auth/assoc - Client failed to authenticate (wrong password or client issue)
  • AUTH_FAIL - Authentication failed, check password
  • HANDSHAKE_TIMEOUT - Possible hardware issue or interference
  • ASSOC_FAIL - Association failed, may indicate hardware problem

Known ESP32-S3 SoftAP Issues

There is a known bug in ESP-IDF affecting ESP32-S3 softAP mode where some iOS/Android devices fail to connect (GitHub issues #13508, #13608, #13210). This issue does not affect the original ESP32.

Workarounds:

  • Use an original ESP32 board instead of ESP32-S3
  • Try downgrading to ESP-IDF v4.4.x
  • Reboot your phone and try connecting again
  • Put your phone in airplane mode, then enable WiFi only (disable cellular)

License

MIT License - See LICENSE for details.

Acknowledgments

This project is inspired by and builds upon the work of the open source community. See Attributions for credits including:

AI Disclaimer

This was done purely as a hobby project for my own usage. Therefore it was also almost completly vibe coded. You are free to use or add on to it as you see fit but I cannot guarantee great code.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors