test — ESP32 simulation

aw

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by juannikosilvano.

Components

Sketch code

// =====================================================================
//  ESP32 Smart Water Level Monitoring (toren 175 cm / 2250 L)
//  HC-SR04 + OLED SSD1306 + LED alarm + Blynk
//  Buzzer dan BC547 sudah dilepas dari rangkaian.
//  Pin: TRIG 27, ECHO 26 (lewat 1 kOhm), LED 14 (lewat 220 Ohm),
//       OLED SDA 21 / SCL 22
// =====================================================================

// Blynk: define ini harus berada SEBELUM #include
#define BLYNK_TEMPLATE_ID "TMPL6UPCQQv2p"
#define BLYNK_TEMPLATE_NAME "ESP32 SMART WATER LEVEL MONITORING"
#define BLYNK_AUTH_TOKEN "r2CqFwH5KifiOyhlYOMvY506sK2V2RFP"   // sebaiknya buat token baru di Blynk

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// ---------- Pin ----------
#define TRIG_PIN 26
#define ECHO_PIN 27
#define LED_PIN  14

#define OLED_SDA 21
#define OLED_SCL 22
#define OLED_ADDR 0x3C
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// ---------- Parameter toren ----------
#define TANK_HEIGHT_CM 175.0     // jarak sensor ke dasar toren (saat kosong)
#define MAX_CAPACITY_L 2250.0

// ---------- Parameter sensor ----------
const float MIN_VALID_CM   = 2.0;                       // batas bawah HC-SR04
const float MAX_VALID_CM   = TANK_HEIGHT_CM + 25.0;     // lebih jauh dari ini = bukan gema dari air/dasar
const float ECHO_US_TO_CM  = 0.01715f;                  // 0,0343 cm/us dibagi 2 (pergi-pulang)
const unsigned long SENSOR_TIMEOUT_MS = 3000;           // tanpa bacaan valid selama ini = SENSOR ERROR
#define FILTER_N   5                                    // median 5 sampel
#define FILTER_MIN 3                                    // status baru dipercaya setelah 3 sampel

// ---------- Jadwal ----------
const unsigned long TRIGGER_MS       = 100;
const unsigned long OLED_MS          = 250;
const unsigned long BLYNK_SEND_MS    = 1000;
const unsigned long BLYNK_RETRY_MS   = 15000;
const unsigned long BLYNK_CONNECT_MS = 1500;

// ---------- WiFi ----------
const char WIFI_SSID[] = "TKA";
const char WIFI_PASS[] = "tka2026*#";

// ---------- Zona level air ----------
enum Zone { Z_HABIS, Z_MENIPIS, Z_AMAN, Z_SEGERA_PENUH, Z_HAMPIR_PENUH };
const char* const ZONE_TEXT[]  = { "SEGERA ISI AIR!!!", "AIR MENIPIS!", "AMAN..", "SEGERA PENUH!!!", "HAMPIR PENUH!" };
const bool        ZONE_ALARM[] = { true, true, false, false, true };
const float HYST_PCT = 1.0;      // keluar dari zona harus melewati batas sebesar ini

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// ---------- State ----------
float distanceCm = TANK_HEIGHT_CM;
float waterHeight = 0.0;
float percentage = 0.0;
float volumeLiters = 0.0;

Zone zone = Z_AMAN;
const char* statusPesan = "MEMBACA...";
bool isAlarmActive = false;
bool levelReady = false;     // sudah ada cukup sampel valid
bool sensorOK = true;
bool oledOK = false;

unsigned long lastTriggerMs = 0, lastOLEDMs = 0, lastBlynkMs = 0, lastValidMs = 0;

More projects by juannikosilvano