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 VCC
GND
connected to HX711 GND
, LCD Display GND
, and 18650 battery holder GND
5V
connected to one terminal of the Rocker Switch18
(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
W
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 W
A+
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 3v3
CK/TX
connected to ESP32 18
DO/RX
connected to ESP32 19
GND
connected to ESP32 GND
GND
connected to ESP32 GND
VCC
connected to the other terminal of the Rocker SwitchVCC
5V
SCL
connected to ESP32 22
SDA
connected to ESP32 21
VCC
connected to ESP32 3v3
GND
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.