Skip to content

Repository files navigation

PropBench Logo

Version License Build Release Downloads Platform YouTube

Desktop application for benchmarking FPV propellers with real-time telemetry, thrust measurement, and automated test runs.

Watch the full build & setup guide on YouTube

📋 Table of Contents

Disclaimer

⚠️USE AT YOUR OWN RISK! This software and hardware setup involves high-speed rotating propellers and electrical components. The author assumes NO LIABILITY for any damage, injury, or loss resulting from the use of this project. Always follow safety precautions, use protective equipment, and ensure proper ventilation when testing.

STL Fles

The complete test stand can be 3D printed! Find all STL files and assembly instructions on my Printables profile. Direct model link: PropBench v2 - Test your propellers.

PropBench V2 Front View

PropBench V2 Assembled PropBench V2 Inside View

The test stand includes:

  • Load cell mounting bracket
  • Motor mount with adjustable positioning
  • Cable management clips
  • ESP8266 and OLED enclosure

Features

  • Real-time thrust measurement via load cell (ESP8266)
  • Betaflight FC integration via MSP
  • ESC telemetry (voltage, current, RPM, temperature)
  • Automated test runs (max thrust, acceleration tests)
  • Live plotting of telemetry data
  • CSV export for analysis

Hardware Requirements

  • Thrust Sensor: ESP8266 (NodeMCU, Wemos D1 Mini, etc.)
  • Load Cell: HX711 amplifier + load cell (up to 100g)
  • Flight Controller: Betaflight FC with ESC telemetry support
  • Motor & Propeller: ESC with BLHeli firmware
  • Test Stand: 3D printed test stand (STL files available on Printables)

Bill of Materials

Component Description
ESP8266 Wemos D1 Mini Microcontroller for load cell readout
HX711 + 100g Load Cell Load cell amplifier module + strain gauge sensor
SH1106 OLED Display 128x64 I2C display for local readout
Breadboard For mounting the Wemos D1 Mini
22mm Emergency Stop (NC) Normally closed safety switch
M3 Screws For assembly
Terminal Block For wiring connections
PLA Filament For 3D printed enclosure/housing
TPU Filament For 3D printed vibration-dampening feet

Firmware Setup

ESP8266 Firmware

The ESP8266 needs to be flashed with the custom load cell firmware included in this repository.

Option 1: Flash Pre-compiled Binary (Recommended)

  1. Download the latest firmware binary from Releases
  2. Use esptool.py or ESP8266 Flash Tool
  3. Flash to your ESP8266:
    esptool.py --port /dev/ttyUSB0 write_flash 0x00000 propbench-firmware-v2.0.0.bin

Option 2: Compile from Source (Developers)

The firmware source code is located in the firmware/ directory.

  1. Install Arduino IDE

  2. Add ESP8266 Board Support

    • Go to FilePreferences
    • Add to "Additional Board Manager URLs":
      http://arduino.esp8266.com/stable/package_esp8266com_index.json
      
    • Go to ToolsBoardBoards Manager
    • Search for "ESP8266" and install
  3. Install Required Libraries (via Library Manager)

    • HX711_ADC by Olav Kallhovd
    • U8g2 by oliver
  4. Configure & Upload

    • Open firmware/esp8266_load_cell.ino
    • ToolsBoardESP8266 BoardsNodeMCU 1.0
    • ToolsUpload Speed115200
    • ToolsPort → Select your ESP8266
    • Click Upload (Ctrl+U)

Alternative: PlatformIO

