

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.
3v3 connected to HX711 VCC and LCD Display VCCGND connected to HX711 GND, LCD Display GND, and 18650 battery holder GND5V connected to one terminal of the Rocker Switch18 (SCK) connected to HX711 CK/TX19 (DOUT) connected to HX711 DO/RX22 (SCL) connected to LCD Display SCL21 (SDA) connected to LCD Display SDAW connected to HX711 A-R connected to HX711 E+ and one end of a 200 Ohm ResistorB connected to HX711 E- and one end of another 200 Ohm ResistorA- connected to Load Sensor WA+ connected to the other end of the 200 Ohm ResistorE+ connected to Load Sensor R and one end of a 200 Ohm ResistorE- connected to Load Sensor B and the other end of the 200 Ohm ResistorVCC connected to ESP32 3v3CK/TX connected to ESP32 18DO/RX connected to ESP32 19GND connected to ESP32 GNDGND connected to ESP32 GNDVCC connected to the other terminal of the Rocker SwitchVCC5VSCL connected to ESP32 22SDA connected to ESP32 21VCC connected to ESP32 3v3GND connected to ESP32 GND#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.