Build Your Own Wireless Soap Box Derby Racing Scales

by dauwerda in Workshop > Tools

424 Views, 3 Favorites, 0 Comments

Build Your Own Wireless Soap Box Derby Racing Scales

20261008_092903.jpg
Clean Yellow Soapbox Car Workshop Scene.png
Screenshot_20261016_100635_Chrome.jpg
20261016_100710.jpg
20261001_173651.jpg
20260922_232757.jpg
20261008_092944.jpg

Commercial racing scales are available, but they are expensive. I wanted a system that I could build myself to save money and also customize to be more applicable to soap box derby car setups.

This project is the result: a set of four wireless scale pads, one for each wheel of the car. Each pad uses four 50 kg load cells and an HX711 amplifier. An ESP32 on each pad wirelessly sends the measurements to a central controller.

The system calculates:

  1. Front Left (FL) weight
  2. Front Right (FR) weight
  3. Rear Left (RL) weight
  4. Rear Right (RR) weight
  5. Total weight
  6. Front total
  7. Rear total
  8. Back − Front differential
  9. Cross Bind (RL − RR)

The results can be viewed on an optional touchscreen or from a phone, tablet, or computer using a web browser.

The scale pads are 3D printed ( I used PETG), but the electronics and software are designed so that the system could also be built using other types of platforms - could be as simple as mounting the load cells on a piece of plywood.


How It Works

TOUCHSCREEN
│
Wi-Fi
▼
┌───────────────┐
│ PARENT │
│ XIAO ESP32-S3 │
│ FL │
└───────┬───────┘
│
Wireless
communication
┌───────────┼───────────┐
▼ ▼ ▼
┌───────┐ ┌───────┐ ┌───────┐
│ FR │ │ RL │ │ RR │
│ESP32C3│ │ESP32C3│ │ESP32C3│
└───────┘ └───────┘ └───────┘

The FL scale is the Parent and acts as the main controller for the system. The FR, RL, and RR scales are the Child scales.

Each scale pad has its own HX711 amplifier and ESP32 microcontroller. The three Child scales wirelessly transmit their raw sensor measurements to the Parent. The Parent combines those measurements with its own FL measurement and performs the necessary calculations.

The Parent then makes the results available over Wi-Fi to the touchscreen and other devices connected to the system.

The Parent creates its own Wi-Fi network, allowing the system to operate without an existing Wi-Fi network. It can also be configured to connect to an existing Wi-Fi network.


Built for Consistent, Reliable Weighing

A reliable weighing system requires more than simply reading load-cell values. The firmware is designed to produce stable, repeatable measurements and provide clear feedback so users can have greater confidence in the displayed results.

  1. Multi-point calibration: Each scale pad is calibrated at three points: zero, a known low weight, and a known high weight. This allows the firmware to account for the relationship between sensor output and applied weight across the operating range, rather than relying on a single calibration point. The resulting calibration curve can also help account for slight nonlinearity in the load cells.
  2. Noise-resistant measurements: Load-cell signals naturally fluctuate. The firmware processes multiple samples and uses filtering to reduce the effects of isolated spikes and other short-term fluctuations. It also evaluates whether readings are sufficiently stable before treating them as settled.
  3. Stability detection: When a reading settles, the firmware can hold that value on the display rather than allowing small fluctuations to make the numbers constantly change. It continues monitoring for meaningful changes so the display can respond when weight is added or removed.
  4. Calibration checks: Calibration captures are evaluated for consistency and stability. The guided calibration process adds repeatability checks at the known low and high weights, helping identify measurements that may need to be repeated. Calibration changes are saved only after the required steps are completed. Guided calibration can also help identify potential mechanical issues, such as bolts being overtightened or other sources of mechanical binding.
  5. Coordinated four-pad measurements: The system combines readings from all four pads to calculate total weight, front and rear axle weights, and weight-distribution measurements such as tail weight and cross bind. This makes it possible to evaluate the car as a complete system rather than relying on individual pad readings.
  6. Clear status reporting: The system tracks whether individual pads are connected and providing current data. When the touchscreen detects that the Parent is disconnected, it marks the readings as offline rather than presenting old measurements as though they were current.

The result is a weighing system designed around stable readings, repeatable calibration, coordinated measurements, and clear feedback—all important when setting up a Soap Box Derby car and comparing its weight distribution before and after adjustments.


Known Limitations

This project is designed as a DIY weighing tool, not as a certified commercial weighing instrument.

Accuracy depends on the load cells, mechanical construction, and calibration weights used. In my own testing, the system has produced repeatable readings to the nearest tenth of a pound. Actual accuracy may vary depending on the setup, calibration, and operating conditions.

