#define BLYNK_TEMPLATE_ID "TMPL6paS1z_J3"
#define BLYNK_TEMPLATE_NAME "Quickstart Template"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <BlynkSimpleEsp32.h>
// Blynk credentials
#define BLYNK_TEMPLATE_ID "TMPL6paS1z_J3"
#define BLYNK_TEMPLATE_NAME "Quickstart Template"
// LCD setup
LiquidCrystal_I2C lcd(0x27, 16, 2);
// DS18B20 setup
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Ultrasonic sensor pins
#define TRIG_PIN 5
#define ECHO_PIN 18
void setup() {
Serial.begin(115200);
Blynk.begin();
// LCD initialization
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Initializing...");
// DS18B20 initialization
sensors.begin();
// Ultrasonic sensor initialization
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
Blynk.run();
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
// Ultrasonic sensor measurement
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
// Display values on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Dist: ");
lcd.print(distance);
lcd.print(" cm");
// Send values to Blynk
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, distance);
delay(1000);
}