This circuit is designed to measure weight using a Load Cell and process the signal through an HX711 Bridge Sensor Interface. The processed signal is then read by an ESP32 microcontroller, which also interfaces with an ENS160+AHT21 sensor to measure temperature and humidity. The ESP32 communicates with the HX711 via digital pins and with the ENS160+AHT21 sensor via I2C protocol. A Mini-360 DC-DC Step Down Buck Converter is used to step down the voltage from a 12v power supply to a lower voltage suitable for powering the components.
#include <HX711.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_AHTX0.h>
// HX711 pins
#define HX711_DOUT 12
#define HX711_SCK 13
// I2C pins for ENS160+AHT21
#define I2C_SDA 21
#define I2C_SCL 22
// Create instances
HX711 scale;
Adafruit_AHTX0 aht;
void setup() {
// Initialize Serial Monitor
Serial.begin(115200);
// Initialize HX711
scale.begin(HX711_DOUT, HX711_SCK);
Serial.println("HX711 initialized.");
// Initialize I2C for ENS160+AHT21
Wire.begin(I2C_SDA, I2C_SCL);
if (!aht.begin()) {
Serial.println("Failed to find AHT sensor!");
while (1) delay(10);
}
Serial.println("AHT sensor initialized.");
}
void loop() {
// Read weight from HX711
if (scale.is_ready()) {
long reading = scale.read();
Serial.print("HX711 reading: ");
Serial.println(reading);
} else {
Serial.println("HX711 not found.");
}
// Read temperature and humidity from AHT21
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);
Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degrees C");
Serial.print("Humidity: ");
Serial.print(humidity.relative_humidity);
Serial.println("% rH");
// Delay between readings
delay(2000);
}
This code is responsible for initializing the HX711 and ENS160+AHT21 sensors, reading data from them, and outputting the readings to the Serial Monitor. The HX711 is interfaced using digital pins D12 and D13 for data and clock, respectively. The ENS160+AHT21 sensor is interfaced using I2C with pins D21 for SDA and D22 for SCL. The code includes error handling for sensor initialization and a delay between readings to allow for stable measurements.