#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Constants
#define DHTPIN 2 // Pin connected to DHT22 data pin
#define DHTTYPE DHT22 // DHT sensor type
#define I2C_ADDR 0x27 // I2C address for the LCD display
#define LCD_COLS 16 // Number of LCD columns
#define LCD_ROWS 2 // Number of LCD rows
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Initialize LCD display
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLS, LCD_ROWS);
// Blynk authentication token
char auth[] = "wjxFvIQevcuEhuYSSECQZqhnRxbU7YWl";
// WiFi credentials
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
// Initialize serial communication
Serial.begin(115200);
//lcd.begin(16, 2);
// Initialize DHT sensor
dht.begin();
// Initialize LCD display
lcd.begin(LCD_COLS, LCD_ROWS);
lcd.backlight();
lcd.clear();
lcd.print("Temp: ");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
// Connect to Wi-Fi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
// Connect to Blynk
Blynk.begin(auth, ssid, pass);
}
void loop() {
// Run Blynk
Blynk.run();
// Read temperature and humidity from DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reading failed
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Update LCD display
lcd.setCursor(6, 0);
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(10, 1);
lcd.print(humidity);
lcd.print("%");
// Print temperature and humidity to serial monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Send temperature and humidity data to Blynk
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, humidity);
delay(2000); // Wait for 2 seconds before the next reading
}