Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Project Documentation

ESP32-Based Smart Weighing Scale with HX711 and LCD Display

Image of ESP32-Based Smart Weighing Scale with HX711 and LCD Display

Circuit Documentation

Summary

The circuit in question is designed to measure weight using a Load Sensor (50kg capacity) interfaced with an HX711 Weighing Sensor Module. The data from the HX711 is processed by an ESP32-WROOM-32UE microcontroller, which also controls an LCD Display (16x4 I2C) to show the measured weight. Power management is handled by a 18650 battery in a holder, with a Rocker Switch to control the power flow. The circuit includes two resistors for potential voltage division or current limiting purposes.

Component List

Microcontroller

  • ESP32-WROOM-32UE: A powerful microcontroller with Wi-Fi and Bluetooth capabilities, featuring a wide range of GPIO pins for interfacing with various sensors and peripherals.

Sensors

  • Load Sensor - 50kg: A strain gauge-based sensor used for measuring weight up to 50 kilograms.
  • HX711 Weighing Sensor Module: A precision 24-bit analog-to-digital converter (ADC) designed for weigh scales and industrial control applications to interface directly with a bridge sensor.

Power Supply

  • 18650 in holder: A rechargeable lithium-ion battery used to power the circuit.

Display

  • LCD Display 16x4 I2C: An alphanumeric liquid crystal display capable of showing 4 lines of 16 characters each, with an I2C interface for communication with the microcontroller.

Passive Components

  • Resistor: Two resistors, each with a resistance of 200 Ohms, possibly used for current limiting or voltage division.

Switch

  • Rocker Switch: A switch to control the on/off state of the circuit.

Wiring Details

ESP32-WROOM-32UE

  • 3v3 connected to HX711 VCC and LCD Display VCC
  • GND connected to HX711 GND, LCD Display GND, and 18650 battery holder GND
  • 5V connected to one terminal of the Rocker Switch
  • 18 (SCK) connected to HX711 CK/TX
  • 19 (DOUT) connected to HX711 DO/RX
  • 22 (SCL) connected to LCD Display SCL
  • 21 (SDA) connected to LCD Display SDA

Load Sensor - 50kg

  • W connected to HX711 A-
  • R connected to HX711 E+ and one end of a 200 Ohm Resistor
  • B connected to HX711 E- and one end of another 200 Ohm Resistor

HX711 Weighing Sensor Module

  • A- connected to Load Sensor W
  • A+ connected to the other end of the 200 Ohm Resistor
  • E+ connected to Load Sensor R and one end of a 200 Ohm Resistor
  • E- connected to Load Sensor B and the other end of the 200 Ohm Resistor
  • VCC connected to ESP32 3v3
  • CK/TX connected to ESP32 18
  • DO/RX connected to ESP32 19
  • GND connected to ESP32 GND

18650 in holder

  • GND connected to ESP32 GND
  • VCC connected to the other terminal of the Rocker Switch

Rocker Switch

  • One terminal connected to 18650 battery holder VCC
  • The other terminal connected to ESP32 5V

LCD Display 16x4 I2C

  • SCL connected to ESP32 22
  • SDA connected to ESP32 21
  • VCC connected to ESP32 3v3
  • GND connected to ESP32 GND

Documented Code

ESP32-WROOM-32UE Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "HX711.h"

// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 19;
const int LOADCELL_SCK_PIN = 18;

HX711 scale;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD address to 0x27 for a 16 chars and 2 line display

void setup() {
  Serial.begin(115200);
  lcd.begin();
  lcd.backlight();
  
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(); // Adjust to this calibration factor
  scale.tare(); // Reset the scale to 0

  lcd.setCursor(0, 0);
  lcd.print("Weight:");
}

void loop() {
  if (scale.is_ready()) {
    float weight = scale.get_units(10); // Get the average of 10 readings
    Serial.print("Weight: ");
    Serial.print(weight);
    Serial.println(" kg");

    lcd.setCursor(0, 1);
    lcd.print(weight);
    lcd.print(" kg   "); // Clear any extra characters
  } else {
    Serial.println("HX711 not found.");
  }
  delay(1000);
}

This code initializes the HX711 and the LCD display. In the loop, it checks if the HX711 is ready to read the weight, takes the average of 10 readings, and then prints the weight to the serial monitor and the LCD display. If the HX711 is not found, it prints an error message to the serial monitor.