#define BLYNK_TEMPLATE_ID "TMPL6sLJat4Wr"
#define BLYNK_TEMPLATE_NAME "esp32 multisensor NUT"
#define BLYNK_AUTH_TOKEN "Fu8nUSodxdpU56-l3cJy5sTVvPz6EspA"
#include <LiquidCrystal.h>
#include <DHT.h>
#include <Ultrasonic.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define DHTPIN 21
#define DHTTYPE DHT22
#define TRIGGER_PIN 22
#define ECHO_PIN 23
#define LDR_PIN 33
#define LED_TEMP 0
#define LED_SR04 4
#define LED_LDR 16
const int pinLEDS[] = {LED_TEMP, LED_SR04, LED_LDR};
LiquidCrystal lcd(25, 26, 27, 14, 12, 13);
DHT dht(DHTPIN, DHTTYPE);
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
const char *ssid = "Wokwi-GUEST";
const char *password = "";
const char auth[] = "aVhrqByru7rZ8_zaBHC654h0_hzO0BKQ";
BlynkTimer timer;
void setup()
{
Serial.begin(115200);
lcd.begin(16, 2);
delay(2000);
pinMode(LDR_PIN, INPUT);
// Initialize LEDs
for (int i = 0; i < sizeof(pinLEDS) / sizeof(pinLEDS[0]); i++)
{
pinMode(pinLEDS[i], OUTPUT);
}
dht.begin();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// Connect to Blynk
Blynk.begin(auth, ssid, password);
}
void loop()
{
// Read data from sensors
float temp = dht.readTemperature();
float humi = dht.readHumidity();
unsigned int dist = ultrasonic.read();
int LDR = analogRead(LDR_PIN);
// sun light (contoh: 700 lux)
const int Sun_Light = 700;
// Send data temp and humi to Blynk
Blynk.virtualWrite(V0, temp);
Blynk.virtualWrite(V1, humi);
// sun value status
Blynk.virtualWrite(V3, (LDR < Sun_Light) ? "LIGHT" : "DARK");
// Update LED states based on temperature and distance
if (temp > 30)
{
digitalWrite(LED_TEMP, HIGH);
}
else
{
digitalWrite(LED_TEMP, LOW);
}
if (dist < 50)
{
digitalWrite(LED_SR04, HIGH);
}
else
{
digitalWrite(LED_SR04, LOW);
}
// Update LED state based on
if (LDR < Sun_Light)
{
digitalWrite(LED_LDR, LOW); // LED LDR DARK
}
else
{
digitalWrite(LED_LDR, HIGH); // LED LDR LIGHT
}
// Serial Monitor
Serial.print("TEMP: ");
Serial.print(temp);
Serial.print(" C, HuMi: ");
Serial.print(humi);
Serial.print(" %, Distance: ");
Serial.print(dist);
Serial.print(" cm, Ohm Value: ");
Serial.print(LDR);
Serial.print(" Ohm, Status SUN: ");
Serial.println((LDR < Sun_Light) ? "LIGHT" : "DARK");
// Clear display
lcd.clear();
// Display temp and humi on LCD
lcd.setCursor(0, 0);
lcd.print("TEMP = ");
lcd.print(temp);
lcd.print(" C, K = ");
lcd.print(humi);
lcd.print("%");
// Display dist and status on LCD
lcd.setCursor(0, 1);
lcd.print("Distance = ");
lcd.print(dist);
lcd.print(" cm, Status = ");
lcd.print((LDR < Sun_Light) ? "DARK" : "LIGHT");
// Scroll display to the left
for (int i = 0; i < 16; i++)
{
lcd.scrollDisplayLeft();
delay(300);
}
// Delay
delay(1000);
}