> Source: https://www.tinkered.ai/components/hx711-module/esp32 (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/components/hx711-module/esp32. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# HX711 Load Cell Amplifier with an ESP32 DevKit V1

The HX711 board takes the ESP32 DevKit V1's 3V3, inside its 2.6 V to 5.5 V range, so its DT output swings to 3.3 V and goes straight into GPIO13, with SCK on GPIO14. Both pins stay clear of the ESP32's strapping pins and of GPIO6 to GPIO11, which belong to the module's flash.

## Wiring

| HX711 Load Cell Amplifier | ESP32 DevKit V1 | Note |
| --- | --- | --- |
| VCC | 3V3 |  |
| GND | GND |  |
| DT | GPIO13 (D13) |  |
| SCK | GPIO14 (D14) |  |

## What to know on the ESP32 DevKit V1

- SCK held high for more than 60 µs powers the HX711 down. Keep the clock pulses short and avoid long interrupt routines during a read on the ESP32, or a reading can come back corrupted. (Avia HX711 datasheet V2.0, p. 5)
- On a 3.3 V supply the bridge excitation (AVDD) must stay at least 100 mV below the supply, so the load cell sees less voltage than on a 5 V board and gives less signal per gram. Calibrate the scale factor on the ESP32 itself; a factor from a 5 V Uno setup will not match. (Avia HX711 datasheet V2.0, pp. 3, 4)
- GPIO6 to GPIO11 drive the WROOM-32's flash and GPIO0, 2, 5, 12 and 15 are sampled at reset. GPIO13 and GPIO14 avoid both groups. (Espressif ESP32-WROOM-32 Datasheet v3.8, p. 10; Espressif ESP32 Series Datasheet v5.3, p. 22)

## Code

Libraries: robtillaart/HX711

```cpp
// HX711 Load Cell Amplifier on ESP32 DevKit V1: wiring and a free simulation at https://www.tinkered.ai/components/hx711-module/esp32
#include "HX711.h"

const int DT_PIN = 13;    // HX711 DT (DOUT)
const int SCK_PIN = 14;   // HX711 SCK
// counts per gram: about 430 for a 5 kg bar (2150 at 1 kg, 215 at 10 kg); calibrate with a known weight
const float CALIBRATION = 430.0;

HX711 scale;

void setup() {
  Serial.begin(9600);
  scale.begin(DT_PIN, SCK_PIN);
  Serial.println("HX711 scale");
  while (!scale.is_ready()) delay(10);   // its first reading comes 0.4 s after power-up
  scale.set_scale(CALIBRATION);
  scale.tare(10);                        // the empty scale's zero, averaged
  Serial.println("Tared: put a weight on it");
}

void loop() {
  if (scale.is_ready()) {
    float grams = scale.get_units(5);    // the average of 5 readings, tared and scaled
    Serial.print("Weight: ");
    Serial.print(grams, 1);
    Serial.println(" g");
  }
  delay(500);
}
```

Compiled for esp32:esp32:esp32 on 2026-10-30.

## Questions

### Can I power the HX711 from the ESP32's 3V3 pin?

Yes. It runs from 2.6 V to 5.5 V and draws under 1.5 mA (Avia datasheet, p. 1). On 3V3, DT's high is 3.3 V, safe for the ESP32.

### Why do my HX711 readings jump on the ESP32?

Average several readings with get_units(5) or more, read only when is_ready() is true, and keep SCK pulses short: SCK high past 60 µs powers the chip down (Avia datasheet, p. 5).

## More

- [HX711 Load Cell Amplifier reference](https://www.tinkered.ai/components/hx711-module.md): pinout, specs, rules and common mistakes

## Try it

Tinkered simulates the HX711 Load Cell Amplifier on the ESP32 DevKit V1 in the browser, with this wiring and code, free: https://www.tinkered.ai/components/hx711-module/esp32