The displayed battery percentage is an estimate based on battery voltage. It should be used as a general indication of remaining battery charge, not as an exact measurement of remaining battery capacity.

Supplies

20261003_113700.jpg
20261003_113713.jpg
20261003_134014.jpg

Scale Pads

Required:

  1. 3D Printed pads (can also use other types of pads, even just a piece of plywood): https://a.co/d/0cyS43Nx
  2. HX711 and Load Cells: https://a.co/d/0eJpaUW9 (16 load cells and 4 HX711's required - need qty 2 of link)
  3. XIAO ESP32S3: https://a.co/d/09wvwMzr (1 required for FL scale - need qty 1 of link)
  4. XIAP ESP32C3: https://a.co/d/04IquvvQ (3 required for project - 1 for each of FR, RL, RR - need qty 1 of link)
  5. Batteries: https://a.co/d/0djELrWV (4 required - need qty 1 of link)
  6. Pad Bolts (if using my 3d printed pads): https://a.co/d/065FgVM7 (8 required for project - need qty 1 of link)
  7. Screws (for attaching PCB board to pads): https://a.co/d/03iY2MrO (assorted, need qty 1 for project)
  8. Contact Bearing Plates (required if using 3D printed pads): https://a.co/d/05BSXkfv (16 required for project - need qty 1 of link)


