Desktop application for benchmarking FPV propellers with real-time telemetry, thrust measurement, and automated test runs.
- Disclaimer
- STL Files
- Features
- Hardware Requirements
- Bill of Materials
- Firmware Setup
- Software Installation
- Usage
- Build
- Configuration
- Test Cases
- Troubleshooting
- Technical Details
- License
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.
The test stand includes:
- Load cell mounting bracket
- Motor mount with adjustable positioning
- Cable management clips
- ESP8266 and OLED enclosure
- 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
- 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)
| 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 |
The ESP8266 needs to be flashed with the custom load cell firmware included in this repository.
Option 1: Flash Pre-compiled Binary (Recommended)
- Download the latest firmware binary from Releases
- Use esptool.py or ESP8266 Flash Tool
- 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.
-
Install Arduino IDE
- Download from arduino.cc
-
Add ESP8266 Board Support
- Go to
File→Preferences - Add to "Additional Board Manager URLs":
http://arduino.esp8266.com/stable/package_esp8266com_index.json - Go to
Tools→Board→Boards Manager - Search for "ESP8266" and install
- Go to
-
Install Required Libraries (via Library Manager)
HX711_ADCby Olav KallhovdU8g2by oliver
-
Configure & Upload
- Open
firmware/esp8266_load_cell.ino Tools→Board→ESP8266 Boards→NodeMCU 1.0Tools→Upload Speed→115200Tools→Port→ Select your ESP8266- Click Upload (Ctrl+U)
- Open
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 = 115200Load 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
npm installNote: After cloning, run
npm installto install the latest patched dependencies including Electron 35.7.5+ (security fix).
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 devProduction mode:
npm start- Connect ESP8266: Plug in your ESP8266 with load cell
- Connect FC: Connect your Betaflight flight controller via USB
- Launch App: The app will auto-detect both devices
- Configure:
- Select correct ESC (1-4) for testing
- Set motor pole count (usually 12 or 14)
- Calibrate Load Cell: Place known weight and adjust calibration factor in firmware if needed
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:
- Flash the firmware to your ESP8266 first
- Mount the load cell securely on your test stand
- Wire everything according to the wiring diagram
- Power on and observe serial output (115200 baud)
- Place a known weight on the load cell (e.g., 50g)
- Note the displayed value on OLED or serial monitor
- Calculate new calibration factor:
Example: If current factor is
new_factor = current_factor × (known_weight / displayed_weight)8058.0, you place 50g weight, and it shows 45.2g:new_factor = 8058.0 × (50.0 / 45.2) = 8913.7 - Update the firmware:
- Open
firmware/esp8266_load_cell.ino - Change line 45:
float calibrationValue = 8058.0;to your new value - Re-upload to ESP8266
- Open
- Verify: Place the known weight again - it should now read correctly
- 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.
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:
- Connect to Betaflight Configurator
- Go to Power & Battery tab
- Measure actual battery voltage with multimeter
- Adjust voltage scale until Betaflight shows correct value
- For current: Use a known load or current meter to calibrate scale and offset
- Save settings
- Mount propeller on motor (ensure secure mounting!)
- Place motor on load cell test stand
- Select test case (Max Thrust, Acceleration, or Full Test)
- Click Start Test
- Monitor live telemetry and thrust data
- Save results to CSV for analysis
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:allOutput will be in the dist/ directory.
Automated builds - GitHub Actions automatically builds and creates releases:
- Bump the version in
package.json(for example2.0.0) and push tomain - GitHub Actions creates and pushes the tag automatically (
v2.0.0) - GitHub Actions builds for Windows, macOS, Linux, and ESP8266 firmware (
propbench-firmware-v2.0.0.bin) - Releases are automatically published to GitHub Releases with all binaries
- 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
- Max Thrust Test: Ramps to 100% throttle over 5s, holds, repeats 3x
- Avg Acceleration Test: Measures time to reach max thrust/RPM
- Full Test: Runs both tests sequentially
"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
800000to400000)
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)
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
tto tare (zero) the scale
- 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)
MIT License - see LICENSE


