#define BLYNK_TEMPLATE_ID "TMPL3RgJ2-81j"
#define BLYNK_TEMPLATE_NAME "BLYNK"
#define BLYNK_AUTH_TOKEN "asNAK0lS_TO8-VNtl6OczdmItTI39p1m"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <NewPing.h>
char auth[] = "-asNAK0lS_TO8-VNtl6OczdmItTI39p1m";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define OLED_SDA_PIN 22
#define OLED_SCL_PIN 21
Adafruit_SSD1306 display(SCREEN_WIDTH,SCREEN_HEIGHT,OLED_SDA_PIN,OLED_SCL_PIN,OLED_RESET);
#define TRIGGER_PIN 17
#define ECHO_PIN 18
#define MAX_DISTANCE 400
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
#define TEMP_PIN 34
const int Buzzer = 19;
float temperature = 0;
#define V_DISTANCE V1
#define V_TEMPERATURE V2
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
pinMode(Buzzer, OUTPUT);
}
void loop() {
Blynk.run();
unsigned int distance = sonar.ping_cm();
Blynk.virtualWrite(V_DISTANCE, distance);
int sensorValue = analogRead(TEMP_PIN);
float voltage = sensorValue * (3.3 / 4095.0);
temperature = (voltage - 0.5) * 100; // Convert to Celsius
Blynk.virtualWrite(V_TEMPERATURE, temperature);
// Check for overcharge (example condition)
if (temperature > 50) {
while(temperature>50)
{// Example threshold
digitalWrite(Buzzer, HIGH);
delay(2000);
digitalWrite(Buzzer, LOW);
delay(1000);
}
} else {
digitalWrite(Buzzer, LOW);
}
// Display data on OLED
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Distance: ");
display.print(distance);
display.println(" cm");
display.print("Temp: ");
display.print(temperature);
display.println(" C");
display.display();
delay(1000);
}