#define BLYNK_TEMPLATE_ID "TMPL3GUyEKUcO"
#define BLYNK_TEMPLATE_NAME "Smart bulb"
#define BLYNK_AUTH_TOKEN "_dhqS67biKgrCSNkBBW6T1lbEX-sVyFx"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
// Pin Definitions
#define PIR_PIN 23 // PIR motion sensor OUT pin
#define LED_PIN 22 // LED control pin
// Wokwi WiFi Network Credentials
const char* ssid = "Wokwi-GUEST"; // Wokwi network SSID
const char* password = ""; // No password required for Wokwi
void setup() {
Serial.begin(115200);
// Connect to Wi-Fi
Serial.print("Connecting to WiFi...");
WiFi.begin(ssid, password);
// Wait for connection
unsigned long startTime = millis();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
// Check for timeout (10 seconds)
if (millis() - startTime > 10000) {
Serial.println("Failed to connect to WiFi");
return; // Exit setup
}
}
Serial.println("Connected to WiFi!");
// Initialize Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, password);
Serial.println("Connecting to Blynk...");
// Wait for Blynk connection
while (!Blynk.connect()) {
Serial.print(".");
delay(1000);
}
Serial.println("Connected to Blynk!");
// Set pin modes
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW); // Turn off LED initially
}
void loop() {
Blynk.run(); // Handle Blynk connection
// Read PIR sensor value
bool motionDetected = digitalRead(PIR_PIN);
// Control LED based on motion detection
if (motionDetected) {
Serial.println("Motion Detected!");
digitalWrite(LED_PIN, HIGH); // Turn on the LED
Blynk.virtualWrite(V0, 1); // Update Blynk app (V0)
} else {
Serial.println("No Motion");
digitalWrite(LED_PIN, LOW); // Turn off the LED
Blynk.virtualWrite(V0, 0); // Update Blynk app (V0)
}
delay(1000); // Avoid excessive reading
}
// Blynk control function for LED (Virtual Pin V1)
BLYNK_WRITE(V1) {
int value = param.asInt(); // Get value from Blynk app
digitalWrite(LED_PIN, value); // Control LED from Blynk
Blynk.virtualWrite(V0, value); // Update LED status in Blynk app
}