#define BLYNK_TEMPLATE_ID "TMPL3Rxeg_6JB"
#define BLYNK_TEMPLATE_NAME "new project"
#define BLYNK_AUTH_TOKEN "z_bfrIoT1QBaZ6k1pYESe4YHbcpALvG2"
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
// Blynk Auth Token
char auth[] = "YourAuthToken";
// WiFi credentials
char ssid[] = "wokwi-GUEST";
char pass[] = "";
// Define pins
#define TRIG_PIN 18
#define ECHO_PIN 19
#define DHT_PIN 21
#define BUTTON_PIN 22
#define LED_PIN 25
#define BUZZER_PIN 26
// DHT setup
#define DHTTYPE DHT22
DHT dht(DHT_PIN, DHTTYPE);
// Variables for distance measurement
long duration;
float distance;
// Variables for temperature measurement
float temperature;
// Blynk virtual pins
#define VIRTUAL_PIN_TEMP V1
#define VIRTUAL_PIN_DIST V2
#define VIRTUAL_PIN_BRAKE V3
#define VIRTUAL_PIN_LED V4
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
// Initialize DHT sensor
dht.begin();
// Connect to WiFi and Blynk
Blynk.begin(auth, ssid, pass);
}
void loop() {
// Blynk run
Blynk.run();
// Collision detection
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
// Temperature measurement
temperature = dht.readTemperature();
// Brake status
bool brakePressed = digitalRead(BUTTON_PIN) == LOW;
// Send data to Blynk
Blynk.virtualWrite(VIRTUAL_PIN_TEMP, temperature);
Blynk.virtualWrite(VIRTUAL_PIN_DIST, distance);
Blynk.virtualWrite(VIRTUAL_PIN_BRAKE, brakePressed);
// Check safety conditions
if (distance < 20) {
digitalWrite(LED_PIN, HIGH); // Turn on LED
digitalWrite(BUZZER_PIN, HIGH); // Turn on Buzzer (Optional)
Blynk.virtualWrite(VIRTUAL_PIN_LED, 255); // Update virtual LED status in Blynk app
} else {
digitalWrite(LED_PIN, LOW); // Turn off LED
digitalWrite(BUZZER_PIN, LOW); // Turn off Buzzer
Blynk.virtualWrite(VIRTUAL_PIN_LED, 0); // Update virtual LED status in Blynk app
}
delay(1000); // Adjust as needed
}