To weigh large items like bicycles or suitcases, standard scales are often impractical. This solution uses up to four small scales that transmit weight measurements to an ESP32 module, which then displays the aggregate total. For the wireless transmission, the lightweight ESP-NOW communication protocol is used.

The Project

I recently wanted to weigh my bicycle and found the conventional method — weighing yourself on a bathroom scale with and without the bike and calculating the difference — quite cumbersome. Similarly, it is frustrating to comply with airline weight limits when traveling with oversized luggage or bike bags. My solution employs several compact, interconnected scales; they transmit real-time data to a receiver wirelessly, which sums up the values.

In this project, each of the four scales has a 10-kg capacity (depending on the strain gauge used), providing a total limit of 40 kg. Higher weight ranges are easily achievable with alternative sensors. The system is highly intuitive: for a bicycle, simply place a scale under each wheel. For rectangular items like suitcases or boxes, place a scale under each of the four corners to determine the total mass!

Electronic Modules

Each component — the scales and the receiver — features an ESP32 module with an integrated OLED display (type HW-724, Figure 1). This simple 0.96-inch display with a SSD1306 driver offers 128 × 64 pixels.
 

Wireless scales : Figure 1: The HW-724 module features an ESP32 SoC and an integrated OLED display mounted directly on the PCB.
Figure 1: The HW-724 module features an ESP32 SoC and an
integrated OLED display mounted directly on the PCB.

Each scale incorporates an HX711 precision weighing module (Figure 2), which digitizes analog data from a weight sensor — the latter integrating four strain gauges, fixed on a metal rod, in a Wheatstone bridge configuration. The HX711 precision weighing module utilizes a 24-bit resolution ADC for high-accuracy measurements. The connections for the sensor bridge are: E+ = positive power (AVDD), E- = negative power (GND), A+ = positive input (INA+), and A- = negative input (INA-). The designations in brackets correspond to
the datasheet.

HX711 module
Figure 2: A HX711 precision weighing module digitizes analog
data from a weight sensor. 

The resulting data is converted with 24-bit resolution and made available via I2C. As shown in Figure 3, the HX711 module is mounted directly to the back of the ESP32 board.

The HX711 board is attached to the rear of the ESP32 module.
Figure 3: The HX711 board is conveniently attached to the rear of the ESP32 module.

As already mentioned, the ready-assembled weight sensor I used (Figure 4) is designed for a maximum weight of 10 kg.
 

An aluminum square bar with four strain gauges
Figure 4: The sensor uses an aluminum square bar with four strain gauges in a
Wheatstone bridge. A central elongated hole increases its sensitivity.

These sensors (see the next section) are inexpensive and readily available; other sensors for other weight ranges can be used too.

Weight Sensors

A weight sensor of the type I used consists of an aluminum rod with mounting holes at the ends and a central “double hole” cutout. This thins the material; when the rod bends, it causes increased elongation or compression in the areas surrounding the hole. This can be detected by strain gauges.

 Weight Sensors text box
Source: Cristian V., Wikimedia, CC BY 4.0

A strain gauge consists of a thin layer of metal (or semiconductor material) applied in a meandering pattern on a thin plastic layer as a carrier to increase or decrease the conductor’s active length (left image). The strain gauge is bonded to the metal to detect its length changes caused by bending. In the case of strain gauges with a metallic layer, the thin, meandering layer expands accordingly and alters not only its length but also its cross-section, which also changes its resistance. Because these resistance changes are minute, an electronic circuit is essential to ensure measurement accuracy.

Optimal results are achieved with four strain gauges in a Wheatstone bridge configuration (right image). This setup detects bending directions and compensates for temperature drift.

Circuit

The block diagram in Figure 5 illustrates how the four parts have to be connected. It is so simple that a formal BOM can be omitted. The weighing sensor has four wires connecting its Wheatstone bridge to power (E+), GND (E-), and the inputs (A+, A-) of the HX711 module (see Figure 2). The HX711 is communicating with the ESP32 module by I2C using ports 13 and 15. A push button handles calibration and taring.

Scale block diagram
Figure 5: The scale’s block diagram consists of only four modules and a push button.

The complete power of each scale stems from a DIY power bank. Its 5-V output is connected to the ESP32 module. The ESP32 board is equipped with a 3.3-V voltage regulator, which makes it easy to power the HX711. No dedicated power switch is needed as the power bank includes one. Furthermore, a “no sleep signal” is unnecessary because the ESP32 draws sufficient current to keep the power bank active.

The receiver uses the same ESP32 module as the scales: a HW-724. It, too, can be powered by a power bank or directly via a small 5-V charger.

Software

All software is written in Arduino version V1.8.19 and available via this page. Each scale requires a unique hard-coded ID (variable SCALE_ID). So the code must be compiled individually for each unit.

Upon startup, the software executes a tare function to set the display to 0 kg. Ensure the scale is empty during this process. Once “0” appears, you can begin measuring. A short press of the button triggers the tare function.
After that, measurements are taken every 100 ms. If a change in weight is detected, the value is sent to the receiver.

Holding the button during power-on starts a full calibration. You will need a precise 200 g reference weight (like a glass of water) to place on the scale when prompted. The software then generates a correction coefficient, stored in the ESP32’s flash memory, to be used for all future measurements. The scale’s ID is also shown on the display.

Data transmission utilizes the ESP-NOW protocol. This is a wireless protocol designed by Espressif, it uses the PHY-layer of Wi-Fi, but does not have its huge overhead. For referring to other participants in the communication, simply MAC addresses are used. For our project, using the receiver’s specific MAC address ensures reliable communication. For that, the program includes a simple function to read the MAC address. A compilation switch allows you to run this once to retrieve and record the address.

The receiver listens for ESP-NOW data, extracting the ID and weight for each scale and displaying them line-by-line. If a scale is missing or stops transmitting, its previous data is cleared, and the final combined sum is updated.

Design

I used circular Plexiglass sheets for the base and top. The sensor has two mounting holes on each side. One side is secured to the base with a screw and acrylic spacer, while the other is fixed in the same way to the top plate. The ESP32 is attached to the side via a bent aluminum sheet and double-sided tape for insulation and stability.

After mounting the sensors, ESP32 modules, and the internals of the DIY power banks (PCBs and lithium batteries), the scales were ready for testing. Figure 6 shows one of my scale prototypes.
 

Scale prototype
Figure 6: Scale prototype views: (a) shows the power bank PCB, battery,
and central sensor; (b) shows the ESP32’s rear with the HX711 module

Figure 7 shows two scales and the receiver in a measuring experiment. With the left scale at 463 g and the right at 354 g, the receiver correctly displays 817 g. Despite the high resolution, it should be clear that 1 g variance is negligible for luggage weighing.

Wireless scales: complete system
Figure 7: The complete system with two scales and one receiver.
Racing bike on 2 wireless scales
Figure 8: My racing bike on top of two scales.

Final Remarks

A four-scale system is sufficient for suitcase weights up to 40 kg, exceeding most airline limits. For my specific use — tracking every gram of my racing bike — two scales with a combined range of 20 kg are plenty for that purpose (Figure 8). The software can certainly be optimized for additional convenience or features. Happy experimenting!


Questions or Comments?

Do you have technical questions or comments about this article? Please write to the author at laurent.elektor@gmail.com or contact the Elektor team at editor@elektor.com.


Editor's Note: This article (250727-01) appears in Elektor May/June 2026.

Subscribe
Tag alert: Subscribe to the tag Test & Measurement and you will receive an e-mail as soon as a new item about it is published on our website!