Optional but recommended:

  1. 100k Ohm Resistors (required if you want battery percentages): https://a.co/d/0fXI1mwj (8 required for project - need qty 1 of link)
  2. Momentary Switch (optional if you don't use the sleep function): https://a.co/d/03rEowe5 (4 required for scales, 1 for touch screen - need qty 1 of link)


Optional:

  1. PCB Plate (optional, can use wires to make all connections instead): Ordered from https://jlcpcb.com/ using gerber file package (the zip file called "Scale PCB.zip" found here: https://drive.google.com/drive/folders/1szjxl53Nsz94QvEfXbWfN-7HOwVxadqa?usp=sharing (4 required for project)
  2. 2pt connector (optional, can solder directly): https://a.co/d/0h726P39 (8 required for project - need qty 1 of link)
  3. 4pt connector (optional, can solder directly): https://a.co/d/0jlCnPIb (4 required for project - need qty 1 of link)


Dedicated Touchscreen (Not required to use the scales):

  1. 3D printed case
  2. Touchscreen - CYD (cheap yellow display): https://a.co/d/0b66eJlX (need qty 1 of link)
  3. Battery: https://a.co/d/0gQBVp9m (need qty 1 of link)
  4. Screws: (assorted screws from link above)
  5. Case Screws (if using my 3d printed case): https://a.co/d/06g1uD4m (4 required for project - need qty 1 of link)
  6. Momentary Switch (optional if you don't use the sleep function): (1 required for project - from five pack ordered above)


Docking Station (Not required to use the scales):

  1. 3D printed docking station
  2. Female USB-C Connector: https://www.adafruit.com/product/6153#tutorials (need qty 1)
  3. Male USB-C Connectors: https://a.co/d/0g5q4zBS (5 required for project - need qty 1 of link)
  4. Case Screws: #4x1/2" Linked above for touchscreen (6 required for project)


Tools:

  1. Soldering Iron (and soldier)
  2. Wire Cutters
  3. Wire Strippers
  4. Heat Shrink
  5. Multimeter (for testing connections)
  6. Screwdriver
  7. 1/4x20 tap (If using my pad design)
  8. M8x0.75 tap (If using my pad design)

Print Scale Pads

20261003_111317.jpg
20261003_111324.jpg
20261003_111327.jpg
20261003_111527.jpg
20261003_111603.jpg
20261003_111937.jpg
20261003_111959.jpg

3D Printing

Print the following parts:

  1. 1 × Front Left (FL) top pad
  2. 1 × Front Right (FR) top pad
  3. 1 × Rear Left (RL) top pad
  4. 1 × Rear Right (RR) top pad
  5. 4 × bottom pads


All of the files required for this project can be found here: https://drive.google.com/drive/folders/1szjxl53Nsz94QvEfXbWfN-7HOwVxadqa?usp=sharing

The scale pads in this project are printed from PETG. ASA should also work well.

After printing, remove any supports and print debris from the load-cell mounting areas. Make sure these surfaces are clean and free of obstructions before assembling the scales.

Tapping the Holes

  1. Power switch hole: Use an M8 × 0.75 tap.
  2. Two center mounting holes: Use a 1/4-20 tap.

Go slowly when tapping PETG. Excessive heat can soften or melt the plastic. Take extra care not to tap too deeply into the 1/4-20 holes.

Install the Load Cells

20261003_134746 - Copy.jpg
20261003_134824 - Copy.jpg
20261003_134843 - Copy.jpg
20261003_134856 - Copy.jpg
20261003_135040 - Copy.jpg

Each scale pad uses four 50 kg load cells.

Install one load cell at each corner of the scale pad. The load cells should slide until fully seated in their mounting pockets.

I found it easiest to start each load cell by hand and then gently push it into its final position using the tip of a pair of pliers.


⚠️ Do not force the load cells into position.

They should seat firmly without bending or damaging the load-cell body.

Wire Up the Load Cells

20261003_135619.jpg
20261003_135907.jpg
Wire Routing.png
20261003_140319.jpg
20261003_140603.jpg
20261003_141236.jpg
20261003_141504.jpg

Route the load-cell wires through the routing holes in the scale pad, as shown in the accompanying photo. Trim the wires to the required length, leaving enough slack to make the connections comfortably.

Each load cell used in this project has three wires: red, white, and black.

  1. White and black wires: Connect the load cells to one another.
  2. Red wires: Connect the load cells to the HX711 amplifier.

Important: These wire colors correspond to the load cells used in this project. If you use load cells from a different manufacturer, do not assume the wire colors have the same meaning. Verify the wiring for your specific load cells before making any connections.

1. Connect the White and Black Wires

The four load cells are wired together in a square pattern.

Using the orientation shown in the photo:

  1. Connect the black wires of the two top load cells together.
  2. Connect the black wires of the two bottom load cells together.
  3. Connect the white wires of the two load cells on the left side together.
  4. Connect the white wires of the two load cells on the right side together.

This is the wiring arrangement I used. The white and black connections can also be arranged in the opposite directions: white wires connected across the top and bottom, and black wires connected across the left and right sides.

2. Group the Red Signal Wires

The red wires connect to the HX711 amplifier. The key is to keep the wires from diagonally opposite load cells paired together.

  1. Pair 1: Top-left and bottom-right load cells.
  2. Pair 2: Top-right and bottom-left load cells.

Each diagonal pair will connect to one of the HX711's two connection pairs:

  1. One diagonal pair connects to E+ and E−.
  2. The other diagonal pair connects to A+ and A−.

Either diagonal pair can be assigned to either connection pair. Keep the two wires from each diagonal pair together when preparing the connections.

3. Solder the Connections

If you are using a four-position connector, solder the four red signal wires to the connector, keeping the two diagonal pairs together.

For soldered wire connections:

  1. Slide a piece of heat-shrink tubing over one side of each connection before soldering.
  2. Solder the corresponding wires together.
  3. Slide the heat-shrink tubing over the exposed connection.
  4. Apply heat to shrink the tubing and insulate the joint.

Repeat for each connection, ensuring that no exposed wires can touch one another.

Wire Up and Install Momentary Switch

20261003_141601.jpg
20261003_141842.jpg
20261003_141941.jpg
20261003_141952.jpg
20261003_142109.jpg

The momentary switch allows you to wake the scale after it enters deep sleep.

The switch is optional if you do not plan to use the sleep function.

Installation

  1. Prepare the switch wiring. If using connectors, solder a two-position (2-pin) connector to the switch wires and insulate the connections with heat-shrink tubing. If you are not using connectors, attach plain wires directly to the switch.
  2. Connect the wires. It does not matter which wire connects to each terminal of the momentary switch.
  3. Install the switch. Feed the wires through the hole in the side of the scale pad, then thread the switch into place.


Wire Up the HX711 and ESP32 (Build the PCB)

20261003_142210.jpg
20261003_142220.jpg
20261003_142515.jpg
20261003_142543.jpg
20261003_142748.jpg
20261003_142944.jpg
20261003_143108.jpg
20261003_143154.jpg
20261003_143536.jpg
20261003_143848.jpg
20261003_144121.jpg
20261003_144214.jpg
20261003_144241.jpg
20261003_144257.jpg
20261003_144537.jpg
20261003_144541.jpg
20261003_144552.jpg
20261003_144611.jpg
20261003_144638.jpg
20261003_144827.jpg
20261003_144859.jpg
20261003_144945.jpg
20261003_145004.jpg
20261003_145059.jpg
20261003_145124.jpg
20261003_145137.jpg
20261003_145150.jpg
20261003_145231.jpg
20261003_145249.jpg
20261003_145345.jpg
20261009_110943.jpg
20261009_110949.jpg

PCB Mounting Instructions

The custom PCB is optional. You can also connect the HX711 and ESP32 using conventional wires, as described in the Wiring Without the PCB section at the end of this step.

I have provided two versions of the 3D-printed top pad: one designed to accommodate the PCB and another designed to hold the individual HX711 and ESP32 boards. The last few photos show a scale built without the PCB.

Each scale pad can also be powered through the ESP32's USB-C port. This means you can use a small USB power bank, like the kind used to charge a phone, instead of installing a dedicated rechargeable lithium-ion battery.

5.1 Install the XIAO ESP32

The battery terminals are located on the underside of the XIAO ESP32. The PCB has large vias (plated through-holes) at these locations to allow the battery terminals to be soldered to the board.

I found it difficult to position the ESP32 and make these solder connections directly. Instead, I soldered short pieces of bare wire to the battery terminal pads on the ESP32, then fed the wires through the PCB vias. This made it much easier to solder the battery connections.

Mounting the ESP32

  1. Prepare the battery terminal wires. Solder short pieces of bare wire to the battery terminal pads on the underside of the ESP32. Bend the wires upward, away from the board, so they can pass through the PCB.
  2. Position the ESP32. Feed the wires through the corresponding PCB vias and position the ESP32 flat against the PCB in the correct orientation.
  3. Secure the ESP32. Solder one of the outer ESP32 terminals to the PCB to hold the board in position.
  4. Solder the battery terminals. Carefully flip the assembly over and solder the battery terminal wires to the PCB. Make sure the ESP32 remains flat against the PCB. Excess solder on the battery terminals can prevent the board from sitting flat.

Test the Battery Connections

Before completing the remaining soldering, test the battery connections to make sure there are no shorts.

  1. Check for shorts. With no battery connected, set your multimeter to continuity mode and test between the positive and negative battery connections. There should be no short between them. If the meter indicates a short, inspect the connections and correct the problem before proceeding.
  2. Install the battery connector. Solder the two-position (2-pin) battery connector to the PCB.
  3. Check for shorts again. Repeat the continuity test between the positive and negative battery connections. Correct any problems before connecting a battery.
  4. Connect the battery. Attach the appropriate connector to the battery wires if necessary. Verify the battery polarity against the PCB markings and wiring diagram before plugging it in.
  5. Check the voltage. With the battery connected, use your multimeter to measure the voltage between the ESP32's 3V3 pin and GND. You should measure approximately 3.3 V. If you do not, check the battery connection, solder joints, and other connections before proceeding. Refer to the photos for the correct probe locations.

Important: Disconnect the battery before performing any additional soldering or making wiring changes.

Finish Soldering the ESP32

Once the battery connections have been tested successfully, finish soldering the ESP32's edge terminals to the PCB.

You can solder all the terminals, but only those connected to PCB traces are electrically required. Soldering the remaining terminals can provide additional mechanical support.

5.2 Install the HX711

Mount the HX711 amplifier on the PCB using header pins.

  1. Insert the header pins through the PCB from the bottom, as shown in the photos.
  2. Position the HX711 over the pins on the top side of the PCB.
  3. Solder the pins to the HX711.
  4. Flip the board over and gently remove the plastic spacer from the header pins. The spacer should pull off easily with pliers, working gradually from one end to the other.
  5. Solder the pins on the underside of the PCB.
  6. Use side cutters to trim any excess pin length.

5.3 Install the Battery Voltage Divider (Optional)

Battery percentage monitoring is optional. The scale will function normally without the two resistors.

The two 100 kΩ resistors form a voltage divider that allows the ESP32 to measure the battery voltage through D0 (GPIO1) and estimate the remaining battery charge.

Installation

  1. Bend the resistor leads as needed to fit through the corresponding PCB holes.
  2. Insert the resistors into the PCB. Their orientation does not matter.
  3. Flip the PCB over and solder the resistor leads in place.
  4. Trim the excess lead length.



Wiring Without the PCB

If you choose not to use the custom PCB, connect the components using the following wiring references.

HX711 to ESP32

Connect each HX711 pin to the corresponding XIAO ESP32 pin:

  1. HX711 GND → ESP32 GND
  2. HX711 DT → ESP32 D3
  3. HX711 SCK → ESP32 D4
  4. HX711 VCC → ESP32 3V3

Momentary Switch to ESP32

  1. Switch terminal 1 → ESP32 GND
  2. Switch terminal 2 → ESP32 D1

The two switch wires can be connected to either terminal; polarity does not matter.

Load Cells to HX711

Keep the red signal wires from the four load cells grouped into the two diagonal pairs described in the previous step.

  1. Diagonal pair 1 (top-left and bottom-right) → HX711 E+ and E−
  2. Diagonal pair 2 (top-right and bottom-left) → HX711 A+ and A−

Either diagonal pair can be assigned to either connection pair. Within each pair, either wire can be connected to either terminal, provided the wiring arrangement matches the load-cell configuration used in this project.

Battery to ESP32

  1. Battery positive (+) → ESP32 BAT+ terminal (underside of board)
  2. Battery negative (−) → ESP32 BAT− terminal (underside of board)

Important: Verify the battery polarity before connecting it. Reversing the battery connections can damage the electronics.

Optional Battery Voltage Divider

Battery percentage monitoring is optional. The two 100 kΩ resistors form a voltage divider that allows the ESP32 to measure battery voltage through D0 (GPIO1).

Connect the resistors as follows:

Battery positive (+) → 100 kΩ resistor → D0 / GPIO1

D0 / GPIO1 → 100 kΩ resistor → GND (or Battery negative)

The two resistors form a voltage divider, reducing the battery voltage by approximately half before it reaches the ESP32 input. The firmware uses this measurement to estimate the remaining battery charge.

The scale will function normally without these resistors.

Install the PCB Into the Scale Pad

20261003_150858.jpg
20261003_151014.jpg
20261003_151202.jpg
20261003_151235.jpg
20261003_150832.jpg
20261003_150841.jpg
20261003_150854.jpg
  1. Angle the PCB into position. Tilt the PCB as you insert it into the scale pad, aligning the ESP32's USB-C port with the oval opening in the side of the pad.
  2. Seat the PCB. Slide the PCB into place, then press down on the back edge until it is fully seated.
  3. Secure the PCB. Install three (3) M3 × 5 mm or M3 × 6 mm screws through the PCB mounting holes to hold the board in place.
  4. Secure the HX711. Install two (2) M2.3 × 8 mm screws through the HX711 mounting holes.

Install Battery and ESP32 Antenna

20261003_151803.jpg
20261003_151902.jpg
20261003_152150.jpg
20261003_152241.jpg
20261003_152325.jpg

Install the Battery and ESP32 Antenna

Note: Each scale pad can also be powered through the ESP32's USB-C port. You can use a small USB power bank, like the kind used to charge a phone, instead of installing a dedicated rechargeable lithium-ion battery.

Battery Installation

  1. Prepare the battery connector. Solder the correct two-position (2-pin) connector to the battery leads. Verify the polarity before connecting it, ensuring the positive lead goes into the outer terminal of the connector on the PCB, as shown in the photos.
  2. Secure the battery. Use hot glue to secure the battery in the center of the scale pad.
  3. Connect the components. Plug in all connectors as shown in the photos. Check that each connector is fully seated and correctly oriented.
  4. Connect the ESP32 antenna. Position the antenna connector over the ESP32's antenna socket at a slight angle, then gently press it into place until it snaps securely onto the socket.
  5. Secure the antenna. Remove the paper backing from the antenna's adhesive and attach the antenna to the scale pad as shown in the photos.


Prepare Bottom Pad and Assemble Scale

20261003_134320.jpg
20261003_152416.jpg
20261003_152423.jpg
20261003_152428.jpg
20261003_152507.jpg
20261003_152556.jpg

Install the Metal Bearing Pads and Assemble the Scale

  1. Install the metal bearing pads. Attach the metal bearing pads to the bottom scale pad using the appropriate screws.
  2. Position the bottom pad. Flip the bottom pad over and place it on top of the upper pad, as shown in the photos.
  3. Fasten the two halves together. Install two (2) 1/4" × 1" countersunk machine screws through the two mounting holes to secure the scale pad assembly.

⚠️ IMPORTANT: DO NOT OVERTIGHTEN THE PAD SCREWS

The two halves of the scale pad must be able to move slightly relative to one another so the load cells can respond properly to the applied weight.

After tightening the screws, the lower pad should still be able to lift slightly away from the upper pad.

If the screws are overtightened, they can clamp the two halves together and introduce mechanical forces that interfere with the load cells, resulting in incorrect weight readings.

Repeat for All Four Scale Pads

Build all four scale pads using the same procedure.

  1. Front Left (FL) — Parent: Install the XIAO ESP32-S3 board.
  2. Front Right (FR) — Child: Install a XIAO ESP32-C3 board.
  3. Rear Left (RL) — Child: Install a XIAO ESP32-C3 board.
  4. Rear Right (RR) — Child: Install a XIAO ESP32-C3 board.


Build the Touchscreen (Optional)

20261004_125048.jpg
20261004_125108.jpg
20261004_125252.jpg
20261004_125820.jpg
20261004_125926.jpg
20261004_125952.jpg
20261004_130638.jpg
20261004_130651.jpg
20261006_215657.jpg

Assemble the Touchscreen

1. Print and Prepare the Case

3D-print the front and back sections of the touchscreen case.

Use an M8 × 0.75 tap to thread the round switch mounting hole.

2. Install the Touchscreen

  1. Remove the protective film from the touchscreen.
  2. Place the touchscreen into the front section of the case, aligning its USB port with the USB opening on the side of the case.
  3. Secure the touchscreen using four (4) M2.6 × 6 mm screws.

3. Wire and Install the Momentary Switch

  1. Solder the momentary switch to the included wiring harness.
  2. Connect one switch wire to the black wire and the other switch wire to the green wire.
  3. Feed the switch wiring through the mounting hole. You may need to turn the connector sideways to fit it through the opening.
  4. Thread the switch into the mounting hole and secure it in place.
  5. Plug the connector into the touchscreen's I2C connection.

4. Install the Battery

  1. Place the battery inside the case and secure it with hot glue.
  2. Plug the battery into the battery connector on the touchscreen.

If you purchased the battery linked in the parts list, its connector should be compatible. Otherwise, you may need to install a two-pin, 1.25 mm-pitch MX connector on the battery to match the touchscreen's battery connection.

5. Install the Back Cover

Position the back cover so that the small cutout on one side aligns with the switch location.

Secure the back cover using four (4) #4 × 1/2" screws.

Flash Firmware to the Scale Pads (and Touchscreen)

20261003_153036.jpg
Arduino IDE Download.png
Arduino IDE - Children 01.png

This step explains how to install the firmware on the scale pads and optional touchscreen using Arduino IDE. You will also configure each Child scale with its correct ID and assign a System ID if you plan to use multiple sets of scales.

10.1 Install Arduino IDE

Download and install Arduino IDE on your computer using the official instructions:

https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE

Once installed, open Arduino IDE and connect your first scale pad to your computer using a USB cable. I recommend starting with the Front Left (FL) Parent scale.

Important: Make sure your USB cable supports data transfer, not just charging.

10.2 One-Time Software Setup

Complete the following steps to configure Arduino IDE. Most of these steps only need to be performed once on your computer.

Install the Required Libraries

  1. Open Arduino IDE.
  2. Navigate to Tools → Manage Libraries.
  3. Search for HX711 bogde and install HX711 Arduino Library by Bogdan Necula.
  4. If you are also building the touchscreen, search for XPT2046_Touchscreen and install XPT2046_Touchscreen by Paul Stoffregen.

The touchscreen library is only required for the touchscreen firmware.

Install ESP32 Board Support

  1. Navigate to File → Preferences.
  2. Under the Settings tab, locate the field labeled Additional Boards Manager URLs.
  3. Paste the following URL into that field (without quotation marks):

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

  1. Click OK to save your settings.
  2. Navigate to Tools → Board → Boards Manager.
  3. Search for esp32 and install esp32 by Espressif Systems.

Your computer is now configured to compile and upload firmware for the ESP32 boards.

10.3 Open the Correct Firmware

Open the appropriate firmware file for the device you are programming.

Front Left (FL) Parent — XIAO ESP32-S3

soap_box_scales_parent_xiao_esp32s3_v4.2.5.ino

Front Right (FR), Rear Left (RL), or Rear Right (RR) Child — XIAO ESP32-C3

soap_box_scales_children_xiao_esp32c3_v3.0.3.ino

Touchscreen — CYD

soap_box_scales_touchscreen_v3.0.14.ino

Required Supporting Files

When you open a firmware file, Arduino IDE may prompt you to place it inside a folder with the same name as the sketch. Accept the prompt.

The Parent and Child firmware also require supporting header files. Make sure the appropriate files are in the same folder as their corresponding .ino file.

  1. Parent firmware: ScalePadTypes_v3.0.0.h and ScaleProtocol_v3.0.0.h
  2. Child firmware: ScaleProtocol_v3.0.0.h
  3. Touchscreen firmware: No additional header files are required.

Keep the supporting files with the firmware that uses them. If Arduino IDE reports that a header file cannot be found, check that it is in the correct folder.

10.4 Configure Arduino IDE for the Device

With the firmware open and the device connected, select the appropriate settings.

Select the COM Port

  1. Navigate to Tools → Port.
  2. Select the COM port corresponding to your connected device.

If multiple ports are listed and you are unsure which one belongs to your scale, unplug the USB cable and note which port disappears. Plug the scale back in and select that port.

Select the Board

Navigate to Tools → Board → esp32 and select the appropriate board:

  1. Parent scale (XIAO ESP32-S3): XIAO_ESP32S3
  2. Child scales (XIAO ESP32-C3): XIAO_ESP32C3
  3. Touchscreen (CYD): ESP32 Dev Module

Select the Upload Speed

Navigate to Tools → Upload Speed and select 115200.

10.5 Compile and Upload the Firmware

  1. Click the Verify button (the checkmark near the top of Arduino IDE) to compile the firmware.
  2. Wait for compilation to finish. If errors appear, resolve them before continuing.
  3. Once compilation succeeds, click the Upload button (the right-pointing arrow).
  4. Wait for the firmware to compile and upload to the device. Arduino IDE will indicate when the process is complete.

Check the Serial Monitor

After uploading the firmware:

  1. Open the Serial Monitor in Arduino IDE. In Arduino IDE 2, you can usually open it using the Serial Monitor button near the top-right corner.
  2. Set the baud rate to 115200 if it is not already selected.
  3. Check that information begins appearing in the monitor.

The Serial Monitor will also be used to configure the Child pad IDs and System ID in the following sections.

10.6 Configure the Child Scale Pad IDs

Each Child scale must be assigned its correct position so the Parent knows which wheel it represents.

Flash the Child firmware to each of the three Child scales. With the scale connected to your computer and the Serial Monitor open at 115200 baud, enter the appropriate command and press Enter.

Front Right scale:

ID FR

Rear Left scale:

ID RL

Rear Right scale:

ID RR

Make sure you send the correct command to each physical scale pad. Once assigned, the Child should connect to its Parent automatically, provided the Parent is powered on and both devices are configured with the same System ID.

10.7 Assign a System ID

If you plan to use multiple sets of scales in the same area, assign each set a unique System ID to keep the systems separate.

All four scale pads in a set must use the same System ID to communicate with one another.

Set the System ID

  1. Connect a scale pad to your computer using USB.
  2. Open Arduino IDE and launch the Serial Monitor.
  3. Set the baud rate to 115200 if necessary.
  4. Enter the command below and press Enter:

System 2

In this example, 2 is the System ID. You can use any number from 1 to 999.

Repeat this process for all four scale pads, using the same number for every pad in the set.

The default System ID is 1 unless it has been changed.

Once all four pads have been configured with matching System IDs and their correct pad IDs, they should find one another automatically when powered on.

Connect the Touchscreen to a Scale System

The touchscreen can be used to select between different scale systems without reprogramming the touchscreen firmware.

  1. Open Settings on the touchscreen.
  2. Select Wi-Fi Settings.
  3. Select Change System.
  4. The touchscreen will scan for available scale systems in the area. The Parent scale must be powered on to be discovered.
  5. Select the system you want to connect to.

The touchscreen will connect to the selected system and remember its most recent connection. It will default to that system the next time it is used.

Connect to Your New Scales

Once the firmware is installed and the scale pads are powered on, you can connect to your scales using the optional touchscreen or a phone, tablet, or computer.

The touchscreen should connect automatically to the Parent scale using its last-selected system. If you changed the System ID during setup, you may need to select the correct system on the touchscreen.

To do this, open Settings → Wi-Fi Settings → Change System, then select the system you want to connect to.

11.1 Connect Directly to the Parent's Wi-Fi Network

To access the scales from a phone, tablet, or computer, first connect your device to the Parent scale's Wi-Fi network.

  1. Open the Wi-Fi settings on your device and scan for available networks.
  2. Look for a network named Soap_Box_Scales_001. The last three digits correspond to the System ID assigned to your scales. For example, System ID 2 uses Soap_Box_Scales_002.
  3. Select the network and connect. If prompted for a password, enter:
  4. 12345678
  5. If your device warns you that the network has no internet access, choose the option to stay connected or connect anyway.
  6. Open a web browser and enter one of the following addresses in the address bar:
  7. http://192.168.4.1
  8. http://sbs-001.local (replace 001 with your System ID, using three digits; for example, System ID 2 uses http://sbs-002.local).

The scale's webpage should open, allowing you to view the measurements and access the available controls.

11.2 Connect the Scales to an Existing Wi-Fi Network (Optional)

You can also configure the Parent scale to connect to an existing Wi-Fi network. This allows other devices on the same local network to access the scales without connecting directly to the Parent's Wi-Fi network.

First, connect directly to the Parent's Wi-Fi network as described above. Then:

  1. Open the scale webpage or use the touchscreen (if using the touchscreen there is no need to connect to the parent wi-fi with a different device).
  2. Navigate to Settings → Wi-Fi Settings.
  3. Enter the name (SSID) and password of the Wi-Fi network you want to use.
  4. Select Save Network.

The Parent should connect to the existing network if it is available and within range.

Access the Scales Through Your Existing Network

Once the Parent has connected to your existing Wi-Fi network, connect your phone, tablet, or computer to that same network.

Open a web browser and enter the following address, replacing 001 with your three-digit System ID:

http://sbs-001.local

For example, if your System ID is 2, enter http://sbs-002.local.

The scales remember the saved Wi-Fi network and will attempt to reconnect to it when powered on. You won't need to connect directly to the Parent's Wi-Fi network each time, as long as the saved network is available and the device you're using is connected to the same local network.

  1. If you want to use a different network later, return to Settings → Wi-Fi Settings to update or forget the saved network.

Calibrate Your Scales

Calibration is required before the scales can provide meaningful weight measurements.

Each scale pad must be calibrated separately. You can perform calibration using either the touchscreen or a connected phone, tablet, or computer.

12.1 Choose a Calibration Method

Using the Touchscreen

On the touchscreen, open Settings and select either Quick Cal or Guided Cal.

Quick Calibration

Quick Calibration captures three calibration points for each scale pad:

  1. Zero: Capture a reading with the scale pad unloaded.
  2. Low: Apply a known weight and capture the reading.
  3. High: Apply a second, heavier known weight and capture the reading.

For a typical Soap Box Derby car, approximately 20–30 lb for the low point and 60–80 lb for the high point work well. Choose weights that bracket the range of wheel loads you expect to measure, and use accurately known weights for the best results.

Guided Calibration

Guided Calibration uses the same three calibration points as Quick Calibration but adds extra loading and unloading checks.

During the process, you will be prompted to:

  1. Apply the calibration weight.
  2. Remove the weight.
  3. Apply the weight again.
  4. Remove the weight again.

These additional measurements help the system check for inconsistencies between loading and unloading the pad. This can help identify potential mechanical issues, such as binding or excessive friction in the assembly.

Guided Calibration takes longer than Quick Calibration, but provides additional checks to help confirm that the scale pad is behaving consistently.

12.2 Calibrate Using a Connected Device

You can also calibrate the scales from the webpage using a connected phone, tablet, or computer.

  1. Open the scale webpage.
  2. Click Calibrate.
  3. Select the scale pad you want to calibrate.
  4. Follow the prompts for Quick Calibration, or scroll down and select Guided Calibration to perform the additional checks.
  5. Repeat the process for each pad that needs calibration.

12.3 Save the Calibration

When calibration is complete for an individual pad or for all pads, click Save Calibration to save the calibration results.

  1. Make sure you save your calibration before leaving the calibration screen.

Test and Verify Your Scales

Before placing your car on the system, verify that each scale pad returns to zero when unloaded.

Next, place a known weight on one pad at a time. Verify that:

  1. The correct pad registers the added weight.
  2. The displayed weight increases in the expected direction.
  3. The other three pads remain near zero.
  4. The total weight increases by approximately the amount of the known weight.

Repeat this test for all four pads.

Once all four pads respond correctly and the readings are consistent, your system is ready for your Soap Box Derby car!

Build the Optional Docking Station

20261015_145718.jpg
20261015_145900.jpg
20261008_092903.jpg
20261015_145413.jpg
20261015_145537.jpg

14.1 3D Print the Docking Station

Print the docking station components using the following materials:

  1. Main body and cover: PETG
  2. USB mounting adapters: TPU is recommended, although PETG may also work.

14.2 Install the Wiring

  1. Install the female USB-C connector. Insert the female USB-C connector through the mounting hole in the main docking station body. Thread the nut onto the connector to secure it in place.
  2. Note: The connector linked in the parts list includes built-in resistors that allow compatible USB-C power sources to supply 5 V. If you use a different female USB-C connector without the appropriate resistors, some USB-C chargers may not supply power.
  3. Install the male USB-C connectors. Insert the male USB-C connectors into the 3D-printed mounting adapters, then press the adapters into their positions in the main docking station body.
  4. Connect the positive wires. Solder all six (6) red wires together: one from each of the five male USB-C plugs and one from the female USB-C connector. Trim the wires as needed to make a neat connection, then insulate the joint with heat-shrink tubing.
  5. Connect the ground wires. Solder all six (6) black wires together in the same way, then insulate the joint with heat-shrink tubing.
  6. Close the docking station. Tuck the excess wiring into the internal pocket, making sure no wires are pinched or strained. Install the cover and secure it with six (6) #4 × 1/2" screws.