Water Softener Salt Meter Using a Bathroom Scale

by omanavekar in Circuits > Sensors

376 Views, 6 Favorites, 0 Comments

Water Softener Salt Meter Using a Bathroom Scale

Monitor_Use_2.jpeg
SaltScale_Full_Use.jpeg

If you have a water softener at home, you know how important it is to keep the brine tank filled with salt. The problem? It’s easy to forget to check. More than once, I’ve gone weeks with an empty tank, which means hard water creeping back into the plumbing, spots on dishes, and extra wear on appliances.

To solve this, I built a simple monitor that shows me exactly how much salt is left. The "repair" is straightforward: take an old bathroom scale, connect its load cells to an HX711 amplifier, and use an ESP32 microcontroller with a small display to show the tank’s weight. When the salt gets low, a buzzer reminds me to refill.

Since it runs on an ESP32, it can be upgraded with wireless capabilities in the future!

Supplies

Electronics:

  1. Standard bathroom scale (I got one for $3 at a thrift store)
  2. ESP32
  3. HX711 amplifier
  4. SSD1306 0.96" OLED
  5. Digital light dependent resistor module (preferably with a LM393 op amp)
  6. Buzzer
  7. Pushbutton switch
  8. DC barrel jack (optional, makes connecting the scale to the power supply easier
  9. 6-wire cable (I found using an ethernet cable works great!)
  10. 2 30mm M4 Bolts
  11. Small screws (for mounting electronics)
  12. Misc wire/connectors (JST male/female connectors will come in handy if you have them!)
  13. 15mm wide coin-type magnet (for mounting to wall/resin tank)
  14. 5V Power source/wall wart.

Tools:

  1. Soldering iron and solder
  2. Multimeter
  3. 3D Printer
  4. Hot glue or epoxy
  5. Screwdriver
  6. Pliers
  7. Wire cutters

Project Architecture

SaltScale_Basic_Diagram.JPG
SaltScale_System_Diagram.JPG

Before we get started let's go over the components of the system and my design decisions. The setup has two components: Scale and Monitor

Scale: This part sits under the softener's brine tank and periodically weighs the salt present. I chose to use a bathroom scale because it is cheap, rugged, and non-intrusive to the softener tanks. The power input will be built into the scale as it is low to the ground (avoids long power wires going into the monitor). The HX711 amplifier will be placed inside this to prevent sensitive analog signals traveling long cable runs.

Monitor: This part contains the ESP32 processor, OLED display and peripheral components. It will be magnetically attached to the resin tank or mounted to a wall. It gets power and HX711 data from the scale via a cable harness. On top of displaying the weight, it contains a button to recalibrate the system, a buzzer to warn people when salt is low, and a LDR to turn off the display at night/low-light conditions.

Disassemble the Scale

Scale.jpeg
Scale_Open_Back.jpeg
Scale_Control_Board.jpeg

Note: Most digital bathroom scales use four 3-wire load cells (each with a red, black, and white wire). These are half-bridge sensors, and together they form a full Wheatstone bridge. If your scale has a different setup (like 4-wire cells or a single pre-wired module), your wiring will be different.

  1. Open the scale
  2. Remove the batteries.
  3. Flip the scale over, take out all screws (check under rubber feet/stickers), and carefully separate the housing.
  4. Locate the load cells
  5. You should see four small aluminum bars, one at each corner, with three wires coming out of each (usually red, black, white).
  6. These are the only parts of the original electronics we need.
  7. Remove the stock electronics
  8. Find the main PCB that the twelve load-cell wires connect to.
  9. Cut or desolder the load-cell wires from the board.
  10. The LCD, buttons, and PCB can all be set aside for recycling.
  11. Label the load cells
  12. Mark each corner (e.g., FL, FR, RL, RR).
  13. This will make it easier to wire them into a full bridge in Step 2.
  14. Free and tidy the wiring
  15. Keep the wires as long as possible when cutting them away from the old PCB.
  16. Gather them into a single bundle and add a small knot or zip tie inside the base for strain relief.

At this point you should have:

  1. A bare bathroom scale frame with four 3-wire load cells still mounted.
  2. Twelve loose wires (3 from each corner), ready to be wired to the HX711 amplifier in the next step.

Wire the Sensors to the HX711

HX711_Wiring_Diagram.jpg
Scale_Sensor.jpeg

The HX711 is a tiny, inexpensive amplifier designed specifically for load cells. The voltage signals from the sensors are extremely small (millivolts), so the HX711 boosts and digitizes them so the ESP32 can read reliable weight values.

We’ll mount the HX711 inside the scale’s enclosure, close to the load cells, so the sensitive analog wiring is short and less noisy.

  1. Understand the load cell wires
  2. Each corner sensor only produces half of the signal, so we’ll wire them in pairs.
  3. Pair the sensors
  4. Opposite corners are paired together (e.g., front left + rear right, front right + rear left).
  5. This balances the bridge so the scale responds evenly no matter where weight is applied.
  6. Connect to HX711 (schematic provided)
  7. Double-check with your schematic before soldering.
  8. Mount the HX711 inside the scale
  9. Solder the load-cell wires to the HX711 pads.
  10. Use double-sided tape or hot glue to secure the HX711 board to the inside of the scale’s base so it doesn’t rattle around.

Create a Harness Between the Scale and Monitor

Scale_Harness_Wires.jpeg
HX711_Harness.jpeg
Scale_Assembled.jpeg

Now that the HX711 is mounted inside the scale and wired to the load cells, the next job is to connect it to the monitor. We’ll use an Ethernet cable as a durable, tidy harness to carry both power and data between the two enclosures.

To keep things simple, the DC barrel jack is mounted on the scale enclosure. Power enters the scale first, then travels up the Ethernet cable to the ESP32, and finally the ESP32 sends regulated 3.3V back down to power the HX711. This prevents messy power cables going up to the monitor.

  1. Mount the barrel jack on the scale
  2. Drill a hole in the side of the scale base and mount the DC barrel jack.
  3. This will be the single external power input for the whole system.
  4. Break out wires from the jack if needed.
  5. Prepare the Ethernet cable
  6. Cut to length (this depends on how far the scale will be from the monitor, for my case 6 feet was plenty).
  7. Strip the sleeves both ends expose 3-4". For clarity I have included my color assignments (all ethernet cables have the same color scheme).
  8. Mount the sleeve of the ethernet cable to the scale enclosure to prevent strain on the internal wires.
  9. Assign and solder the Ethernet wires
  10. Green/White: 5V (barrel jack 5V)
  11. Green: GND (barrel jack GND)
  12. Orange/White: 3.3V (HX711 VCC)
  13. Orange: GND (HX711 GND)
  14. Blue/White: Clock (HX711 SCK)
  15. Blue: Data (HX711 DT)
  16. Brown/White: Unused
  17. Brown: Unused

Important: The HX711 must run on 3.3V, so it’s powered from the ESP32 regulator, not directly from the 5V barrel jack. As a sanity check, use a multimeter to test continuity for each wire.

After this step you should have:

  1. A barrel jack on the scale enclosure for power input.
  2. An Ethernet cable carrying both power and HX711 data lines.
  3. The ESP32 now feeds regulated 3.3V back down to power the HX711.

Now that the scale electronics are complete, reattach the scale's enclosure to prevent damage to the sensors/amplifier.

Print the Monitor Enclosure

Monitor_Parts.jpeg

With the scale wired up and the Ethernet cable carrying both power and data lines, the next step is to build the monitor unit. This is where the ESP32, OLED display, and buzzer live. This module not only shows the salt level locally but also provides room for future wireless upgrades like Telegram alerts.

Print the attached STL files. We will use the electronics mount part in the next step.

Assemble the Monitor Electronics

Wiring_Diagram.jpg
Monitor_Electronics_Front.jpeg
Monitor_Electronics_Back.jpeg

This step is the most complex. Make sure the follow the attached schematic and check for continuity when needed. The easiest way to do this is to run breakout wires from each module before mounting. Then, each module can be mounted and their connections soldered to the ESP32. Below are the connections for each module:

  1. OLED:
  2. VCC → GPIO19
  3. GND → GND
  4. SDA → GPIO21 (default I²C pin)
  5. SCL → GPIO22 (default I²C pin)
  6. Buzzer:
  7. + → GPIO27
  8. - → GND
  9. Button:
  10. + → GPIO26
  11. - → GND
  12. LDR Module (breakout the actual sensor and mount on the top as shown):
  13. VCC → GPIO33
  14. GND → GND
  15. AO→ GPIO35 (optional, not used)
  16. DO→ GPIO34

Once done you should have:

  1. A partially assembled monitor.
  2. ESP connected to the buzzer, button, OLED and LDR module.

Wire Scale Harness to Monitor

Monitor_Wired_Harness.jpeg

To make things more modular, I added JST connectors between the Ethernet cable harness and the ESP32. While not required, this will make servicing/modification significantly easier. Wire the harness as shown:

  1. Green/White → VIN
  2. Green → GND
  3. Orange/White → 3V3
  4. Orange → GND
  5. Blue/White→ GPIO13
  6. Blue: → GPIO12
  7. Brown/White → Unused
  8. Brown → Unused

Again, make sure to use a multimeter to check all connections.

Assemble Monitor Shell

Monitor_Electronics_Shell.jpeg

Now that the electronics are wired and tested, it’s time to bring everything together into a sturdy, finished enclosure.

  1. Glue the Magnets
  2. Take the rear shell of the monitor enclosure.
  3. Using superglue or epoxy, securely attach the magnets into their designated recesses (make sure they are oriented correctly!).
  4. These magnets will allow the monitor module to easily attach to the softener's resin tank without screws or tape.
  5. Allow the glue to fully cure before proceeding.
  6. Install the Electronics Mount
  7. Place the electronics mount (the 3D-printed plate or bracket holding the ESP32, OLED, buzzer, etc.) into the front shell.
  8. Carefully orient it so the OLED screen aligns with the window and confirm the LDR peeks through the small hole at the top of the shell.
  9. Double-check that all wiring is tucked neatly inside without being pinched.
  10. Close the Enclosure
  11. Align the rear shell with the front shell, using the large cutout for the harness.
  12. Insert the M4 bolts into the mounting holes and tighten gently until snug. Do not overtighten, as this may crack the plastic.

At this point, the monitor module is fully assembled and ready for installation on the brine tank. Place the monitor and scale by your water softener, but don't place the brine tank on the scale yet! We will flash the code and calibrate the scale in the next step.

Flash Firmware and Calibrate

Calibration.jpeg
Scale Calibration.jpeg

Why Calibration is Important

Each load cell (the small sensor inside the scale feet) has slight variations from manufacturing. Calibration ensures the ESP32 knows how to translate the sensor signals into accurate pounds of salt in your tank. Without calibration, the readings may be off by several pounds.

About the Calibration Weight

The firmware expects a 10lb weight during calibration (I used a dumbbell). If you don’t have a 10lb weight, you can:

  1. Use another object with a known, fixed weight (e.g., 5lb, 20lb, or even a bag of rice/flour).
  2. In that case, you’ll need to adjust the calibration constant in the firmware code before flashing, so the ESP32 knows what weight you’re using.

Calibration Procedure

  1. Flash the Firmware
  2. Connect a USB cable to the underside of the monitor module and plug it into your computer.
  3. Flash the provided firmware (SaltScale_V2.ino) to the ESP32.
  4. Leave the 5V barrel jack unplugged during this step.
  5. Power Up the System
  6. Once flashing is complete, unplug the USB cable.
  7. Plug in the 5V barrel jack to power the system normally.
  8. Enter Calibration Mode
  9. Using a toothpick or pin, press and hold the recessed button on the monitor for 5 seconds.
  10. The OLED screen will guide you through the calibration process.
  11. Calibrate the Scale
  12. Ensure the scale is on the same flat, stable surface where the softener tank will sit, with nothing on top.
  13. Follow the on-screen prompts.
  14. When prompted, place your 10lb calibration weight (or alternate known weight).
  15. Verify that the display reads the correct weight.
  16. Finalize Calibration and Mounting
  17. Remove the calibration weight.
  18. Place your brine tank on the scale.
  19. Magnetically attach the monitor to the resin tank (or mount at eye-level as desired).
  20. Calibration is complete! The system is now ready for real-world use.

Troubleshooting

  1. If the reading for the calibration weight is not accurate, repeat the routine.
  2. Ensure the scale is on a level surface with no vibrations.
  3. If results vary widely, double-check that all 4 sensors are wired securely.

Downloads

General Usage

Monitor_Use.jpeg

The water softener salt scale is now ready to use! Here’s what to expect during operation:

  1. Weight Display
  2. The monitor will continuously show the weight of your brine tank in pounds.
  3. This lets you easily track how much salt remains without opening the tank.
  4. Automatic Display Power Saving
  5. In low light conditions, the monitor will automatically turn off the OLED display.
  6. This prevents screen burn-in and saves power.
  7. The display will turn back on automatically when light is detected.
  8. Low-Salt Alert
  9. If the measured weight drops below 25 lbs, the system will issue a brief beep every minute (similar to a smoke detector chirp).
  10. This is your reminder to add salt before your water softener runs out.
  11. Recalibration Button
  12. The small button on the back of the monitor can be pressed and held to re-run the calibration routine.
  13. Important: The brine tank must be removed from the scale during recalibration. Otherwise, the readings will be incorrect.

With these features, your system will automatically keep you informed about your water softener’s salt level, helping you avoid unexpected soft water downtime.

I hope you liked this project! Don't forget to vote for it in the Home Repairs Contest!