BigBanger is an ESP32-based open-source project that combines firmware and hardware to create a Bluetooth-enabled scale, mainly designed for climbing training.
The firmware can be chosen between micropython, easy to read and customize, but poorer power consumption, or rust, where it gets a bit more complicated but improves the efficiency.
This scale is fully compatible with the Tindeq Progressor API, enabling easy integration with apps that support them, including the official Tindeq Progressor app.
The BigBanger board is designed to exploit the housing of cheap scales that you can buy on Amazon/Aliexpress.
Currently, the supported housing are:
This is not the first open-source Tindeq Progressor-like project. The hangman is a very similar example. BigBanger was developed from scratch as a personal learning experience.
-
firmware:
- upython contains the micropython firmware for the ESP32-C3
- rust contains the rust firmware for the ESP32-C3
-
hardware: contains the Kicad project for the PCB
- Rust toolchain and tooling installation compatible with ESP32-C3. Please follow the steps outlined here
-
Build the PCB from the Kicad project. Design is fully compliant with JLCPCB rules
-
The JLCPCB gerbers and assembly files are available in the release page
-
If you assemble the PCB with JLCPCB, go to step 3
-
-
Buy the components. Here is a full Digikey list of parts
-
Get to soldering!
Battery wiring:
- B+: Red
- B-: Black
Load cell wiring:
- E-: Black
- A-: White
- A+: Green
- E+: Red
-
Turn on the BigBanger and connect to PC using the microUSB
- Device should appear as
/dev/ttyACM*or/dev/ttyUSB*
- Device should appear as
-
Flash the ESP32-C3 micropython firmware. Instructions and firmware files are here
-
Copy the
.pyfiles in the 'firmware/upython' folder into the ESP32. Copy thehx711/hx711_gpio.pyfile into the ESP32. For this you can use rshell-
Modify the
main.pyfile. You need to specify the Bluetooth name for your device (If you want it compatible with the Tindeq Progressor, name must start withProgressor) as well as the crane scale used (Supported values areWH-C07andWH-C100) -
With rshell:
git clone --recursive https://github.com/FilMarini/bigbanger.git cd bigbanger/firmware rshell -p /dev/tty<your device> cp bb_gatt_server.py ble_advertising.py config.py hx711_bb.py utils.py hx711/hx711_gpio.py main.py /pyboard # Probably requires sudo privileges
-
-
Start training!
-
Install the rust toolchain for ESP32-C3. Please follow the guide
-
If you want to modify the Bluetooth advertisement name, change it in firmware/rust/.cargo/config.toml under
PROGRESSOR_NAME. Bear in mind that the advertised name must start withProgressor_in order to be recognized from the Tindeq App. -
Once the toolchain is set up, go into the Rust firmware directory and build in release mode:
cd firmware/rust cargo build --release -
With the BigBanger connected, flash the firmware:
cargo run --release
-
Start training!
The BigBanger scale comes pre-calibrated, but if for any reason the calibration is lost, you can recalibrate it using the built-in two-point calibration system. This system requires two weight measurements with a 10 kg difference—typically one at zero weight and another at 10 kg.
-
Turn on the BigBanger scale and ensure it is disconnected from any device.
-
Press and hold the Unit button until the LED D5 turns on (this takes a few seconds).
-
When the LED turns on, the scale performs the first measurement (normally at zero weight).
-
Add 10 kg weight on the scale.
-
Press the Unit button again. The LED D5 should turn off.
-
The scale is now calibrated and you can now connect to it.
Huge thanks to Tindeq for improving climbing training for all of us with their innovative product and for making their API available to third-party developers, enabling projects like this one. If you find this useful, consider supporting them by getting one of their products—they’re well worth it!
Special thanks also to kesyog for their excellent open-source project hangman, which provided valuable guidance and inspiration for the Rust firmware implementation. Since I started with zero Rust knowledge, having a working example to learn from was incredibly helpful — some parts of the code resemble the original hangman implementation.
