#define BLYNK_TEMPLATE_ID "TMPL6WUBUlpoD"
#define BLYNK_TEMPLATE_NAME "weight sensor"
#define BLYNK_AUTH_TOKEN "svFtLaNBnS6utU_YOUOmyRWTE6Acorv5"
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h>
#include "HX711.h"
// Wi-Fi credentials
char ssid[] = "Wokwi-GUEST"; // Replace with your Wi-Fi SSID
char pass[] = ""; // Replace with your Wi-Fi password
// Pin definitions for HX711
#define DOUT 4 // HX711 data pin
#define PD_SCK 5 // HX711 clock pin
// Pin definitions for buzzer and LED
#define BUZZER 15 // Buzzer connected to pin 15
#define LED 2 // LED connected to pin 2
// HX711 object
HX711 scale;
unsigned long rawvalue, offset, calibRaw;
float calibUnits, scaleFactor;
// Virtual pins for Blynk
#define V6_PIN V6 // Virtual pin for load cell value
#define V7_PIN V7 // Virtual pin for buzzer control
unsigned long ReadCount() {
unsigned long Count = 0;
digitalWrite(DOUT, HIGH); // DOUT=1
digitalWrite(PD_SCK, LOW); // PD_SCK=0
while (digitalRead(DOUT)); // Wait for DOUT to go low (data ready)
for (byte i = 0; i < 24; i++) { // Read 24 bits
digitalWrite(PD_SCK, HIGH); // PD_SCK=1
Count = Count << 1;
digitalWrite(PD_SCK, LOW); // PD_SCK=0
if (digitalRead(DOUT)) Count++;
}
digitalWrite(PD_SCK, HIGH); // 25th pulse
Count = Count ^ 0x800000;
digitalWrite(PD_SCK, LOW); // PD_SCK=0
return Count;
}
void setup() {
// Initialize serial communication for debugging
Serial.begin(115200);
// Initialize Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // Use your Wi-Fi credentials
// Set pin modes for HX711 and other peripherals
pinMode(DOUT, INPUT);
pinMode(PD_SCK, OUTPUT);
pinMode(BUZZER, OUTPUT); // Set buzzer pin as output
pinMode(LED, OUTPUT); // Set LED pin as output
digitalWrite(BUZZER, LOW); // Ensure buzzer is off initially
digitalWrite(LED, LOW); // Ensure LED is off initially
// Tare the scale
offset = 8388608; // Raw value with no load
// Calibration
calibRaw = 8389028; // Raw value with known weight
calibUnits = 1.00; // The known weight in kg
scaleFactor = (calibRaw - offset) / calibUnits;
// Initial weight reading
rawvalue = ReadCount();
Serial.print("raw value: ");
Serial.println(rawvalue);
}
void loop() {
// Read weight from the load cell
rawvalue = ReadCount();
float weight = (rawvalue - offset) / scaleFactor;
Serial.print("Raw Value: ");
Serial.println(rawvalue);
Serial.print("Weight (Kg): ");
Serial.println(weight);
// Send the weight value to Blynk App (V6)
Blynk.virtualWrite(V6_PIN, weight);
// Buzzer and LED control based on weight
if (weight > 1.0) {
digitalWrite(BUZZER, HIGH); // Turn on buzzer
digitalWrite(LED, HIGH); // Turn on LED
Blynk.virtualWrite(V7_PIN, 1); // Send 1 to Blynk to turn on the buzzer
} else {
digitalWrite(BUZZER, LOW); // Turn off buzzer
digitalWrite(LED, LOW); // Turn off LED
Blynk.virtualWrite(V7_PIN, 0); // Send 0 to Blynk to turn off the buzzer
}
// Run Blynk tasks
Blynk.run();
delay(333); // Delay before the next loop iteration
}