#define BLYNK_TEMPLATE_ID "TMPL6_0YVPGWC"
#define BLYNK_TEMPLATE_NAME "samosys"
#define BLYNK_AUTH_TOKEN "yVQSBOPhRlJlSpi4MLAFzP7t1YuiZfbN"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// WiFi credentials (Wokwi guest mode WiFi)
char ssid[] = "Wokwi-GUEST"; // Fixed WiFi name in Wokwi
char pass[] = ""; // No password in Wokwi guest mode
// Pins
#define TRIG_PIN 5
#define ECHO_PIN 18
#define RED_LED_DISTANCE 19
#define GREEN_LED_DISTANCE 21
#define TEMP_SENSOR_PIN 34
#define RED_LED_TEMP 22
#define GREEN_LED_TEMP 23
// Variables
float distance_cm;
float temperature_celsius;
// Blynk Virtual Pins
#define VIRTUAL_PIN_DISTANCE V0
#define VIRTUAL_PIN_TEMP V1
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RED_LED_DISTANCE, OUTPUT);
pinMode(GREEN_LED_DISTANCE, OUTPUT);
pinMode(RED_LED_TEMP, OUTPUT);
pinMode(GREEN_LED_TEMP, OUTPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
readSensors();
controlLEDs();
sendToBlynk();
delay(500);
}
void readSensors() {
long duration;
int temp_adc;
// Ultrasonic Sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance_cm = (duration * 0.0343) / 2;
// Temperature Sensor
temp_adc = analogRead(TEMP_SENSOR_PIN);
temperature_celsius = (temp_adc / 4095.0) * 100.0; // Simplified for demo
Serial.print("Distance: ");
Serial.print(distance_cm);
Serial.print(" cm, ");
Serial.print("Temperature: ");
Serial.print(temperature_celsius);
Serial.println(" °C");
}
void controlLEDs() {
if (distance_cm < 20) {
digitalWrite(RED_LED_DISTANCE, HIGH);
digitalWrite(GREEN_LED_DISTANCE, LOW);
} else {
digitalWrite(RED_LED_DISTANCE, LOW);
digitalWrite(GREEN_LED_DISTANCE, HIGH);
}
if (temperature_celsius > 30) {
digitalWrite(RED_LED_TEMP, HIGH);
digitalWrite(GREEN_LED_TEMP, LOW);
} else {
digitalWrite(RED_LED_TEMP, LOW);
digitalWrite(GREEN_LED_TEMP, HIGH);
}
}
void sendToBlynk() {
Blynk.virtualWrite(VIRTUAL_PIN_DISTANCE, distance_cm);
Blynk.virtualWrite(VIRTUAL_PIN_TEMP, temperature_celsius);
}