//// iot load controlling
#define BLYNK_TEMPLATE_ID "TMPL3SpbAubpt"
#define BLYNK_TEMPLATE_NAME "Controlling loads using Blynk IoT"
#define BLYNK_AUTH_TOKEN "vIGXwQCwV7ZpRyfJEjsB-NR_0qCXxv9k"
// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
// WiFi credentials
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
// Relay pin definitions
#define relay1_pin 25
#define relay2_pin 33
#define relay3_pin 32
#define relay4_pin 35
int relay1_state = 0;
int relay2_state = 0;
int relay3_state = 0;
int relay4_state = 0;
// Virtual pins
#define button1_vpin V0
#define button2_vpin V1
#define button3_vpin V2
#define button4_vpin V3
//------------------------------------------------------------------------------
// Called when the device connects to the Blynk Cloud
BLYNK_CONNECTED() {
Blynk.syncVirtual(button1_vpin);
Blynk.syncVirtual(button2_vpin);
Blynk.syncVirtual(button3_vpin);
Blynk.syncVirtual(button4_vpin);
}
//------------------------------------------------------------------------------
// Virtual pin handlers — triggered when toggling switches in the Blynk app
BLYNK_WRITE(button1_vpin) {
relay1_state = param.asInt();
digitalWrite(relay1_pin, relay1_state ? LOW : HIGH); // Active LOW relay
Serial.print("Relay 1: ");
Serial.println(relay1_state);
}
BLYNK_WRITE(button2_vpin) {
relay2_state = param.asInt();
digitalWrite(relay2_pin, relay2_state ? LOW : HIGH);
Serial.print("Relay 2: ");
Serial.println(relay2_state);
}
BLYNK_WRITE(button3_vpin) {
relay3_state = param.asInt();
digitalWrite(relay3_pin, relay3_state ? LOW : HIGH);
Serial.print("Relay 3: ");
Serial.println(relay3_state);
}
BLYNK_WRITE(button4_vpin) {
relay4_state = param.asInt();
digitalWrite(relay4_pin, relay4_state ? LOW : HIGH);
Serial.print("Relay 4: ");
Serial.println(relay4_state);
}
//------------------------------------------------------------------------------
// Setup
void setup() {
Serial.begin(115200);
pinMode(relay1_pin, OUTPUT);
pinMode(relay2_pin, OUTPUT);
pinMode(relay3_pin, OUTPUT);
pinMode(relay4_pin, OUTPUT);
// Turn all relays OFF at startup (active LOW)
digitalWrite(relay1_pin, HIGH);
digitalWrite(relay2_pin, HIGH);
digitalWrite(relay3_pin, HIGH);
digitalWrite(relay4_pin, HIGH);
// Connect to Blynk
Blynk.begin(auth, ssid, pass);
}
//------------------------------------------------------------------------------
// Main loop
void loop() {
Blynk.run();
timer.run();
}