Skip to content

An ESP32-based Bluetooth-enabled scaling device for climbing training,compliant with the Tindeq Progressor API, with firmware available in Micropython or Rust.

License

Notifications You must be signed in to change notification settings

FilMarini/bigbanger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BigBanger 💥

BigBanger v1.0

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.

Repository structure

  • 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

Prerequisite

Micropython

Rust

  • Rust toolchain and tooling installation compatible with ESP32-C3. Please follow the steps outlined here

How-to Hardware

  1. 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

  2. Buy the components. Here is a full Digikey list of parts

  3. Get to soldering!

    Battery wiring:

    • B+: Red
    • B-: Black

    Load cell wiring:

    • E-: Black
    • A-: White
    • A+: Green
    • E+: Red
  4. Turn on the BigBanger and connect to PC using the microUSB

    • Device should appear as /dev/ttyACM* or /dev/ttyUSB*

How-to Firmware

Micropython

  1. Flash the ESP32-C3 micropython firmware. Instructions and firmware files are here

  2. Copy the .py files in the 'firmware/upython' folder into the ESP32. Copy the hx711/hx711_gpio.py file into the ESP32. For this you can use rshell

    • Modify the main.py file. You need to specify the Bluetooth name for your device (If you want it compatible with the Tindeq Progressor, name must start with Progressor) as well as the crane scale used (Supported values are WH-C07 and WH-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
  3. Start training!

Rust

  1. Install the rust toolchain for ESP32-C3. Please follow the guide

  2. 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 with Progressor_ in order to be recognized from the Tindeq App.

  3. Once the toolchain is set up, go into the Rust firmware directory and build in release mode:

    cd firmware/rust
    cargo build --release
  4. With the BigBanger connected, flash the firmware:

    cargo run --release
  5. Start training!

Calibration

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.

How to calibrate

  • 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.

Acknowledgements

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.

About

An ESP32-based Bluetooth-enabled scaling device for climbing training,compliant with the Tindeq Progressor API, with firmware available in Micropython or Rust.

Topics

Resources

License

Stars

Watchers

Forks