// 1. Definições de Credenciais do Blynk
#define BLYNK_TEMPLATE_ID "TMPL328239"
#define BLYNK_TEMPLATE_NAME "Balança ESP32 Wokwi"
#define BLYNK_AUTH_TOKEN "w5XleGl6qXVtNKyhTdJ_aFO3wu9r1PZo"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "HX711.h"
// Definição dos pinos
const int PINO_DT = 18;
const int PINO_SCK = 19;
const int LED_PIN = 2; // Usaremos a GPIO 2 para o LED externo
HX711 balanca;
float fator_de_calibracao = 419.83;
// Configuração de Rede do Wokwi
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Timer para enviar dados sem travar o processador
BlynkTimer timer;
// Função responsável por ler a balança e enviar para o Blynk
void processarBalanca() {
// Lê o valor bruto e aplica a escala
float peso = balanca.get_units(1);
// Mostra o valor exato no Monitor Serial
Serial.print("Leitura do Peso: ");
Serial.print(peso, 2);
Serial.println(" Kg");
// Envia o dado para o Pino Virtual V1 do Blynk
Blynk.virtualWrite(V1, peso);
// Lógica do LED Físico
if (peso >= 3.0) {
digitalWrite(LED_PIN, HIGH); // Liga o LED externo
Serial.println("🔴 LED ACESO - Limite de 3Kg atingido!");
} else {
digitalWrite(LED_PIN, LOW); // Desliga o LED
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.println("Iniciando Balança no Wokwi...");
balanca.begin(PINO_DT, PINO_SCK);
// Zera a balança no início da simulação
balanca.tare();
balanca.set_scale(fator_de_calibracao);
Serial.println("Balança pronta! Ajuste o slider do HX711.");
// Inicializa o Blynk conectado à rede virtual do Wokwi
Blynk.begin(auth, ssid, pass);
// Executa a função da balança a cada 1000 milissegundos (1 segundo)
timer.setInterval(1000L, processarBalanca);
}
void loop() {
Blynk.run();
timer.run(); // Mantém o timer funcionando perfeitamente
}