[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino
lib_deps =
    olikraus/U8g2@^2.35.9
    olkal/HX711_ADC@^1.3.0
monitor_speed = 115200

Wiring

Wiring Diagram

Load Cell → HX711 → ESP8266:

  • HX711 DT → ESP8266 D5 (GPIO14)
  • HX711 SCK → ESP8266 D6 (GPIO12)
  • HX711 VCC → ESP8266 3.3V
  • HX711 GND → ESP8266 GND

OLED Display (128x32 I2C) → ESP8266:

  • SDA → ESP8266 D2 (GPIO4)
  • SCL → ESP8266 D1 (GPIO5)
  • VCC → ESP8266 3.3V or 5V
  • GND → ESP8266 GND

Software Installation

npm install

Note: After cloning, run npm install to install the latest patched dependencies including Electron 35.7.5+ (security fix).

Usage

Running the Application

Download pre-built binary:

  • Download the latest release for your platform from Releases
  • Extract and run the executable

Or run from source:

Development mode (with hot reload):

npm run dev

Production mode:

npm start

First-time Setup

  1. Connect ESP8266: Plug in your ESP8266 with load cell
  2. Connect FC: Connect your Betaflight flight controller via USB
  3. Launch App: The app will auto-detect both devices
  4. Configure:
    • Select correct ESC (1-4) for testing
    • Set motor pole count (usually 12 or 14)
  5. Calibrate Load Cell: Place known weight and adjust calibration factor in firmware if needed

⚠️ Important: Load Cell Calibration

The load cell MUST be calibrated for accurate thrust measurements! Every load cell is different, and mechanical factors affect the readings.

Why calibration is required:

  • Manufacturing tolerances in load cells
  • Different mounting positions and angles
  • Temperature effects on sensor accuracy

Calibration Steps:

  1. Flash the firmware to your ESP8266 first
  2. Mount the load cell securely on your test stand
  3. Wire everything according to the wiring diagram
  4. Power on and observe serial output (115200 baud)
  5. Place a known weight on the load cell (e.g., 50g)
  6. Note the displayed value on OLED or serial monitor
  7. Calculate new calibration factor:
    new_factor = current_factor × (known_weight / displayed_weight)
    
    Example: If current factor is 8058.0, you place 50g weight, and it shows 45.2g:
    new_factor = 8058.0 × (50.0 / 45.2) = 8913.7
    
  8. Update the firmware:
    • Open firmware/esp8266_load_cell.ino
    • Change line 45: float calibrationValue = 8058.0; to your new value
    • Re-upload to ESP8266
  9. Verify: Place the known weight again - it should now read correctly
  10. Fine-tune: Repeat with multiple weights (e.g., 20g, 50g, 80g) for best accuracy

Default calibration value: 8058.0 (will likely need adjustment for your setup)

Taring (zeroing): Send t via serial monitor to zero the scale, or power cycle the ESP8266.

⚠️ Important: FC Sensor Calibration

The voltage and current sensors on your flight controller MUST be calibrated for accurate readings!

  • Voltage Sensor: Calibrate against a multimeter reading of your battery
  • Current Sensor: Calibrate amperage scale and offset in Betaflight Configurator

Uncalibrated sensors will result in incorrect voltage, current, and power measurements in the telemetry data. The app displays whatever values the FC reports - garbage in, garbage out!

How to calibrate in Betaflight:

  1. Connect to Betaflight Configurator
  2. Go to Power & Battery tab
  3. Measure actual battery voltage with multimeter
  4. Adjust voltage scale until Betaflight shows correct value
  5. For current: Use a known load or current meter to calibrate scale and offset
  6. Save settings

Running Tests

  1. Mount propeller on motor (ensure secure mounting!)
  2. Place motor on load cell test stand
  3. Select test case (Max Thrust, Acceleration, or Full Test)
  4. Click Start Test
  5. Monitor live telemetry and thrust data
  6. Save results to CSV for analysis

Build

Local build - Build executables for your platform:

# Build for Windows
npm run build:win

# Build for macOS
npm run build:mac

# Build for Linux
npm run build:linux

# Build for all platforms
npm run build:all

Output will be in the dist/ directory.

Automated builds - GitHub Actions automatically builds and creates releases:

  1. Bump the version in package.json (for example 2.0.0) and push to main
  2. GitHub Actions creates and pushes the tag automatically (v2.0.0)
  3. GitHub Actions builds for Windows, macOS, Linux, and ESP8266 firmware (propbench-firmware-v2.0.0.bin)
  4. Releases are automatically published to GitHub Releases with all binaries

Configuration

  • Thrust Sensor: Connect to ESP8266 port (auto-detected)
  • FC Connection: Connect to Betaflight FC port
  • ESC Selection: Choose motor 1-4 for testing
  • Motor Poles: Configure pole count for RPM calculation

Test Cases

  1. Max Thrust Test: Ramps to 100% throttle over 5s, holds, repeats 3x
  2. Avg Acceleration Test: Measures time to reach max thrust/RPM
  3. Full Test: Runs both tests sequentially

Troubleshooting

ESP8266 Firmware Issues

"HX711 not responding!" error:

  • Check wiring: DT→D5, SCK→D6, VCC→3.3V, GND→GND
  • Verify HX711 power LED is on
  • Try different GPIO pins if hardware issue suspected
  • Ensure load cell cables are properly connected to HX711

Display is black/not working:

  • Check I2C wiring: SDA→D2, SCL→D1
  • Verify display voltage (some need 5V, others 3.3V)
  • Display contrast is already at max (255) in code
  • Try a different I2C address if using SSD1306 instead of SH1106

Wrong thrust values displayed:

  • Recalibrate using known weight (see calibration section)
  • Check load cell is properly mounted and secured
  • Ensure no mechanical binding or friction
  • Verify nothing is touching/pressing the load cell

ESP8266 keeps restarting:

  • Insufficient power supply (use quality USB cable and power adapter)
  • Check for short circuits in wiring
  • Reduce I2C clock speed in code (line 20: change 800000 to 400000)

Desktop App Issues

ESP8266 not detected:

  • Install CH340/CP210x drivers for your ESP8266
  • Check USB cable supports data transfer (not just charging)
  • Try different USB ports
  • Restart the app after connecting hardware

FC not detected:

  • Ensure FC is in Betaflight mode (not bootloader)
  • Check FC has power (battery connected or USB powered)
  • Install STM32 VCP drivers if needed
  • Try different baud rates (115200 is default)

No telemetry data:

  • Verify ESC supports telemetry (BLHeli_S or BLHeli_32)
  • Check ESC telemetry is enabled in Betaflight
  • Ensure motor wires are connected
  • Calibrate FC sensors (see calibration section)

Technical Details

Serial Protocol (ESP8266)

The ESP8266 firmware outputs a simple line-based protocol at 115200 baud:

<float value>\n

Example output:

0.0
45.2
67.8
100.1

Commands:

  • Send t to tare (zero) the scale

Firmware Specifications

  • Baud Rate: 115200
  • I2C Clock: 800kHz (load cell data + OLED refresh)
  • Sampling Rate: 2 samples (HX711)
  • Display Update: Real-time (every loop)
  • Calibration Factor: 8058.0 (default, requires adjustment)

License

MIT License - see LICENSE

About

Desktop application for benchmarking FPV propellers with real-time telemetry, thrust measurement, and automated test runs.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages